Почему не применяются изменения СКД и макета печатной формы Т-8 в 1С:ЗУП 3.1?

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

Рассмотрим весьма распространенную проблему, с которой сталкиваются разработчики при доработке конфигурации 1С:Зарплата и Управление Персоналом 3.1. Допустим, вам поступила задача вывести дополнительную информацию в кадровый приказ об увольнении по форме Т-8. Вы находите соответствующий отчет в конфигураторе (например, ПечатнаяФормаТ8), вносите изменения в схему компоновки данных (СКД), добавляете нужные поля, корректируете макет. Однако, при попытке распечатать приказ из документа увольнения в режиме пользователя, ваши новые реквизиты упрямо не отображаются.

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

Суть проблемы: как ЗУП 3.1 работает с кадровыми печатными формами

Для начала давайте разберем архитектурную особенность современных конфигураций на базе БСП (Библиотеки стандартных подсистем), таких как ЗУП 3.1. Большинство сложных кадровых печатных форм здесь реализовано не через обычные табличные макеты документов, а через полноценные отчеты на базе СКД. Это сделано для гибкости и возможности получения данных из множества кадровых регистров без написания огромных запросов вручную.

Когда вы вносите изменения в СКД отчета прямо в конфигураторе, вы ожидаете, что система сразу начнет использовать новую схему. Но 1С применяет многоуровневое кэширование и сохранение настроек, чтобы ускорить формирование печатных форм. Система просто "не видит" ваши изменения, так как читает схему из сохраненных пользовательских или системных кэшей. Рассмотрим подробнее, где именно могут "застрять" старые настройки.

Решение 1. Очистка кэша в регистре сведений «Макеты компоновки данных»

Это основная и самая частая причина, почему отчеты-печатные формы в ЗУП игнорируют обновления из конфигуратора. При первом обращении к печатной форме система читает схему компоновки из метаданных и сохраняет ее во внутренний системный регистр для ускорения последующих вызовов.

Выполним следующие шаги для решения проблемы:

  1. Запустите 1С:ЗУП в режиме «Предприятие».
  2. Перейдите в Функции для технического специалиста (в старых версиях платформы — «Все функции»).
  3. В ветке Регистры сведений найдите регистр МакетыКомпоновкиДанных.
  4. Откройте этот регистр. В нем хранится кэш схем СКД для различных системных отчетов и печатных форм.
  5. Найдите в списке запись, которая соответствует вашему отчету (в нашем случае это ПечатнаяФормаТ8).
  6. Удалите эту запись или очистите её содержимое.

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

Решение 2. Проверка пользовательских макетов печатных форм

Проанализируем еще одну частую ситуацию. Иногда разработчик бьется над макетом в конфигураторе, а результата нет, потому что макет переопределен пользователями в режиме предприятия. Механизм БСП позволяет администраторам и продвинутым пользователям менять шрифт, добавлять логотипы или скрывать строки без программирования.

Посмотрим на пример проверки пользовательских макетов:

  1. Перейдите в раздел Администрирование.
  2. Откройте пункт Печатные формы, отчеты и обработки.
  3. Перейдите по ссылке Макеты печатных форм.
  4. В открывшемся списке найдите макет формы Т-8.
  5. Обратите внимание на пиктограмму рядом с названием макета. Если там отображается значок с зеленым карандашом, это означает, что в базе используется пользовательский (измененный) вариант макета.

В этом случае платформа жестко игнорирует макет из конфигуратора. Чтобы применить ваши программные доработки, вам необходимо выделить этот макет в списке и нажать кнопку Использовать стандартный макет. Иконка изменится, и система начнет брать макет из конфигурации.

Решение 3. Обновление предопределенных вариантов отчетов

Если добавленные вами поля в СКД все равно не появляются, возможно, "завис" вариант отчета. В 1С есть справочник ПредопределенныеВариантыОтчетов. Редактировать его напрямую вручную нельзя, но мы можем инициировать его программное обновление.

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


// Программный запуск обновления справочника вариантов отчетов
Справочники.ПредопределенныеВариантыОтчетов.ОбновитьДанныеСправочника();

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

Решение 4. Очистка платформенного кэша

Если вы выполнили все вышеописанные действия, но старая форма продолжает формироваться, стоит исключить влияние платформенного кэша. Временные файлы 1С иногда сохраняют старые версии метаданных.

Для очистки кэша на локальном компьютере пользователя удалите временные папки информационной базы в профиле Windows. Если вы работаете в клиент-серверном варианте, иногда помогает перезапуск службы Агента сервера 1С:Предприятие или очистка сеансовых данных. Это гарантирует, что в память загрузится самая свежая версия вашей схемы компоновки данных.

Архитектурно правильный подход: Внешние печатные формы (ВПФ) и Расширения

Разберем важный методологический аспект. Вносить изменения в типовые отчеты и макеты непосредственно в основной конфигурации ЗУП 3.1 (снимая базу с поддержки или включая возможность изменения) — это не самая лучшая практика. В дальнейшем это значительно усложнит процесс обновления системы, так как вам придется при каждом релизе сравнивать ваши измененные схемы СКД с типовыми от 1С.

Рекомендуем использовать более современные и безопасные механизмы:

  1. Внешние печатные формы (ВПФ). Оставьте типовой отчет ПечатнаяФормаТ8 в покое. Создайте внешнюю обработку, которая будет подключаться через подсистему "Дополнительные отчеты и обработки". В модуле объекта этой обработки вы сможете написать любой код, сделать запросы к нужным регистрам для получения вашей дополнительной информации и вывести ее в собственный независимый макет.
  2. Расширения конфигурации. Если требуется лишь небольшое косметическое изменение или добавление поля, вы можете добавить форму или модуль формирования печатной формы в Расширение. Перехватив процедуру формирования печати приказа (например, с аннотацией &После или &Вместо), вы сможете внедрить свои данные без изменения основной конфигурации.

Подводя итог, если вы все же решили править типовой объект, обязательно проверяйте системный регистр МакетыКомпоновкиДанных. Именно там скрывается основная причина того, что 1С:ЗУП "не видит" ваши новые поля в кадровых приказах.

← На главную