
- •Лабораторная работа №22
- •Порядок выполнения:
- •Создайте пустую папку и запустите программу 1с: Предприятие, указав путь к папке.
- •Создайте следующие справочники:
- •Создайте регистры, представленные в таблице.
- •Создайте необходимые документы.
- •Приход товара
- •Снятие заказа
- •Путевой лист
- •Отчет курьера
- •Создайте новый отчет "Товары"
Создайте новый отчет "Товары"
Данный отчет показывает текущую картину по товарам и оценивает дефицит товаров на указанный будущий период. Экранная форма диалога отчета должна выглядеть следующим образом:
Пользователь может ограничить выборку конкретной группой товаров. Кроме того, пользователь указывает период времени в днях, за который учитываются заказы. Это позволяет заранее определить дефицитные товары и не допустить срыва поставок.
Для реализации работы отчета вставьте следующий код в модуль формы отчета:
Процедура Сформировать()
Таб = создатьОбъект("Таблица");
Таб.ВывестиСекцию("Все<");
ИтогоДоставляетсяСумма = 0;
ИтогоЗаказаноСумма = 0;
СпрТовары = создатьОбъект("Справочник.Товары");
СпрТовары.ВыбратьЭлементы();
Пока СпрТовары.ПолучитьЭлемент()=1 Цикл
Если ВыбрГруппа.Выбран()=1 Тогда
Если СпрТовары.ПринадлежитГруппе(ВыбрГруппа)=0 Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
Если СпрТовары.ЭтоГруппа()=1 Тогда
Таб.ВывестиСекцию("Группа");
Иначе
Товар = СпрТовары.ТекущийЭлемент();
Остаток = Регистр.Остатки.Остаток(Товар,"Количество");
Доставляется = Регистр.Доставка.СводныйОстаток(Товар,,,,,"Количество");
ДоставляетсяСумма = Регистр.Доставка.СводныйОстаток(Товар,,,,,"Сумма");
Заказано = 0;
ЗаказаноСумма = 0;
РегЗаказы = создатьОбъект("Регистр.Заказы");
РегЗаказы.УстановитьЗначениеФильтра("Товар",Товар);
РегЗаказы.ВыбратьИтоги();
Пока РегЗаказы.ПолучитьИтог()=1 Цикл
Если РегЗаказы.ДатаДоставки < РабочаяДата()+ДнейДляЗаказов Тогда
Заказано = Заказано + РегЗаказы.Количество;
ЗаказаноСумма = ЗаказаноСумма + РегЗаказы.Сумма;
КонецЕсли;
КонецЦикла;
Дефицит = Макс((Заказано - Доставляется) - Остаток,0);
ИтогоДоставляетсяСумма = ИтогоДоставляетсяСумма + ДоставляетсяСумма;
ИтогоЗаказаноСумма = ИтогоЗаказаноСумма + ЗаказаноСумма;
Таб.ВывестиСекцию("Товар");
КонецЕсли;
КонецЦикла;
Таб.ВывестиСекцию("Все>");
Таб.Опции(0);
Таб.Показать();
КонецПроцедуры
ДнейДляЗаказов = 100;
Пример работы отчета представлен ниже: