База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как написать код отчета в 1С УТ 11.5 для анализа продаж по документу прихода? › Ответ в теме: Как написать код отчета в 1С УТ 11.5 для анализа продаж по документу прихода?
Вот пример простого отчета в 1С УТ 11.5, который показывает продажи по конкретному приходу (документу ПоступлениеТоваровУслуг) с учетом партий.
—
### 1. Параметры отчета
— Параметр: ДокументПрихода (тип: Документ.ПоступлениеТоваровУслуг)
—
### 2. Запрос (используем учет партий)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|ВЫБРАТЬ | Продажи.Регистратор КАК ДокументПродажи, | Продажи.Дата КАК ДатаПродажи, | Продажи.Номенклатура КАК Номенклатура, | Продажи.Количество КАК КоличествоПродажи, | Продажи.Сумма КАК СуммаПродажи |ИЗ | РегистрНакопления.Продажи.Товары КАК Продажи |ГДЕ | Продажи.Партия В | (ВЫБРАТЬ | Партии.Ссылка | ИЗ | Документ.ПоступлениеТоваровУслуг.Партии КАК Партии | ГДЕ | Партии.Ссылка = &ДокументПрихода) |
—
### 3. Код модуля отчета
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
&НаКлиенте Процедура ПриОткрытии() ЭлементыФормы.ДокументПрихода.Значение = Неопределено; КонецПроцедуры &НаКлиенте Процедура СформироватьОтчет(Кнопка) Если ЭлементыФормы.ДокументПрихода.Значение = Неопределено Тогда Сообщить("Выберите документ прихода."); Возврат; КонецЕсли; Параметры = Новый Структура; Параметры.Вставить("ДокументПрихода", ЭлементыФормы.ДокументПрихода.Значение); ТабДок = Новый ТабличныйДокумент; Запрос = Отчеты.ТекущийОтчет.ПолучитьЗапрос(); Запрос.УстановитьПараметр("ДокументПрихода", Параметры.ДокументПрихода); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); ТаблицаРезультат = Новый ТаблицаЗначений; ТаблицаРезультат.Колонки.Добавить("ДокументПродажи"); ТаблицаРезультат.Колонки.Добавить("ДатаПродажи", Новый ОписаниеТипов("Дата")); ТаблицаРезультат.Колонки.Добавить("Номенклатура"); ТаблицаРезультат.Колонки.Добавить("КоличествоПродажи", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15,3))); ТаблицаРезультат.Колонки.Добавить("СуммаПродажи", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15,2))); Пока Выборка.Следующий() Цикл НоваяСтрока = ТаблицаРезультат.Добавить(); НоваяСтрока.ДокументПродажи = Выборка.ДокументПродажи; НоваяСтрока.ДатаПродажи = Выборка.ДатаПродажи; НоваяСтрока.Номенклатура = Выборка.Номенклатура; НоваяСтрока.КоличествоПродажи = Выборка.КоличествоПродажи; НоваяСтрока.СуммаПродажи = Выборка.СуммаПродажи; КонецЦикла; ТабДок.Очистить(); ТабДок.ВывестиТаблицу(ТаблицаРезультат, 1, 1); ЭлементыФормы.Результат.Очистить(); ЭлементыФормы.Результат.Добавить(ТабДок); КонецПроцедуры |
—
### 4. Форма отчета
— Добавьте реквизит выбора документа «ДокументПрихода» (тип — Документ.ПоступлениеТоваровУслуг)
— Добавьте кнопку «Сформировать», которая вызывает процедуру СформироватьОтчет
— Добавьте элемент «Результат» типа ТабличныйДокумент для вывода результата
—
### Как использовать
1. Открываете отчет.
2. Выбираете конкретный документ прихода.
3. Нажимаете «Сформировать».
4. Получаете список продаж, связанных с партиями из выбранного прихода.
—
Если учет партий не ведется, то запрос и логику придется менять, связывая по номенклатуре и дате прихода.
Если нужно — могу помочь адаптировать под ваш вариант.