Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР_22_Создание конфигурационного модуля для маг...doc
Скачиваний:
43
Добавлен:
10.11.2019
Размер:
234.5 Кб
Скачать
  1. Создайте новый отчет "Товары"

Данный отчет показывает текущую картину по товарам и оценивает дефицит товаров на указанный будущий период. Экранная форма диалога отчета должна выглядеть следующим образом:

Пользователь может ограничить выборку конкретной группой товаров. Кроме того, пользователь указывает период времени в днях, за который учитываются заказы. Это позволяет заранее определить дефицитные товары и не допустить срыва поставок.

Для реализации работы отчета вставьте следующий код в модуль формы отчета:

Процедура Сформировать()

Таб = создатьОбъект("Таблица");

Таб.ВывестиСекцию("Все<");

ИтогоДоставляетсяСумма = 0;

ИтогоЗаказаноСумма = 0;

СпрТовары = создатьОбъект("Справочник.Товары");

СпрТовары.ВыбратьЭлементы();

Пока СпрТовары.ПолучитьЭлемент()=1 Цикл

Если ВыбрГруппа.Выбран()=1 Тогда

Если СпрТовары.ПринадлежитГруппе(ВыбрГруппа)=0 Тогда

Продолжить;

КонецЕсли;

КонецЕсли;

Если СпрТовары.ЭтоГруппа()=1 Тогда

Таб.ВывестиСекцию("Группа");

Иначе

Товар = СпрТовары.ТекущийЭлемент();

Остаток = Регистр.Остатки.Остаток(Товар,"Количество");

Доставляется = Регистр.Доставка.СводныйОстаток(Товар,,,,,"Количество");

ДоставляетсяСумма = Регистр.Доставка.СводныйОстаток(Товар,,,,,"Сумма");

Заказано = 0;

ЗаказаноСумма = 0;

РегЗаказы = создатьОбъект("Регистр.Заказы");

РегЗаказы.УстановитьЗначениеФильтра("Товар",Товар);

РегЗаказы.ВыбратьИтоги();

Пока РегЗаказы.ПолучитьИтог()=1 Цикл

Если РегЗаказы.ДатаДоставки < РабочаяДата()+ДнейДляЗаказов Тогда

Заказано = Заказано + РегЗаказы.Количество;

ЗаказаноСумма = ЗаказаноСумма + РегЗаказы.Сумма;

КонецЕсли;

КонецЦикла;

Дефицит = Макс((Заказано - Доставляется) - Остаток,0);

ИтогоДоставляетсяСумма = ИтогоДоставляетсяСумма + ДоставляетсяСумма;

ИтогоЗаказаноСумма = ИтогоЗаказаноСумма + ЗаказаноСумма;

Таб.ВывестиСекцию("Товар");

КонецЕсли;

КонецЦикла;

Таб.ВывестиСекцию("Все>");

Таб.Опции(0);

Таб.Показать();

КонецПроцедуры

ДнейДляЗаказов = 100;

Пример работы отчета представлен ниже:

8