компоновщик настроек компоновки данных на форме 1с

Профессия — 1С

рубрики: СКД | Дата: 15 ноября, 2016
Скачать обработку с примерами из статьи: SKD+DCSC.epf
Платформа: 8.3; Тип формы: управляемая.

В этой статье рассмотрим как можно связать между собой схему компоновки данных с
компоновщиком настроек компоновки данных. Как обычно рассмотрим это на простейшем
практическом примере.

Допустим, что у нас есть два справочника: Склады
и Товары. В справочнике товаров есть табличная часть ПереченьСкладов
в которой указывается на каких складах может храниться товар и его максимальное
количество для каждого склада.

компоновщик настроек компоновки данных на форме 1с

Допустим нам потребовалась групповая обработка для записи максимального количества
товаров на складах. Табличная часть у нас будет в виде дерева значений, плюс заполнение
ее надо реализовать с возможностью отборов как по складам, так и по товару.

Реализовывать ее будем на управляемых формах. В общем вот так должен выглядеть итоговый вариант
обработки в режиме 1С:Предприятия после установки отборов и заполнения табличной части.

компоновщик настроек компоновки данных на форме 1с

А теперь подумаем как можно это реализовать.
Поскольку нам необходимы отборы, то сразу напрашивается использование схемы
компоновки данных. Поэтому создаем обработку и добавляем макет с типом
Схема компоновки данных и форму.

компоновщик настроек компоновки данных на форме 1с

В схему компоновки данных вставляем вот такой запрос:

и настраиваем ее следующим образом

компоновщик настроек компоновки данных на форме 1с

Переходим к проектированию формы.
Первым делом попробуем реализовать отбор. Добавляем реквизит формы и смотрим доступные
типы для него. Видим, что кроме типа КомпоновщикНастроекКомпоновкиДанных
у нас нет ничего более подходящего, чтобы реализовать отбор.

компоновщик настроек компоновки данных на форме 1с

После выбора этого типа видим, что у него есть три подчиненных элемента. Нас
интересуют Настройки с типом НастройкиКомпоновкиДанных.
Раскрываем Настройки, находим в них Отбор, и перетаскиваем его
на форму.
Далее добавляем реквизит с типом ДеревоЗначений и создаем колонки согласно
схеме компоновки данных. Создание и заполнение дерева значений уже рассматривалось
в статье про дерево значений на форме.
В результате этих манипуляций получаем следующую картину

компоновщик настроек компоновки данных на форме 1с

Теперь нам предстоит программно заполнить отбор из настроек компоновщика настроек
на основании отбора схемы компоновки данных. И потом реализовать заполнение дерева
значений с учетом этого отбора. Приведу сразу итоговый код, а потом уже его
прокомментирую.

В процедуре ПриСозданииНаСервере() у нас реализовано заполнение отбора
компоновщика настроек. В статье Вывод отчета СКД программно
тоже использовался компоновщик настроек. Но там все было гораздо проще, т.к. там
я рассматривал внешний отчет. И компоновщик настроек там присутствует по умолчанию.
А здесь мы имеем дело с обработкой. И здесь при инициализации компоновщика настроек
из схемы компоновки данных сталкиваемся с неочевидным моментом. Дело в том, что
схему компоновки данных надо предварительно поместить во временное хранилище с
помощью метода ПоместитьВоВременноеХранилище()
После установки нужных нам отборов, заполняем табличную часть с деревом значений.
Здесь стоит сказать пару слов про формирование макета компоновки данных. Вот про
эти три строчки кода

Как известно макет формируется на основании схемы компоновки данных и настроек
компоновки данных. Но поскольку отбор на форме у нас принадлежит не схеме компоновки,
а компоновщику настроек, то и настройки берем из компоновщика настроек, которые
впрочем как мы помним заполнялись ПриСозданииНаСервере() из настроек схемы компоновки.
Поэтому по структуре они идентичны, за исключением значений отбора. И последнее, что
хочется отметить, в методе Выполнить() при генерации макета необходимо
указать в качестве параметра Тип(«ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений»)

Один комментарий на «“Схема компоновки данных и компоновщик настроек”»

Макет компоновки данных представляет собой уже готовое описание того, как должен быть сформирован отчет. В нем соединяется схема компоновки и настройки компоновки. Фактически макет компоновки данных представляет собой результат применения конкретных настроек к схеме компоновки и является готовым заданием процессору компоновки на формирование отчета нужной структуры с учетом конкретных настроек.

Источник

Реквизит типа КомпоновщикНастроекКомпоновкиДанных

При открытии формы таблица Пользовательских настроек пуста.

Подскажите пожалуйста, как связать

Спасибо за подсказки.

Воспользовался первой подсказкой, для подключения непосредственно.

Макет правильный, он работает в отчете.
При открытии формы загружаю пользовательские настройки:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

СКД = Справочники.ЭтикеткиИЦенники.ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД));
КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);

Теперь таблица появляется, но при открытии Выбранные поля все поля отмечены красным крестиком и новые не добавляются.

СКД = Справочники.ЭтикеткиИЦенники.ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
АдресСхемы = ПоместитьВоВременноеХранилище(СКД, УникальныйИдентификатор);
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);

Первый вариант тоже работает:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СКД = Справочники.ЭтикеткиИЦенники.ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
АдресСхемы = ПоместитьВоВременноеХранилище(СКД, УникальныйИдентификатор);
КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));

Источник

Создание настроек компоновки данных из встроенного языка

В данной статье показаны примеры того, каким образом можно добавлять некоторые элементы настроек компоновки данных при помощи встроенного языка.

Добавление выбранного поля

Пример добавления выбранного поля:

Для указания взаимного расположения полей в список выбранных полей можно добавить группу выбранных полей и поместить выбранные поля в нее.

В данном примере создана группа выбранных полей, в нее помещено два поля. Группе указано, каким образом располагать поля, вложенные в нее. Для поля Склад.Код установлен заголовок.

Добавление отбора

Пример добавления элемента отбора:

В данном примере в отчет добавлен элемент отбора с видом сравнения «В Группе».

В отбор можно добавлять сложные условия. Делается это при помощи групп элементов отбора.

Пример добавления группового условия:

В данном примере добавлено условие КоличествоОстаток >= 100 И КоличествоОстаток

Добавление упорядочивания

Пример добавления упорядочивания:

В данном примере показано добавление упорядочивания по полю КоличествоОстаток в убывающем порядке.

Установка параметров вывода

Пример установки параметров вывода:

В данном примере отчету установлен макет оформления и указано, что выводить отбор в результат отчета не нужно.

Добавление условного оформления

Пример добавления условного оформления:

Добавление группировки

Пример добавление группировки:

В данном примере добавлена группировка по полю Номенклатура с иерархией.

Заметим, что группировке нужно указать, какие поля в ней нужно выводить, как упорядочивать группировку. Если нужно, чтобы состав выводимых полей и полей упорядочивания определялся системой самостоятельно на основании полей группировки и вышестоящих группировок и отчета, то нужно добавить в выбранные поля и поля упорядочивания авто поля.

Пример добавления автополей в порядок и выбранные поля.

Добавление детальных записей

Детальные записи являются группировкой, в которой отсутствуют поля группировки.

Пример добавления детальных записей, вложенных в группировку:

В данном примере детальные записи добавлены в группировку, в детальные записи добавлены автополя выбора и порядка, указано условное оформление, которое будет действовать в этих детальных записях.

Добавление диаграммы

Пример добавления диаграммы:

В данном примере в отчет добавлена диаграмма, в диаграмму добавлена серия, в серии указано, каким образом ее нужно упорядочивать.

Добавление таблицы

Пример добавления таблицы:

Пример

Приведенный в данной статье пример можно посмотреть во внешнем отчете ПримерПрограммнойРаботыСНастройкамиКомпоновкиДанных, который можно найти в каталоге C:\Its\EXE\ExtReps\Samples8\

Вы можете установить их на компьютер прямо сейчас

Данный внешний отчет работает на конфигурации «Примеры 8.1».

Источник

Система компоновки данных

Система компоновки данных представляет собой механизм, основанный на декларативном описании отчетов. Он предназначен для построения отчетов, а также вывода информации, имеющей сложную структуру и содержащий произвольный набор таблиц и диаграмм.

компоновщик настроек компоновки данных на форме 1с

Устройство системы компоновки данных

Основные элементы системы компоновки данных представлены на следующей схеме:

компоновщик настроек компоновки данных на форме 1с

Схема компоновки данных

Настройки компоновки данных

Макет компоновки данных

Макет компоновки данных представляет собой уже готовое описание того, как должен быть сформирован отчет. В нем соединяется схема компоновки и настройки компоновки. Фактически макет компоновки данных представляет собой результат применения конкретных настроек к схеме компоновки и является готовым заданием процессору компоновки на формирование отчета нужной структуры с учетом конкретных настроек.

Элемент результата компоновки данных

Результат компоновки данных представляется набором элементов результата компоновки данных. Как самостоятельная логическая сущность результат компоновки данных не существует, существуют только его элементы. Элементы результата компоновки данных можно вывести в табличный документ для представления их пользователю, или в другие виды документов. Также имеется возможность программного вывода элементов результата компоновки в объекты вида Дерево значений или Таблица значений.

Работа с системой компоновки данных в конфигурации

Система компоновки данных интегрирована в объект конфигурации Отчет. Это позволяет создавать отчеты без программирования.

У объекта конфигурации Отчет реализовано свойство «Основная схема компоновки данных»:

компоновщик настроек компоновки данных на форме 1с

При нажатии кнопки открытия для этого свойства, вызывается конструктор макета, который позволяет создать макет отчета, содержащий схему компоновки данных:

компоновщик настроек компоновки данных на форме 1с

После нажатия кнопки «Готово» будет открыт конструктор схемы компоновки данных.

Конструктор схемы компоновки данных позволяет описать исходные данные, которые будет использовать отчет: наборы данных, связи между наборами данных, вычисляемые поля, ресурсы и т. д.

компоновщик настроек компоновки данных на форме 1с

Также конструктор схемы компоновки данных предоставляет возможность описать настройки компоновки данных, которые будут использоваться по умолчанию (в том случае, если пользователь не задаст собственные настройки). Настройки компоновки данных могут быть созданы с помощью специального конструктора настроек компоновки данных, или вручную:

компоновщик настроек компоновки данных на форме 1с

После выполнения этих действий отчет готов. В режиме 1С:Предприятие система автоматически, на основании схемы компоновки данных, содержащейся в отчете, может создать форму отчета и форму настроек отчета.

Таким образом пользователь просто запускает отчет и получает результат в соответствии с теми настройками, которые описал разработчик:

компоновщик настроек компоновки данных на форме 1с

При необходимости пользователь может открыть форму настроек отчета и отредактировать их, изменить структуру отчета и т. д. аналогично тому, как это делает разработчик в режиме конфигуратора.

Консоль системы компоновки данных

Внешний отчет «Консоль системы компоновки данных» предназначен для специалистов, желающих подробнее узнать об устройстве системы компоновки данных. Консоль позволяет выполнять отдельные шаги компоновки данных с просмотром промежуточных результатов в виде XML. Подробнее…

Источник

КомпоновщикНастроек на форме

Не получается на форме обработки программно подружить Настройки СКД. Эта обработка не имеет основной СКД для формы, так как здесь должно быть несколько схем компоновки и на закладках формы должны выводится определенные результаты со-но чтобы можно было донастроить каждую из них.

Для реализации сего я разбил формы по закладкам и к примеру на закладки «Продажи» помещаю «КомпоновщикНастроекКомпоновкиДанных» и перетаскиваю для визуализации (ПараметрыДанных, НастройкиОтбор, НастройкиВыбор).

Есть сам макет скд (продажи). Так вот начинаю в коде все это обрабатывать:

Функция ПолучитьСхемуПродажи() Экспорт
Возврат ПолучитьМакет(«Продажи»);
КонецФункции

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

&НаСервере
Процедура УстановитьНачальныеНастройкиВыгрузки()

СхемаКомпоновкиПродажи = ЭтотОбъект.ПолучитьСхемуПродажи();
КомпоновщикНастроекПродаж.ЗагрузитьНастройки(СхемаКомпоновкиПродажи.НастройкиПоУмолчанию);
КомпоновщикНастроекПродаж.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиПродажи));

А вот программный код команды «Отобразить продажи»:
&НаКлиенте
Процедура ОтобразитьПродажи(Команда)

&НаСервере
Процедура ПрочитатьДанныеПоПродажам()

ЭтотОбъект = РеквизитФормыВЗначение(«Объект»);
СхемаКомпоновкиПродажи = ЭтотОбъект.ПолучитьСхемуПродажи();

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
//Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиПродажи,СхемаКомпоновкиПродажи.НастройкиПоУмолчанию);
Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиПродажи,КомпоновщикНастроекПродаж.ПолучитьНастройки());

ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет);

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

И результат на форме отображается по настройкам СКД макета (Продажи).

Подскажите, почему настройки не до конча отображаются. И если я на форме указываю период то он не влияет на формирование результата.

Очень буду благодарен.

Найдено, моет кому понадобится:

Редактирование настроек для не основной схемы компоновки данных

Иногда требуется обеспечить редактирование настроек компоновки данных не для основной схемы компоновки данных отчета, либо вообще не в отчете.

Для обеспечения редактирования настроек произвольной схемы компоновки данных нужно инициализировать компоновщик настроек источником доступных настроек. После инициализации компоновщика настроек он будет оперировать доступными полями схемы, источник которой ему установлен.

В обычной форме можно использовать источник доступных настроек для схемы компоновки данных.

КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема));
В данном примере предполагается, что в переменной Схема находится схема компоновки данных.

В управляемой форме источник доступных настроек для схемы компоновки данных на клиенте работать не может. Поэтому в управляемой форме нужно создавать источник доступных настроек для адреса схемы компоновки данных.

В качестве адреса схемы компоновки данных может выступать адрес во временном хранилище, в которое поместили схему компоновки данных, или адрес значения в записи базы данных.

Пример создания источника доступных настроек для схемы, помещенной во временное хранилище:

В данном примере во временное хранилище помещается схема компоновки данных, находящаяся в переменной Схема.

Пример создания источника доступных настроек для схемы, расположенной в базе данных:

В данном примере схема будет получаться базы данных, из реквизита с именем СхемаКомпоновкиДанных объекта со ссылкой Ссылка.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *