Создание настроек компоновки данных из встроенного языка
В данной статье показаны примеры того, каким образом можно добавлять некоторые элементы настроек компоновки данных при помощи встроенного языка.
Добавление выбранного поля
Пример добавления выбранного поля:
Для указания взаимного расположения полей в список выбранных полей можно добавить группу выбранных полей и поместить выбранные поля в нее.
В данном примере создана группа выбранных полей, в нее помещено два поля. Группе указано, каким образом располагать поля, вложенные в нее. Для поля Склад.Код установлен заголовок.
Добавление отбора
Пример добавления элемента отбора:
В данном примере в отчет добавлен элемент отбора с видом сравнения «В Группе».
В отбор можно добавлять сложные условия. Делается это при помощи групп элементов отбора.
Пример добавления группового условия:
В данном примере добавлено условие КоличествоОстаток >= 100 И КоличествоОстаток
Добавление упорядочивания
Пример добавления упорядочивания:
В данном примере показано добавление упорядочивания по полю КоличествоОстаток в убывающем порядке.
Установка параметров вывода
Пример установки параметров вывода:
В данном примере отчету установлен макет оформления и указано, что выводить отбор в результат отчета не нужно.
Добавление условного оформления
Пример добавления условного оформления:
Добавление группировки
Пример добавление группировки:
В данном примере добавлена группировка по полю Номенклатура с иерархией.
Заметим, что группировке нужно указать, какие поля в ней нужно выводить, как упорядочивать группировку. Если нужно, чтобы состав выводимых полей и полей упорядочивания определялся системой самостоятельно на основании полей группировки и вышестоящих группировок и отчета, то нужно добавить в выбранные поля и поля упорядочивания авто поля.
Пример добавления автополей в порядок и выбранные поля.
Добавление детальных записей
Детальные записи являются группировкой, в которой отсутствуют поля группировки.
Пример добавления детальных записей, вложенных в группировку:
В данном примере детальные записи добавлены в группировку, в детальные записи добавлены автополя выбора и порядка, указано условное оформление, которое будет действовать в этих детальных записях.
Добавление диаграммы
Пример добавления диаграммы:
В данном примере в отчет добавлена диаграмма, в диаграмму добавлена серия, в серии указано, каким образом ее нужно упорядочивать.
Добавление таблицы
Пример добавления таблицы:
Пример
Приведенный в данной статье пример можно посмотреть во внешнем отчете ПримерПрограммнойРаботыСНастройкамиКомпоновкиДанных, который можно найти в каталоге C:\Its\EXE\ExtReps\Samples8\
Вы можете установить их на компьютер прямо сейчас
Данный внешний отчет работает на конфигурации «Примеры 8.1».
Реквизит типа КомпоновщикНастроекКомпоновкиДанных
При открытии формы таблица Пользовательских настроек пуста.
Подскажите пожалуйста, как связать
Спасибо за подсказки.
Воспользовался первой подсказкой, для подключения непосредственно.
Макет правильный, он работает в отчете.
При открытии формы загружаю пользовательские настройки:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СКД = Справочники.ЭтикеткиИЦенники.ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД));
КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
Теперь таблица появляется, но при открытии Выбранные поля все поля отмечены красным крестиком и новые не добавляются.
СКД = Справочники.ЭтикеткиИЦенники.ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
АдресСхемы = ПоместитьВоВременноеХранилище(СКД, УникальныйИдентификатор);
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
Первый вариант тоже работает:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СКД = Справочники.ЭтикеткиИЦенники.ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
АдресСхемы = ПоместитьВоВременноеХранилище(СКД, УникальныйИдентификатор);
КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
КомпоновщикНастроек на форме
Не получается на форме обработки программно подружить Настройки СКД. Эта обработка не имеет основной СКД для формы, так как здесь должно быть несколько схем компоновки и на закладках формы должны выводится определенные результаты со-но чтобы можно было донастроить каждую из них.
Для реализации сего я разбил формы по закладкам и к примеру на закладки «Продажи» помещаю «КомпоновщикНастроекКомпоновкиДанных» и перетаскиваю для визуализации (ПараметрыДанных, НастройкиОтбор, НастройкиВыбор).
Есть сам макет скд (продажи). Так вот начинаю в коде все это обрабатывать:
Функция ПолучитьСхемуПродажи() Экспорт
Возврат ПолучитьМакет(«Продажи»);
КонецФункции
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
&НаСервере
Процедура УстановитьНачальныеНастройкиВыгрузки()
СхемаКомпоновкиПродажи = ЭтотОбъект.ПолучитьСхемуПродажи();
КомпоновщикНастроекПродаж.ЗагрузитьНастройки(СхемаКомпоновкиПродажи.НастройкиПоУмолчанию);
КомпоновщикНастроекПродаж.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиПродажи));
А вот программный код команды «Отобразить продажи»:
&НаКлиенте
Процедура ОтобразитьПродажи(Команда)
&НаСервере
Процедура ПрочитатьДанныеПоПродажам()
ЭтотОбъект = РеквизитФормыВЗначение(«Объект»);
СхемаКомпоновкиПродажи = ЭтотОбъект.ПолучитьСхемуПродажи();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
//Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиПродажи,СхемаКомпоновкиПродажи.НастройкиПоУмолчанию);
Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиПродажи,КомпоновщикНастроекПродаж.ПолучитьНастройки());
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
И результат на форме отображается по настройкам СКД макета (Продажи).
Подскажите, почему настройки не до конча отображаются. И если я на форме указываю период то он не влияет на формирование результата.
Очень буду благодарен.
Найдено, моет кому понадобится:
Редактирование настроек для не основной схемы компоновки данных
Иногда требуется обеспечить редактирование настроек компоновки данных не для основной схемы компоновки данных отчета, либо вообще не в отчете.
Для обеспечения редактирования настроек произвольной схемы компоновки данных нужно инициализировать компоновщик настроек источником доступных настроек. После инициализации компоновщика настроек он будет оперировать доступными полями схемы, источник которой ему установлен.
В обычной форме можно использовать источник доступных настроек для схемы компоновки данных.
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема));
В данном примере предполагается, что в переменной Схема находится схема компоновки данных.
В управляемой форме источник доступных настроек для схемы компоновки данных на клиенте работать не может. Поэтому в управляемой форме нужно создавать источник доступных настроек для адреса схемы компоновки данных.
В качестве адреса схемы компоновки данных может выступать адрес во временном хранилище, в которое поместили схему компоновки данных, или адрес значения в записи базы данных.
Пример создания источника доступных настроек для схемы, помещенной во временное хранилище:
В данном примере во временное хранилище помещается схема компоновки данных, находящаяся в переменной Схема.
Пример создания источника доступных настроек для схемы, расположенной в базе данных:
В данном примере схема будет получаться базы данных, из реквизита с именем СхемаКомпоновкиДанных объекта со ссылкой Ссылка.
Поле «Отбор» в управляемой форме используя СКД
Несмотря на опыт работы, такая задача, как вытащить отбор СКД на управляемую форму, часто становится многочасовой потерей времени.
Поэтому реализовал пример, который осуществляет отбор ссылок при помощи СКД.
Работает, например, в УТ 11.4.
Для реализации примера достаточно добавить поля в новую обработку согласно изображениям. У поля «ОбъектНазначения» 2 события:
«ОбъектНазначенияОкончаниеВводаТекста» И «ОбъектНазначенияНачалоВыбора», параметр кнопка выбора «Да»
И добавлена одна команда «Отобрать» с одноименным событием.
Привожу модуль формы:
Скачать файлы
Специальные предложения
Обновление 17.05.19 08:00
См. также
Шпаргалка разработчика для работы с формами Промо
Сборник помогает быстро освоить встроенный язык и средства конфигурирования при разработке обычных и управляемых форм.
31.10.2018 18479 87 ELAM 3
K-SOFT: Улучшенная форма отчета
Если вы любитель добавлять много отборов на форму отчета, и вас раздражает, что отборы занимают большую часть отчета, и их никак не убрать, то вам сюда. Простая доработка, что позволит скрыть отборы на время анализа отчета.
19.05.2021 6185 6 karpik666 18
Отчет с выводом заголовка на СКД
Отчёты «Ведомость товаров на складах» демонстрируют два способах вывода заголовка на СКД. Эти отчеты тестировались на конфигурации Управление торговым предприятием для Казахстана, редакции 2.0.19.2. Могут работать на любой конфигурации, если имеются регистры накопления «ТоварыНаСкладах» и «РеализованныеТовары».
07.04.2021 2017 3 softmaker 0
1С Специалист ЗУП 3
Решение билетов по 1С Специалист ЗУП 3. Решения подготовлены на Зарплата и Управление Персоналом 3.1.12.144
16.04.2020 4699 25 MoiseevSN 11
Каталог игр с приставок из моего детства Промо
Каталог игр Dendy, Sega, Nintendo из нашего детства.
06.02.2018 17444 70 user621724_Dimav1979 37
СКД. Объединение ячеек на примере «Справка инвентаризации расчетов с покупателями и поставщиками по форме ИНВ-17»
Шпаргалка. Объединение ячеек в отчете на СКД с произвольным макетом.
11.03.2020 10527 1 boobzx 7
Создание контекстного отчета на БСП (Лист ознакомления с графиком отпусков, ЗУП 3.1)
Создание контектного отчета с использованием БСП 3.1.2. Внешний отчет Лист ознакомления с Графиком отпусков для программы ЗУП 3.1.12.
03.03.2020 4833 2 angler225 0
СКД: красивые надписи в заголовках колонок
Необходимо немного исправить вывод надписей в заголовках колонок, сделать более читаемый вариант. Как это сделать?
27.02.2020 13171 8 wowik 36
Расширение возможностей печати: Вывод произвольного нижнего и верхнего колонтитула Промо
Расширяем функционал вывода нижнего / верхнего колонтитула. Стандартно 1С имеет достаточно ограничений по выводу и наполнению колонтитулов содержимым, взять хотя бы такие, как вывод только текста и отсутствие ограничения на номер конечной страницы. А при разработке кода сталкиваешься с тем, что свой блок с нижним колонтитулом нужно прижимать к низу страницы. Казалось бы быстро решаемый вопрос, но и в нем есть нюансы. Сейчас я расскажу о том, как решалась эта задача. UPD 15.02.2018. Добавлен вывод верхнего колонтитула; Вывод колонтитулов на первой и последней странице управляется параметрами; Научился считать страницы: Добавлено заполнение переменных аналогичных стандартным из колонтитулов; Задаются форматы даты и времени. Ограничения прежние: 1. Повторно сформировать табличный документ после смены параметров страницы интерактивно.; 2. Передавать данные для более плотной печати как можно более мелко нарезанными кусками.
29.12.2017 54435 38 agent00mouse 0
Программная работа с КомпоновщикНастроекКомпоновкиДанных
Всем доброго времени суток!
Нарвался на такую задачу:
В форме инициализируется КомпоновщикНастроекКомпоновкиДанных (в форме используем только отбор, единственный параметр в схеме устанавливается программно).
В таблице отбора компоновщика настроек устанавливаем нужный отбор (или не устанавливаем, на усмотрение пользователя).
Для простоты в настоящий момент в схеме только один элемент группировки (пусть будет Ссылка, выборка из списка документов)
Привожу тестовый код.
ВЫБРАТЬ
*
ИЗ
Документ.РеализацияТоваровУслуг
ГДЕ
Ссылка = &Ссылка
// Код инициирующий КомпоновщикНастроекКомпоновкиДанных опускаю, там все нормально.
Попытка вывести результат:
ОбработкаОбъект = РеквизитФормыВЗначение(«Объект»);
Схема = ОбработкаОбъект.ПолучитьМакет(«Тест»);
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновщика = КомпоновщикМакета.Выполнить(Схема, Компоновщик.ПолучитьНастройки(). Тип(«ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений»));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновщика);
ТаблицаДанных = Новый ТаблицаЗначений;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ТаблицаДанных);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
Как не кручу, все равно выводит пустую таблицу.
Где засада?