База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как создать отчет по номенклатуре и дате прихода в 1С с использованием СКД? › Ответ в теме: Как создать отчет по номенклатуре и дате прихода в 1С с использованием СКД?
Вот пример простого отчета по номенклатуре и дате прихода (например, по документам ПоступлениеТоваровУслуг) в виде расширения с использованием СКД.
—
### 1. Запрос для набора данных (СКД)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|ВЫБРАТЬ | Поступление.Ссылка КАК Документ, | Поступление.Дата КАК ДатаПрихода, | ПоступлениеТовары.Номенклатура КАК Номенклатура, | ПоступлениеТовары.Количество КАК Количество, | ПоступлениеТовары.Сумма КАК Сумма |ИЗ | Документ.ПоступлениеТоваровУслуг КАК Поступление | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Поступление.Товары КАК ПоступлениеТовары | ПО Поступление.Ссылка = ПоступлениеТовары.Ссылка |ГДЕ | Поступление.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания |УПОРЯДОЧИТЬ ПО | Поступление.Дата, | Номенклатура |
—
### 2. Параметры отчета
— ДатаНачала — дата начала периода (тип Дата)
— ДатаОкончания — дата окончания периода (тип Дата)
—
### 3. Настройка СКД
— Создайте новый отчет в расширении.
— В схеме компоновки данных добавьте набор данных с типом «Запрос».
— Вставьте запрос из пункта 1.
— Добавьте параметры ДатаНачала и ДатаОкончания.
— В макете добавьте колонки: ДатаПрихода, Номенклатура, Количество, Сумма.
— Настройте группировки по ДатеПрихода и Номенклатуре.
—
### 4. Модуль отчета (пример)
|
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
&НаКлиенте Процедура ПриОткрытии() ЭлементыФормы.ДатаНачала.Значение = НачалоМесяца(ТекущаяДата()); ЭлементыФормы.ДатаОкончания.Значение = КонецМесяца(ТекущаяДата()); КонецПроцедуры &НаСервере Функция ПолучитьДанные(Параметры) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Поступление.Ссылка КАК Документ, | Поступление.Дата КАК ДатаПрихода, | ПоступлениеТовары.Номенклатура КАК Номенклатура, | ПоступлениеТовары.Количество КАК Количество, | ПоступлениеТовары.Сумма КАК Сумма |ИЗ | Документ.ПоступлениеТоваровУслуг КАК Поступление | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Поступление.Товары КАК ПоступлениеТовары | ПО Поступление.Ссылка = ПоступлениеТовары.Ссылка |ГДЕ | Поступление.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания |УПОРЯДОЧИТЬ ПО | Поступление.Дата, | Номенклатура"; Запрос.УстановитьПараметр("ДатаНачала", Параметры.ДатаНачала); Запрос.УстановитьПараметр("ДатаОкончания", Параметры.ДатаОкончания); Результат = Запрос.Выполнить(); Возврат Результат.Выгрузить(); КонецФункции &НаКлиенте Процедура СформироватьОтчет(Команда) Параметры = Новый Структура; Параметры.Вставить("ДатаНачала", ЭлементыФормы.ДатаНачала.Значение); Параметры.Вставить("ДатаОкончания", ЭлементыФормы.ДатаОкончания.Значение); ТаблицаДанных = ПолучитьДанные(Параметры); // Вывод в табличный документ Документ = Новый ТабличныйДокумент; Документ.ВывестиСтроку("Отчет по номенклатуре и дате прихода"); Документ.ВывестиСтроку("Период: " + Формат(Параметры.ДатаНачала, "ДФ=dd.MM.yyyy") + " - " + Формат(Параметры.ДатаОкончания, "ДФ=dd.MM.yyyy")); Документ.ВывестиСтроку(""); Документ.ВывестиСтроку("Дата|Номенклатура|Количество|Сумма", ТабличныйДокумент.УстановитьФорматТекста); Для Каждого Строка Из ТаблицаДанных Цикл Документ.ВывестиСтроку( Формат(Строка.ДатаПрихода, "ДФ=dd.MM.yyyy") + "|" + Строка.Номенклатура + "|" + Формат(Строка.Количество, "ЧГ=10; ЧДЦ=2") + "|" + Формат(Строка.Сумма, "ЧГ=15; ЧДЦ=2") ); КонецЦикла; ЭлементыФормы.Результат.Отобразить(Документ); КонецПроцедуры |
—
### 5. Форма отчета
— Добавьте реквизиты: ДатаНачала, ДатаОкончания (тип Дата).
— Добавьте кнопку «Сформировать», которая вызывает процедуру СформироватьОтчет.
— Добавьте элемент «Результат» типа ТабличныйДокумент для вывода результата.
—
Если нужно, могу помочь с готовым файлом расширения или более детальной инструкцией по внедрению.