Зачем нужен регистр сведений «Макеты компоновки данных» в 1С:ЗУП 3.1?

Программист 1С v8.3 (Управляемые формы)
← На главную

При работе с современными версиями конфигурации «Зарплата и управление персоналом» (начиная с 3.1.8 и 3.1.10) многие разработчики и опытные пользователи замечают появление нового объекта — регистра сведений МакетыКомпоновкиДанных. На первый взгляд этот регистр кажется избыточным или чисто техническим, однако он играет ключевую роль в новой идеологии формирования отчетности и печатных форм. Разберем подробно, для чего он предназначен и как с ним работать.

Переход на механизм СКД в печатных формах

Ранее большинство печатных форм в решениях 1С (такие как приказы о приеме Т-1, переводе Т-5 или отпуске Т-6) строились на базе классических макетов табличных документов. Эти макеты жестко задавались в конфигураторе, и любая правка — будь то изменение шрифта, добавление логотипа или новой колонки — требовала внесения изменений в код или использования расширений.

Проанализируем текущую ситуацию: фирма «1С» перевела формирование основных кадровых документов на систему компоновки данных (СКД). Теперь печатная форма — это, по сути, отчет. Это дает пользователям колоссальную гибкость: через меню «Изменить макет» прямо в пользовательском режиме можно менять состав полей, группировки и оформление. Именно здесь на сцену выходит регистр МакетыКомпоновкиДанных.

Назначение регистра и механизм кэширования

Регистр сведений МакетыКомпоновкиДанных является техническим хранилищем, которое выполняет две основные функции:

  1. Кэширование скомпилированных схем. Генерация макета на лету через СКД — это операция, требующая значительных вычислительных ресурсов. Чтобы программа не тратила время на сборку схемы (вычисление всех связей, параметров и ресурсов) при каждой отправке документа на печать, результат компоновки сохраняется в регистре в виде двоичных данных.
  2. Хранение пользовательских правок. Когда мы нажимаем «Еще» — «Изменить макет» в окне предварительного просмотра, все наши настройки сохраняются не в самом документе, а именно в этом регистре, привязываясь к уникальному идентификатору (GUID) варианта макета.

Рассмотрим структуру регистра. Основными измерениями являются КлючМакета (уникальный идентификатор) и Объект (ссылка на отчет или обработку). В ресурсах же хранится сам МакетКомпоновкиДанных (в двоичном формате) и служебная информация о дате создания кэша.

Как это работает на практике: пример с формой Т-6

Представим ситуацию: нам необходимо переименовать вид отпуска в печатной форме приказа Т-6. Раньше мы бы искали макет в общих макетах конфигурации. Теперь процесс выглядит иначе:

1. Система обращается к коду формирования печати.
2. Вместо прямого вывода таблицы программа ищет соответствующую схему компоновки.
3. Проверяется наличие актуальной записи в регистре МакетыКомпоновкиДанных по ключу макета.
4. Если запись найдена и она актуальна, макет мгновенно подгружается из кэша. Если нет — система собирает его заново из метаданных и записывает в регистр для последующего использования.

Выясним причину, по которой это может вызвать сложности при отладке. Если программист внес изменения в программный код формирования схемы или изменил сам макет в конфигураторе, пользователь может продолжать видеть «старую» форму. Это происходит из-за того, что система продолжает использовать закэшированный вариант из регистра.

Работа с регистром в режиме «1С:Предприятие»

Если вы столкнулись с тем, что печатная форма выводит некорректные или устаревшие данные, либо если вам нужно сбросить все пользовательские настройки макетов к типовым, выполните следующие шаги:

  1. Откройте «Функции для технического специалиста» (или «Все функции»).
  2. Найдите регистр сведений Макеты компоновки данных.
  3. Найдите записи, относящиеся к вашему объекту (например, к отчету ПечатьТ6).
  4. Удалите эти записи.

Важно: при следующем открытии печатной формы система автоматически пересоберет макет, используя актуальный программный код и настройки метаданных, и заново создаст запись в регистре.

Программное взаимодействие с механизмом

Разберем, как программно может выглядеть обращение к этому механизму (схематично). В типовых конфигурациях для этого используются методы БСП. Посмотрим на логику работы системы:


// Схематичный пример поиска макета в кэше регистра
ПараметрыПоиска = Новый Структура("КлючМакета", ИдентификаторФормы);
ЗаписьКэша = РегистрыСведений.МакетыКомпоновкиДанных.СоздатьМенеджерЗаписи();
ЗаписьКэша.КлючМакета = ИдентификаторФормы;
ЗаписьКэша.Прочитать();

Если ЗаписьКэша.Выбран() Тогда
    // Используем готовый двоичный макет из ресурса
    Макет = ПолучитьИзВременногоХранилища(ЗаписьКэша.Макет);
Иначе
    // Генерируем макет с нуля и записываем в регистр
    Макет = СформироватьМакетНаОсновеСКД();
    ЗаписатьМакетВРегистр(ИдентификаторФормы, Макет);
КонецЕсли;

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

Итоги и рекомендации

Проанализировав «идеологию» этого механизма, можно сделать вывод: регистр МакетыКомпоновкиДанных — это не просто «усложнение отладки», а мощный инструмент оптимизации.

Основные выводы для работы:

Таким образом, понимание работы регистра МакетыКомпоновкиДанных позволяет эффективно управлять печатными формами в 1С:ЗУП 3.1 и быстро диагностировать проблемы, связанные с отображением данных в документах.

← На главную