Изменение расшифровки макета СКД до компоновки
При программном использовании СКД разработчик, как правило, не имеет удобных инструментов для указания данных, определяющих расшифровку. Работа с макетами ячеек обычно ведётся через конструктор СКД, т.е. в интерфейсе. Кроме того, только ради расшифровки заниматься макетами - не вызывает энтузиазма. Например, надо программно быстро вывести в табличный документ некую таблицу значений, но хочется обеспечить адекватную расшифровку. Вот для таких случаев я написал простенькую функцию, которая "на лету" позволяет изменить расшифровки, автоматически заполненные механикой СКД, на нужные по задаче.
Вызывать следует после создания макета компоновки (с любым типом генератора), до передачи его процессору компоновки.
Примеры вызова:
// одна расшифровка для всех полей
соотПутиРасшифровок=Новый Соответствие;
соотПутиРасшифровок.Вставить("*","ОсновнойНабор.ПолеСРасшифровкой");
// разные для разных полей
соотПутиРасшифровок=Новый Соответствие;
соотПутиРасшифровок.Вставить("ОсновнойНабор.Поле1","ОсновнойНабор.ПолеРасшифровкиДляПоля1");
соотПутиРасшифровок.Вставить("ОсновнойНабор.Поле2","ОсновнойНабор.ПолеРасшифровкиДляПоля2");
соотПутиРасшифровок.Вставить("ОсновнойНабор.Поле3","ОсновнойНабор.ПолеРасшифровкиДляПоля1"); // как у поля1
Если ИзменитьРасшифровкиПолей(МакетКомпоновки,соотПутиРасшифровок) Тогда
// продолжаем выполнение СКД
КонецЕсли;
Указание расшифровок это указание выражений (путей к данным или произвольных выражений СКД) для некоторых полей набора. Предусмотрена передача соответствия, где ключ - путь к полю данных, чью расшифровку надо поменять, а значение - само выражение новой расшифровки. Также можно установить единую расшифровку для всех полей группировки.
Для вывода таблиц значений хватает предложенной функции. Для сложных группировок, таблиц и т.д. может потребоваться доработка, нужные места отмечены в коде.
Проверялось на 8.3.19.1150, но, уверен, будет работать даже на 8.2
UPD: сделал получение параметра расшифровки по-нормальному, как в комментах указали.
Кому пригодится - хорошо.
Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.