Отчет СКД по разработанному запросу
Когда разработан запрос, можно создать на его основе отчет

Отчеты – Добавить

Модуль объекта
|
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 |
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; НастройкиОтчета = ЭтотОбъект.КомпоновщикНастроек.ПолучитьНастройки(); ЭтотОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиОтчета); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(ЭтотОбъект.СхемаКомпоновкиДанных, ЭтотОбъект.КомпоновщикНастроек.Настройки,ДанныеРасшифровки); НаборДанных = ПолучитьНаборДанных(НастройкиОтчета); Если НаборДанных <> Неопределено Тогда НаборыВнешнихДанных = Новый Структура; НаборыВнешнихДанных.Вставить("НаборПолученныхДанных", НаборДанных); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, НаборыВнешнихДанных, ДанныеРасшифровки, Истина); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); КонецЕсли; ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; ДокументРезультат.АвтоМасштаб=Истина; КонецПроцедуры |
Здесь обращаем внимание на название НаборПолученныхДанных – к нему будем обращаться из схемы компоновки данных
Далее добавим саму функцию с запросом
|
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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
Функция ПолучитьНаборДанных(Настройки) // Параметры Период = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("СтандартныйПериод")).Значение; Подразделение = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Подразделение")).Значение; // Проверка заполнения параметров Если НЕ ЗначениеЗаполнено(Подразделение) Тогда Сообщить("НЕ ЗАПОЛНЕНО ПОДРАЗДЕЛЕНИЕ"); Возврат Неопределено; КонецЕсли; Если НЕ ЗначениеЗаполнено(Период.ДатаНачала) ИЛИ НЕ ЗначениеЗаполнено(Период.ДатаОкончания) Тогда Сообщить("НЕ УКАЗАН ПЕРИОД"); Возврат Неопределено; КонецЕсли; // Выполнение запроса Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПроизводствоБезЗаказа.Подразделение КАК Подразделение, | КОЛИЧЕСТВО(ПроизводствоБезЗаказаМатериалыИРаботы.Ссылка) КАК КоличествоСтрокМатериала, | ВЫБОР | КОГДА ВидыНоменклатуры.Родитель.Наименование = ""Готовая продукция"" | | ТОГДА СУММА(ПроизводствоБезЗаказаВыходныеИзделия.Количество) | КОНЕЦ КАК ВесГП, | ВЫБОР | КОГДА ВидыНоменклатуры.Родитель.Наименование <> ""Готовая продукция"" | ТОГДА СУММА(ПроизводствоБезЗаказаВыходныеИзделия.Количество) | КОНЕЦ КАК ВесПФ, | ВидыНоменклатуры.Родитель.Наименование КАК ВидНоменклатурыГруппа, | МАКСИМУМ(ВЫБОР | КОГДА СтруктураПредприятияДополнительныеРеквизиты.Свойство.Имя = ""ПодразделениеГП"" | ТОГДА СтруктураПредприятияДополнительныеРеквизиты.Значение | КОНЕЦ) КАК ПодразделениеГП |ПОМЕСТИТЬ ВТ |ИЗ | Документ.ПроизводствоБезЗаказа КАК ПроизводствоБезЗаказа | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПроизводствоБезЗаказа.ВыходныеИзделия КАК ПроизводствоБезЗаказаВыходныеИзделия | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры | ПО (ПроизводствоБезЗаказаВыходныеИзделия.Номенклатура.ВидНоменклатуры = ВидыНоменклатуры.Ссылка) | ПО (ПроизводствоБезЗаказаВыходныеИзделия.Ссылка = ПроизводствоБезЗаказа.Ссылка) | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПроизводствоБезЗаказа.МатериалыИРаботы КАК ПроизводствоБезЗаказаМатериалыИРаботы | ПО (ПроизводствоБезЗаказаМатериалыИРаботы.Ссылка = ПроизводствоБезЗаказа.Ссылка) | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СтруктураПредприятия.ДополнительныеРеквизиты КАК СтруктураПредприятияДополнительныеРеквизиты | ПО (ПроизводствоБезЗаказа.Подразделение = СтруктураПредприятияДополнительныеРеквизиты.Ссылка) |ГДЕ | ПроизводствоБезЗаказа.Дата > &ДатаНачала | И ПроизводствоБезЗаказа.Дата < &ДатаОкончания | И ПроизводствоБезЗаказа.Подразделение.Родитель = &Подразделение | |СГРУППИРОВАТЬ ПО | ПроизводствоБезЗаказа.Подразделение, | ВидыНоменклатуры.Родитель.Наименование |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ.Подразделение КАК Подразделение, | СУММА(ВТ.ВесГП) КАК ВесГП, | СУММА(ВТ.ВесПФ) КАК ВесПФ |ИЗ | ВТ КАК ВТ |ГДЕ | ВТ.КоличествоСтрокМатериала > 0 | |СГРУППИРОВАТЬ ПО | ВТ.Подразделение"; Запрос.УстановитьПараметр("Подразделение", Подразделение); Запрос.УстановитьПараметр("ДатаНачала", Период.ДатаНачала); Запрос.УстановитьПараметр("ДатаОкончания", Период.ДатаОкончания); УстановитьПривилегированныйРежим(Истина); РезультатЗапроса = Запрос.Выполнить().Выгрузить(); УстановитьПривилегированныйРежим(Ложь); Возврат РезультатЗапроса; КонецФункции |
С модулем закончили. Переходим к схеме компоновки данных
Вкладка «Наборы данных»
Добавляем поля. Наименования должны совпадать с наименованием полей из запроса
Имя объекта, содержащего данные – то самое, которое прописали в модуле (НаборыВнешнихДанных.Вставить(«НаборПолученныхДанных», НаборДанных);)
Сразу настроим формат отображения данных: число, 3 знака после запятой


Полный вид

Вкладка «Ресурсы»
Добавим поля, по которым будет подводиться итог и заменим выражение Количество на Сумму

Вкладка «Параметры»
Добавим параметры отбора
- Период. Имя: СтандартыйПериод, Тип: СтандартныйПериод, Использование: Всегда. При использовании этого параметра в запросе должны использоваться параметры «ДатаНачала» и «ДатаОкончания»
- Подразделение. Имя: Подразделение, Тип: СправочникСсылка.СтруктураПредприятия, Использование: Всегда. В нашем случае нужна нетиповая форма с отбором. Поэтому, заходим в параметры и указываем нужную форму. Пишем вручную Справочник.СтруктураПредприятия.Форма.ФормаВыбора


Вкладка «Настройки»
Отчет – Новая группировка – ОК
Внизу: Настройки: Детальные записи, вкладка «Выбранные поля»
Добавим все реквизиты для отображения в отчете

Другие настройки: по желанию

Внизу. Настройки: Отчет, Вкладка «Параметры»
Оба параметра нужно вывести на форму. Для этого выбираем параметр и нажимаем «Свойства элемента»

Поставить галочку «Включать в пользовательские настройки»

Добавить в нужную подсистему

Смотрим результат



Комментарии закрыты