На закладке Параметры у нас автоматически добавятся параметры НачалоПериода и КонецПериода , так что задавать их в параметрах виртуальной таблицы не нужно.
1C Скд не Выводится Заголовок Параметра на Форме
Итак: «Объектная» СКД – что это и зачем вам надо ее использовать?
Схема компоновки данных (СКД) – очень мощный и развитый механизм 1С, позволяющий строить сложные отчеты с гибким механизмом построения результирующих форм, установки всевозможных отборов и т.д. на стороне пользователя.
Не каждый разработчик «любит» использовать в своей работе СКД. На это есть несколько понятных причин. Например,
- Не каждый разработчик в совершенстве владеет всеми возможностями СКД, т.к. они на самом деле весьма обширны. В этом случае СКД выступает в виде «черного ящика», который у себя внутри делает неизвестно что.
- Существует ряд отчетов, которые не взять одним запросом. Порой требуется написать несколько (до нескольких десятков) запросов и обработать каждый из них по своей особенной схеме, прежде чем получить данные пригодные для отчета. При этом сами выходные формы отчетов достаточно просты. Этим «славятся» отчеты для управленческого персонала, который хочет видеть «все и сразу».
Получается, СКД, достаточно мощный механизм, используется разработчиками преимущественно для написания отчетов с довольно простыми «запросными» выборками данных из базы и не сложными выходными формами.
Но не стоит забывать об «Объектной» компоновке! О СКД, в которой в качестве набора данных выступает объект – произвольная таблица значений. Тем самым, мы можем использовать всю гибкость настроек СКД на уровне пользователей (свободу построения выходных форм, произвольные отборы, настройки,…) и очень сложные нетиповые выборки в качестве источника данных!
Промокоды на Займер на скидки
Опишем основные нюансы (и порядок) работы с «объектной» компоновкой, на которые стоит обратить внимание при разработке сложных отчетов.
ВНИМАНИЕ: все приведенные листинги написаны на 8.1.
Раз в СКД в качестве источника данных выступает объект – произвольная таблица значений, следовательно, в отчете надо эту таблицу значений создать и заполнить. Таблица значений произвольная: данные в нее могут попадать из любых источников и произвольным образом (из запросов, таблиц базы данных), могут быть расчетные поля и т.д.
Для простоты дальнейшего изложения предположим, в отчете была создана таблица значений «ТаблицаЗначенийОтчета» с колонками «колонка1, колонка2, колонка3, …».
1С. Форма подбора с использованием отборов СКД
Настройки СКД
Кратко опишем настройки СКД. Думаю, подробно заострять внимание на них не стоит.
В отчет добавляем новый макет типа «Схема компоновки данных».
В самой СКД в качестве набора данных добавляем набор данных «объект»
Затем, ОБЯЗАТЕЛЬНО, необходимо указать имя объекта, содержащего данные. Имя объекта МОЖЕТ НЕ СОВПАДАТЬ с именем таблицы значений с данными, которую мы уже создали в отчете (см. п. 1).
Допустим, у нас, имя объекта, содержащего данные, будет «ОбъектСДанными».
Заполнение полей СКД. Обращаем ваше внимание, поля СКД можно задать (описать) в СКД сейчас, когда мы создаем СКД, а можно позже, программно. Для простоты, добавим все наши поля непосредственно в СКД.
ВАЖНО! Имена полей в объектной СКД должны совпадать с именами колонок таблицы значений источника: у нас поля будут иметь имена «колонка1, колонка2, колонка3, …», также, как в таблице значений «ТаблицаЗначенийОтчета».
Теперь осталось только указать ресурсы компоновки, настроить выходную форму, указать отборы (здесь мы подробно расписывать не будем, — предполагаем, что читатель знает как это делается).
Все, работа с макетом СКД закончена. Теперь необходимо каким-то образом передать СКД сформированную нами таблицу значений «ТаблицаЗначенийОтчета», по сути, установить связь между «ТаблицаЗначенийОтчета» и «ОбъектСДанными» компоновки. Это нужно делать в самом отчете.
Добавим в отчет процедуру, которая передаст нашу таблицу значений в компоновку и выведет отчет. Назовем эту процедуру «Печать»
В нашем примере (см. картинки выше) макет со схемой компоновки данных назывался «Макет». Обращаем ваше внимание, что используемый макет СКД не обязательно должен быть основным.
Обращаем ваше внимание, таблица значений «ТаблицаЗначенийОтчета» не передается в процедуру параметром, а является переменной или реквизитом формы отчета в целом.
Некоторые пояснения к макету компоновки. Здесь появляется еще одна переменная: «ДанныеРасшифровкиОтчета». Эта переменная также должна быть переменной формы. В нее СКД поместит информацию о расшифровке.
Вывод результата. В нашем примере в качестве таблицы для вывода результата используется поле табличного документа формы «Результат».
Но здесь возникает вопрос, как же нам передать параметры НачалаПериода и КонцаПериода в запрос, а на форме чтобы был виден только один стандартный период.
Заметки по 1С:Предприятие 8.2, 8.3
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования (Linus Torvalds).
Выгрузка результата СКД в таблицу значений
3) Т.к. нам нужно получать продажи товара за период, то нужно построить запрос к виртуальной таблице оборотного регистра накопления Продажи.Обороты.
На закладке «Параметры» у нас автоматически добавятся параметры «НачалоПериода» и «КонецПериода», так что задавать их в параметрах виртуальной таблицы не нужно.
4) Далее на закладке «Настройки» создадим новую группировку без иерархии, а на закладке «Выбранные поля» выберем поля для вывода в таблицу значений.
4) На этом настройка СКД закончена. Вернемся к обработке и создадим реквизиты: «НачалоПериода» и «КонецПериода», с типом «Дата», и табличную часть Продажи с реквизитами: «Номенклатура» — тип «СправочникСсылка.Номенклатура» и КоличествоОборот — тип «Число». После этого создадим новую форму, добавив на нее созданные элементы.
5) Теперь откроем модуль объекта и определим там функцию для вывода результата работы СКД в таблицу значений:
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных ;
КомпоновщикНастроек . Инициализировать (Новый ИсточникДоступныхНастроекКомпоновкиДанных ( СКД ));
КомпоновщикНастроек . ЗагрузитьНастройки ( СКД . НастройкиПоУмолчанию );
НастройкиКомпоновщика = КомпоновщикНастроек . Настройки ;
ПараметрыНастройки = НастройкиКомпоновщика . ПараметрыДанных ;
// устанавливаем параметры отчета
ЗначениеПараметра = ПараметрыНастройки . НайтиЗначениеПараметра (Новый ПараметрКомпоновкиДанных ( «НачалоПериода» ));
ЗначениеПараметра . Значение = НачалоПериода ;
ЗначениеПараметра = ПараметрыНастройки . НайтиЗначениеПараметра (Новый ПараметрКомпоновкиДанных ( «КонецПериода» ));
ЗначениеПараметра . Значение = КонецДня ( КонецПериода );
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных ;
МакетКомпоновкиДанных = КомпоновщикМакета . Выполнить ( СКД , НастройкиКомпоновщика . Тип ( «ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений» ));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных ;
ПроцессорКомпоновкиДанных . Инициализировать ( МакетКомпоновкиДанных );
ТаблицаРезультат = Новый ТаблицаЗначений ;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений ;
ПроцессорВывода . УстановитьОбъект ( ТаблицаРезультат );
ПроцессорВывода . Вывести ( ПроцессорКомпоновкиДанных );
Процедура КнопкаВыполнитьНажатие ( Кнопка )
Продажи . Загрузить ( РезультатКомпоновкиВТЗ ( СКД ));
КонецПроцедуры
6) Запустим и проверим работу нашей обработки. В качестве начала периода установим «01.01.2010», конец периода — «01.01.2014» и нажмем кнопку «Выполнить».
Настройка итогов в СКД 1С 8.3
Микрофинансирование → Микрокредиты → Специальные предложения → Скачать файлы → Обзор Быстроденег → Предмет договора → Ответственность сторон → Отличные наличные→ Экспресс займы