компоновщикнастроеккомпоновкиданных в управляемой форме
Реквизит типа КомпоновщикНастроекКомпоновкиДанных
При открытии формы таблица Пользовательских настроек пуста.
Подскажите пожалуйста, как связать
Спасибо за подсказки.
Воспользовался первой подсказкой, для подключения непосредственно.
Макет правильный, он работает в отчете.
При открытии формы загружаю пользовательские настройки:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СКД = Справочники.ЭтикеткиИЦенники.ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД));
КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
Теперь таблица появляется, но при открытии Выбранные поля все поля отмечены красным крестиком и новые не добавляются.
СКД = Справочники.ЭтикеткиИЦенники.ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
АдресСхемы = ПоместитьВоВременноеХранилище(СКД, УникальныйИдентификатор);
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
Первый вариант тоже работает:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СКД = Справочники.ЭтикеткиИЦенники.ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
АдресСхемы = ПоместитьВоВременноеХранилище(СКД, УникальныйИдентификатор);
КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
Программная работа с КомпоновщикНастроекКомпоновкиДанных
Всем доброго времени суток!
Нарвался на такую задачу:
В форме инициализируется КомпоновщикНастроекКомпоновкиДанных (в форме используем только отбор, единственный параметр в схеме устанавливается программно).
В таблице отбора компоновщика настроек устанавливаем нужный отбор (или не устанавливаем, на усмотрение пользователя).
Для простоты в настоящий момент в схеме только один элемент группировки (пусть будет Ссылка, выборка из списка документов)
Привожу тестовый код.
ВЫБРАТЬ
*
ИЗ
Документ.РеализацияТоваровУслуг
ГДЕ
Ссылка = &Ссылка
// Код инициирующий КомпоновщикНастроекКомпоновкиДанных опускаю, там все нормально.
Попытка вывести результат:
ОбработкаОбъект = РеквизитФормыВЗначение(«Объект»);
Схема = ОбработкаОбъект.ПолучитьМакет(«Тест»);
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновщика = КомпоновщикМакета.Выполнить(Схема, Компоновщик.ПолучитьНастройки(). Тип(«ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений»));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновщика);
ТаблицаДанных = Новый ТаблицаЗначений;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ТаблицаДанных);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
Как не кручу, все равно выводит пустую таблицу.
Где засада?
УФ: Использование отбора настройки СКД в 1С
Реквизит формы с типом КомпоновщикНастроекКомпоновкиДанных
Эту и другие технические статьи написали наши программисты 1С и получили за них премии. Если вы тоже работаете с 1С и любите делиться опытом, приходите разработчиком в Neti → |
Рассмотрим задачу, когда на форме нужно получить значения отбора (вид сравнения и значения сравнения) для дальнейшего использования.
Рассмотрим на примере. На форму объекта внешней обработки добавляем реквизит НастройкиСКД с типом КомпоновщикНастроекКомпоновкиДанных:
Добавление реквизита с типом КомпоновщикНастроекКомпоновкиДанных
Раскрываем реквизит НастройкиСКД и перетаскиваем на форму в раздел Элементы НастройкиСКД.Настройки.Отбор.
Далее устанавливаем обработчик события формы ПриСозданииНаСервере, текст процедуры (у внешней обработки есть макет МакетСКД с типом Схема компоновки данных, в котором настроен Отбор):
Таким образом, в пользовательском режиме на форме появится таблица для определения отборов, настроенных в макете МакетСКД с типом Схема компоновки данных со всеми доступными значениями видов сравнения (В списке, В группе, Равно и т.д.).
Затем можно обработать указанные пользователем значения видов сравнения и значений сравнения, пример кода:
Создание настроек компоновки данных из встроенного языка
В данной статье показаны примеры того, каким образом можно добавлять некоторые элементы настроек компоновки данных при помощи встроенного языка.
Добавление выбранного поля
Пример добавления выбранного поля:
Для указания взаимного расположения полей в список выбранных полей можно добавить группу выбранных полей и поместить выбранные поля в нее.
В данном примере создана группа выбранных полей, в нее помещено два поля. Группе указано, каким образом располагать поля, вложенные в нее. Для поля Склад.Код установлен заголовок.
Добавление отбора
Пример добавления элемента отбора:
В данном примере в отчет добавлен элемент отбора с видом сравнения «В Группе».
В отбор можно добавлять сложные условия. Делается это при помощи групп элементов отбора.
Пример добавления группового условия:
В данном примере добавлено условие КоличествоОстаток >= 100 И КоличествоОстаток
Добавление упорядочивания
Пример добавления упорядочивания:
В данном примере показано добавление упорядочивания по полю КоличествоОстаток в убывающем порядке.
Установка параметров вывода
Пример установки параметров вывода:
В данном примере отчету установлен макет оформления и указано, что выводить отбор в результат отчета не нужно.
Добавление условного оформления
Пример добавления условного оформления:
Добавление группировки
Пример добавление группировки:
В данном примере добавлена группировка по полю Номенклатура с иерархией.
Заметим, что группировке нужно указать, какие поля в ней нужно выводить, как упорядочивать группировку. Если нужно, чтобы состав выводимых полей и полей упорядочивания определялся системой самостоятельно на основании полей группировки и вышестоящих группировок и отчета, то нужно добавить в выбранные поля и поля упорядочивания авто поля.
Пример добавления автополей в порядок и выбранные поля.
Добавление детальных записей
Детальные записи являются группировкой, в которой отсутствуют поля группировки.
Пример добавления детальных записей, вложенных в группировку:
В данном примере детальные записи добавлены в группировку, в детальные записи добавлены автополя выбора и порядка, указано условное оформление, которое будет действовать в этих детальных записях.
Добавление диаграммы
Пример добавления диаграммы:
В данном примере в отчет добавлена диаграмма, в диаграмму добавлена серия, в серии указано, каким образом ее нужно упорядочивать.
Добавление таблицы
Пример добавления таблицы:
Пример
Приведенный в данной статье пример можно посмотреть во внешнем отчете ПримерПрограммнойРаботыСНастройкамиКомпоновкиДанных, который можно найти в каталоге C:\Its\EXE\ExtReps\Samples8\
Вы можете установить их на компьютер прямо сейчас
Данный внешний отчет работает на конфигурации «Примеры 8.1».
Как в реквизитах справочника сохранить данные отбора. Управляемые формы.
Добрый день.
Управляемые формы.
Добавляю реквизит формы с типом КомпоновщикНастроекКомпоновкиДанных.
Оттуда из настроек перетягиваю на форму отбор.
В событии «При создании на сервере» я в этот отбор вставляю нужные мне поля из макета. Все отлично.
Но как мне теперь выбранные пользователем данные отбора сохранить и потом использовать в других объектах?
У реквизитов элемента справочника нет типа «Компоновщик настроек компоновки данных», как быть?
возможно у кого-то есть идеи?
(2) Добавил в список реквизитов справочника реквизит ДанныеОтбораР с типом Хранилище Значения.
В событии формы «при создании на сервере» написал следующий код:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЭлементСправочника = ОБъект.Ссылка.ПолучитьОбъект();
ХранилищеЗначения = ЭлементСправочника.ДанныеОтбораР;
Если ХранилищеЗначения.Получить() = неопределено
тогда
//Получим схему из обработки
ОбъектТМП = РеквизитФормыВЗначение(«Объект»);
СхемаКомпоновки = ОбъектТМП.ПолучитьМакет(«СхемаКомпоновкиДляОтбора»);
//Берем настройки по умолчанию из схемы
НастройкиКомпоновки = СхемаКомпоновки.НастройкиПоУмолчанию;
//Инициализируем наш отбор
Адрес = Новый УникальныйИдентификатор();
URLСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновки, Адрес);
ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(URLСхемы);
В событии «При записи на сервере» добавил это, чтобы данные сохранялись в реквизит. Но что-то не работает. Ошибки никакой не выдает, отладчик по всем полям проходит. Что я не так сделал?
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)