При работе с современными версиями конфигурации «Зарплата и управление персоналом» (начиная с 3.1.8 и 3.1.10) многие разработчики и опытные пользователи замечают появление нового объекта — регистра сведений МакетыКомпоновкиДанных. На первый взгляд этот регистр кажется избыточным или чисто техническим, однако он играет ключевую роль в новой идеологии формирования отчетности и печатных форм. Разберем подробно, для чего он предназначен и как с ним работать.
Ранее большинство печатных форм в решениях 1С (такие как приказы о приеме Т-1, переводе Т-5 или отпуске Т-6) строились на базе классических макетов табличных документов. Эти макеты жестко задавались в конфигураторе, и любая правка — будь то изменение шрифта, добавление логотипа или новой колонки — требовала внесения изменений в код или использования расширений.
Проанализируем текущую ситуацию: фирма «1С» перевела формирование основных кадровых документов на систему компоновки данных (СКД). Теперь печатная форма — это, по сути, отчет. Это дает пользователям колоссальную гибкость: через меню «Изменить макет» прямо в пользовательском режиме можно менять состав полей, группировки и оформление. Именно здесь на сцену выходит регистр МакетыКомпоновкиДанных.
Регистр сведений МакетыКомпоновкиДанных является техническим хранилищем, которое выполняет две основные функции:
Рассмотрим структуру регистра. Основными измерениями являются КлючМакета (уникальный идентификатор) и Объект (ссылка на отчет или обработку). В ресурсах же хранится сам МакетКомпоновкиДанных (в двоичном формате) и служебная информация о дате создания кэша.
Представим ситуацию: нам необходимо переименовать вид отпуска в печатной форме приказа Т-6. Раньше мы бы искали макет в общих макетах конфигурации. Теперь процесс выглядит иначе:
1. Система обращается к коду формирования печати.
2. Вместо прямого вывода таблицы программа ищет соответствующую схему компоновки.
3. Проверяется наличие актуальной записи в регистре МакетыКомпоновкиДанных по ключу макета.
4. Если запись найдена и она актуальна, макет мгновенно подгружается из кэша. Если нет — система собирает его заново из метаданных и записывает в регистр для последующего использования.
Выясним причину, по которой это может вызвать сложности при отладке. Если программист внес изменения в программный код формирования схемы или изменил сам макет в конфигураторе, пользователь может продолжать видеть «старую» форму. Это происходит из-за того, что система продолжает использовать закэшированный вариант из регистра.
Если вы столкнулись с тем, что печатная форма выводит некорректные или устаревшие данные, либо если вам нужно сбросить все пользовательские настройки макетов к типовым, выполните следующие шаги:
Макеты компоновки данных.ПечатьТ6).Важно: при следующем открытии печатной формы система автоматически пересоберет макет, используя актуальный программный код и настройки метаданных, и заново создаст запись в регистре.
Разберем, как программно может выглядеть обращение к этому механизму (схематично). В типовых конфигурациях для этого используются методы БСП. Посмотрим на логику работы системы:
// Схематичный пример поиска макета в кэше регистра
ПараметрыПоиска = Новый Структура("КлючМакета", ИдентификаторФормы);
ЗаписьКэша = РегистрыСведений.МакетыКомпоновкиДанных.СоздатьМенеджерЗаписи();
ЗаписьКэша.КлючМакета = ИдентификаторФормы;
ЗаписьКэша.Прочитать();
Если ЗаписьКэша.Выбран() Тогда
// Используем готовый двоичный макет из ресурса
Макет = ПолучитьИзВременногоХранилища(ЗаписьКэша.Макет);
Иначе
// Генерируем макет с нуля и записываем в регистр
Макет = СформироватьМакетНаОсновеСКД();
ЗаписатьМакетВРегистр(ИдентификаторФормы, Макет);
КонецЕсли;
Использование КлючМакета позволяет системе различать даже один и тот же отчет, запущенный с разными ключевыми параметрами, что делает систему печати чрезвычайно гибкой.
Проанализировав «идеологию» этого механизма, можно сделать вывод: регистр МакетыКомпоновкиДанных — это не просто «усложнение отладки», а мощный инструмент оптимизации.
Основные выводы для работы:
Таким образом, понимание работы регистра МакетыКомпоновкиДанных позволяет эффективно управлять печатными формами в 1С:ЗУП 3.1 и быстро диагностировать проблемы, связанные с отображением данных в документах.