Компоновщик настроек компоновки данных добавить отбор
v8: Как установить программно отбор СКД?
IKSparrow
25.10.2012 13:44
Прочитано: 39067
Код следующий:
Мой отбор ни фига не учитывается. Что не так делаю?
Yandex
Возможно, вас также заинтересует
Mokey
25.10.2012 13:58
Ответ № 1
ВидОбъекта.ПравоеЗначение = «Справочник.ИсторияПользователей»; вот это вот что такое? тут должно быть значение вида объекта, т.е. ссылка на элемент справочника.
IKSparrow
25.10.2012 14:01
Ответ № 2
(1) Нееет, там тип строка. Т.ё. не сам элемент какого-то справочника, а наименование справочника. Вернее наименование его типа, как оно записано в определённом регистре.
Тип правого значения может быть полем, остальные варианты зависят от левого значения. Это может быть его тип левого значения, либо, если слева выбрано поле, может использоваться тип поля.
Источник
Профессия — 1С
Схема компоновки данных и компоновщик настроек
рубрики: СКД | Дата: 15 ноября, 2016 Скачать обработку с примерами из статьи: SKD+DCSC.epf Платформа: 8.3; Тип формы: управляемая.
В этой статье рассмотрим как можно связать между собой схему компоновки данных с компоновщиком настроек компоновки данных. Как обычно рассмотрим это на простейшем практическом примере.
Допустим, что у нас есть два справочника: Склады и Товары. В справочнике товаров есть табличная часть ПереченьСкладов в которой указывается на каких складах может храниться товар и его максимальное количество для каждого склада.
Допустим нам потребовалась групповая обработка для записи максимального количества товаров на складах. Табличная часть у нас будет в виде дерева значений, плюс заполнение ее надо реализовать с возможностью отборов как по складам, так и по товару.
Реализовывать ее будем на управляемых формах. В общем вот так должен выглядеть итоговый вариант обработки в режиме 1С:Предприятия после установки отборов и заполнения табличной части.
А теперь подумаем как можно это реализовать. Поскольку нам необходимы отборы, то сразу напрашивается использование схемы компоновки данных. Поэтому создаем обработку и добавляем макет с типом Схема компоновки данных и форму.
В схему компоновки данных вставляем вот такой запрос:
и настраиваем ее следующим образом
Переходим к проектированию формы. Первым делом попробуем реализовать отбор. Добавляем реквизит формы и смотрим доступные типы для него. Видим, что кроме типа КомпоновщикНастроекКомпоновкиДанных у нас нет ничего более подходящего, чтобы реализовать отбор.
После выбора этого типа видим, что у него есть три подчиненных элемента. Нас интересуют Настройки с типом НастройкиКомпоновкиДанных. Раскрываем Настройки, находим в них Отбор, и перетаскиваем его на форму. Далее добавляем реквизит с типом ДеревоЗначений и создаем колонки согласно схеме компоновки данных. Создание и заполнение дерева значений уже рассматривалось в статье про дерево значений на форме. В результате этих манипуляций получаем следующую картину
Теперь нам предстоит программно заполнить отбор из настроек компоновщика настроек на основании отбора схемы компоновки данных. И потом реализовать заполнение дерева значений с учетом этого отбора. Приведу сразу итоговый код, а потом уже его прокомментирую.
В процедуре ПриСозданииНаСервере() у нас реализовано заполнение отбора компоновщика настроек. В статье Вывод отчета СКД программно тоже использовался компоновщик настроек. Но там все было гораздо проще, т.к. там я рассматривал внешний отчет. И компоновщик настроек там присутствует по умолчанию. А здесь мы имеем дело с обработкой. И здесь при инициализации компоновщика настроек из схемы компоновки данных сталкиваемся с неочевидным моментом. Дело в том, что схему компоновки данных надо предварительно поместить во временное хранилище с помощью метода ПоместитьВоВременноеХранилище() После установки нужных нам отборов, заполняем табличную часть с деревом значений. Здесь стоит сказать пару слов про формирование макета компоновки данных. Вот про эти три строчки кода
Как известно макет формируется на основании схемы компоновки данных и настроек компоновки данных. Но поскольку отбор на форме у нас принадлежит не схеме компоновки, а компоновщику настроек, то и настройки берем из компоновщика настроек, которые впрочем как мы помним заполнялись ПриСозданииНаСервере() из настроек схемы компоновки. Поэтому по структуре они идентичны, за исключением значений отбора. И последнее, что хочется отметить, в методе Выполнить() при генерации макета необходимо указать в качестве параметра Тип(«ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений»)
Один комментарий на «“Схема компоновки данных и компоновщик настроек”»
Макет компоновки данных представляет собой уже готовое описание того, как должен быть сформирован отчет. В нем соединяется схема компоновки и настройки компоновки. Фактически макет компоновки данных представляет собой результат применения конкретных настроек к схеме компоновки и является готовым заданием процессору компоновки на формирование отчета нужной структуры с учетом конкретных настроек.
Источник
Создание настроек компоновки данных из встроенного языка
В данной статье показаны примеры того, каким образом можно добавлять некоторые элементы настроек компоновки данных при помощи встроенного языка.
Добавление выбранного поля
Пример добавления выбранного поля:
// Добавим выбранное поле для вывода в отчет. ВыбранноеПоле = Настройки . Выбор . Элементы . Добавить ( Тип ( «ВыбранноеПолеКомпоновкиДанных» ) ) ; ВыбранноеПоле . Поле = Новый ПолеКомпоновкиДанных ( «КоличествоОстаток» ) ;
В данном примере в список выбранных полей было добавлено поле КоличествоОстаток .
Для указания взаимного расположения полей в список выбранных полей можно добавить группу выбранных полей и поместить выбранные поля в нее.
В данном примере создана группа выбранных полей, в нее помещено два поля. Группе указано, каким образом располагать поля, вложенные в нее. Для поля Склад.Код установлен заголовок.
Добавление отбора
Пример добавления элемента отбора:
В данном примере в отчет добавлен элемент отбора с видом сравнения «В Группе».
В отбор можно добавлять сложные условия. Делается это при помощи групп элементов отбора.
Пример добавления группового условия:
В данном примере добавлено условие КоличествоОстаток >= 100 И КоличествоОстаток
Добавление упорядочивания
Пример добавления упорядочивания:
В данном примере показано добавление упорядочивания по полю КоличествоОстаток в убывающем порядке.
Установка параметров вывода
Пример установки параметров вывода:
В данном примере отчету установлен макет оформления и указано, что выводить отбор в результат отчета не нужно.
Добавление условного оформления
Пример добавления условного оформления:
В данном примере добавлено оформление на поле КоличествоОстаток . Поле будет отображаться красным цветом, в случае если его значение больше или равно 100 и меньше или равно 200.
Добавление группировки
Пример добавление группировки:
// Добавим новую группировку в структуру отчета. Группировка = Настройки . Структура . Добавить ( Тип ( «ГруппировкаКомпоновкиДанных» ) ) ;
// Укажем, по каким полям нужно группировать. ПолеГруппировки = Группировка . ПоляГруппировки . Элементы . Добавить ( Тип ( «ПолеГруппировкиКомпоновкиДанных» ) ) ; ПолеГруппировки . Поле = Новый ПолеКомпоновкиДанных ( «Номенклатура» ) ;
В данном примере добавлена группировка по полю Номенклатура с иерархией.
Заметим, что группировке нужно указать, какие поля в ней нужно выводить, как упорядочивать группировку. Если нужно, чтобы состав выводимых полей и полей упорядочивания определялся системой самостоятельно на основании полей группировки и вышестоящих группировок и отчета, то нужно добавить в выбранные поля и поля упорядочивания авто поля.
Пример добавления автополей в порядок и выбранные поля.
// Укажем, что поля, которые нужно выводить в группировке, система должна определять самостоятельно. Группировка . Выбор . Элементы . Добавить ( Тип ( «АвтоВыбранноеПолеКомпоновкиДанных» ) ) ;
// Укажем, что системе необходимо самостоятельно определять порядок, в котором выводить группировку. Группировка . Порядок . Элементы . Добавить ( Тип ( «АвтоЭлементПорядкаКомпоновкиДанных» ) ) ;
Добавление детальных записей
Детальные записи являются группировкой, в которой отсутствуют поля группировки.
Пример добавления детальных записей, вложенных в группировку:
// Добавим в отчет детальные записи, вложенные в группировку. ДетальныеЗаписи = Группировка . Структура . Добавить ( Тип ( «ГруппировкаКомпоновкиДанных» ) ) ;
// Укажем, что поля, которые нужно выводить в детальных записях, система должна определять самостоятельно. ДетальныеЗаписи . Выбор . Элементы . Добавить ( Тип ( «АвтоВыбранноеПолеКомпоновкиДанных» ) ) ;
// Укажем, что системе необходимо самостоятельно определять порядок, в котором выводить детальные записи. ДетальныеЗаписи . Порядок . Элементы . Добавить ( Тип ( «АвтоЭлементПорядкаКомпоновкиДанных» ) ) ;
В данном примере детальные записи добавлены в группировку, в детальные записи добавлены автополя выбора и порядка, указано условное оформление, которое будет действовать в этих детальных записях.
Добавление диаграммы
Пример добавления диаграммы:
В данном примере в отчет добавлена диаграмма, в диаграмму добавлена серия, в серии указано, каким образом ее нужно упорядочивать.
Добавление таблицы
Пример добавления таблицы:
В данном примере в отчет добавлена таблица, в таблице в строках выводится группировка по полю Номенклатура , а в колонках выводится группировка по полю Склад .
Пример
Приведенный в данной статье пример можно посмотреть во внешнем отчете ПримерПрограммнойРаботыСНастройкамиКомпоновкиДанных, который можно найти в каталоге C:\Its\EXE\ExtReps\Samples8\
Вы можете установить их на компьютер прямо сейчас
Данный внешний отчет работает на конфигурации «Примеры 8.1».