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

29.10.17

Разработка - СКД

Краткая шпаргалка по программной работе с настройками СКД

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

Соответствие коллекций и вкладок

  

 

 

Состав вложенных коллекций


В таблицах приведены только часто используемые элементы. Остальные можно увидеть в синтаксис помощнике или отладчике. Другими словами, отброшены незначительные детали, чтобы проще было сосредоточить внимание на главных. 

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

Опишу один из вариантов как пользоваться таблицами. Пусть нужно программно добавить отбор в корень настроек. В первой колонке находим "Настройки", видим, что они имеют поле "Отбор". Далее находим поле "Отбор" в левой колонке, видим, что оно содержит вложенную коллекцию "Элементы". Также из таблицы видно, что у добавляемого элемента будет тип ЭлементОтбораКомпоновкиДанных и состав полей, которые нужно будет заполнить. Получится, например, такой код:

 ЭлементОтбора = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
 ЭлементОтбора.Использование = Истина;
 ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Склад");
 ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
 ЭлементОтбора.ПравоеЗначение = Справочник.Склады.ПустаяСсылка();

 

Некоторые особенности и закономерности


- Если вложенная коллекция может содержать элементы нескольких типов, то при программном добавлении элемента необходимо указывать тип. 

ВыбранноеПоле = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));

- Если все элементы в коллекции имеют одинаковый тип, то при добавлении элемента в коллекцию тип указывать не нужно

ЭлементУсловногоОформления = Настройки.УсловноеОформление.Элементы.Добавить();

- При добавлении группировки обязательно заполнять две коллекции: ПоляГруппировки и Выбор. В первую коллекцию нужно добавлять поля, по которым нужно группировать, а во вторую - поля, которые нужно выводить в отчет. При этом в Выбор могут попадать не только группировки, но и ресурсы. И еще, не все поля, которые есть в группировке обязательно добавлять в выбранные поля. Например, можно добавить в группировку поле для сортировки, но отключить его в выбранных полях, чтобы оно не отображалось в отчете. Но в большинстве случаев достаточно добавить группировку, как это делает конструктор, например, так:

Группировка = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));

ПолеГруппировки = Группировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировки.Использование = Истина;
ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Склад");

ВыбранноеПоле = Группировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Использование = Истина;

 

- Тип ЗначениеПараметраНастроекКомпоновкиДанных имеет несколько нелогичную структуру: внутри значения параметра располагается параметр. Хотя логичнее было бы, чтобы в параметре располагалось значение

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

 ЗначениеПараметра = Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьОтбор"));
 ЗначениеПараметра.Использование = Истина;
 ЗначениеПараметра.Значение = ТипВыводаТекстаКомпоновкиДанных.НеВыводить;

 - Некоторые значения параметров могут содержать вложенную коллекцию параметров

 - В коллекции ПараметрыВывода (вкладка "Другие настройки") имена параметорв иногда отличаются от синонимов в конструкторе СКД, что может доставлять неудобства при разработке


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

ps. Насколько я понял, редактор данного ресурса не позволяет объединять ячейки в таблицах, поэтому я выложил таблицы в виде картинок.

скд настройки настройки скд программно программная работа компоновщик компоновщика компоновки

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    124562    681    389    

732

Генератор схемы компоновки данных (СКД), написание кода схемы программно

Инструментарий разработчика СКД Платформа 1С v8.3 Конфигурации 1cv8 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

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

3 стартмани

05.02.2024    4340    30    obmailok    19    

67

Набор-объект для СКД по тексту или запросу

Запросы СКД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    2137    2    Yashazz    0    

30

СКД на JavaScript в 1С

СКД WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    8347    20    John_d    25    

123

Использование менеджера временных таблиц в СКД

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

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

05.12.2023    4891    PROSTO-1C    13    

62

Модель СКД

Инструментарий разработчика СКД Платформа 1С v8.3 Система компоновки данных Абонемент ($m)

DSL для работы с СКД.

1 стартмани

15.11.2023    5992    15    kalyaka    5    

86

Пользовательские настройки отчетов 1С. Часть 1. Простые и расширенные настройки

СКД Инструкции пользователю Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 Россия Бесплатно (free)

Простые приемы работы с отчетами на СКД. Что нужно знать пользователю про настройку отчетов, чтобы использовать их на полную катушку.

18.09.2023    7263    accounting_cons    7    

29

Разрыв страницы в СКД. Легко!

СКД Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

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

01.09.2023    4734    KVIKS    15    

80
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. akmelek 29.10.17 23:45 Сейчас в теме
Спасибо, хорошая статья, пригодится!
zoikins; Kinestetik; xioxao; Ole4ka.Tver; almas; Bessondo; +6 1 Ответить
2. Fragster 1139 30.10.17 10:46 Сейчас в теме
Тема пользовательских настроек не раскрыта. А с ней - и куча всяких граблей, терпеливо разложенных создателями платформы.
zoikins; pvl_mksv; Muzik92; VladC#; IvanovAV; +5 Ответить
3. json 3304 30.10.17 11:11 Сейчас в теме
Судя по заголовку статьи, в ней рассматривается объект НастройкиКомпоновкиДанных. С пользовательскими еще досконально не разбирался, пока хватало поверхностных знаний для решения своих задач.
4. user633533_encantado 11 30.10.17 11:24 Сейчас в теме
Для кого эта статья ? Пользователю эти знания нафиг не нужны, программист такое и так знает, если он профи.
5. vitkhv 30.10.17 12:12 Сейчас в теме
(4) Может для тех программистов которые еще не профи, но хотят ими стать?
user1718110; user975424; user717534; user843241; Batman; xioxao; Gang031; sasha777666; Numme; МСН; rmarkovych; Dmitri93; fishca; +13 Ответить
6. пользователь 30.10.17 15:50
Сообщение было скрыто модератором.
...
7. json 3304 30.10.17 23:18 Сейчас в теме
Данная статья будет полезна программистам, которые довольно хорошо ориентируются в конструкторе СКД и хотят получше запомнить, как устроены внутренние коллекции настроек. Вообще, если нужно решить простую задачу, например, установить параметр настроек или добавить отбор, то особых знаний не требуется. Можно погуглить, обойти несколько форумов, найти подходящий пример и исправить под себя. Но мне некоторое время назад попалась задача, для которой необходимо было программно копировать разные элементы СКД. Хорошего решения на форумах я не нашел, пришлось разбираться самостоятельно, сцеплять разношерстные кусочки кода. Чтобы лучше понять все настройки в целом, я все основные элементы и их состав вывел в таблицу. Кроме того, я обратил внимание, что некоторые различия между программными объектами и объектами в конструкторе неочевидны и запутывают понимание. Я предположил, что не я один сталкиваюсь с такими трудностями и решил выложить результат, который у меня получился на данном ресурсе. Возможно он пригодится мне в будущем, возможно он будет полезен кому-нибудь еще.

Ценность данной публикации на мой взгляд именно в краткости. Вот возьмем, к примеру, некий курс по СКД или книгу. Сколько времени нужно, чтобы их просмотреть/прочитать? И при этом мы будем получать очень большое количество повторов: сначала разжевывается то, что мы и так знаем и отсилы 5% новой информации мы почерпнем. И какой результат? Большинство просто сливаются или заранее понимают, что выгода, которые они получат от полного курса меньше, чем затраты на прослушивание/прочтение. Слишком много лишней информации. Похожая ситуация возникает, когда мы открываем в отладчике в точке останова настройки компоновки и пытаемся понять куда смотреть, чтобы найти нужный нам элемент. Но там не все коллекции называются так как мы ожидаем, а также много лишнего и глубокая вложенность. В итоге наше внимание засоряется ненужными полями типа ДоступныеПоляЧегоТоТам
В данной статье, собрано все основное и отброшено все мало востребованное при программной работе с СКД. И все это на одной странице. Вы можете сравнивать их, анализировать просто перемещая глаза по экрану. При этом также подключается и зрительная память. В итоге при программной работе с настройками можно не просто бездумно копипастить код с форумов, а лучше представлять что где лежит и как это нужно заполнять.

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

Кроме того слуайно нашел ссылку на ИТС, на которой все расписано. Эта страница не попадается, когда она нужна в поиске, например так. Но в ней многое грамотно описано. Поэтому я упомянул ее здесь

В общем, коллеги, если кому данная статья покажется интересной - хорошо, если нет - никто не заставляет читать.
uuvv; user717534; user843241; Kinestetik; larisab; start2000; IvanovAV; user774630; Gang031; Климов Сергей; torch; brr; +12 Ответить
8. пользователь 30.10.17 23:22
Сообщение было скрыто модератором.
...
9. torch 128 09.01.18 11:09 Сейчас в теме
Системно и полезно. спс. Именно как шпаргалка - супер. Уверен, что нужна не только начинающим.
10. VmvLer 09.01.18 11:29 Сейчас в теме
в отладчике более очевидны указанные в статье "данные"

а общих модулях типовых тема более раскрыта.

бесполезная компиляция
11. Dzenn 873 09.01.18 16:33 Сейчас в теме
Пока не вчитывался, но на первый взгляд хорошая, годная статья
12. dream991 03.11.20 07:17 Сейчас в теме
Спасибо. Помогли. Статья полезная.
Оставьте свое сообщение