Рассмотрим весьма распространенную проблему, с которой сталкиваются разработчики при доработке конфигурации 1С:Зарплата и Управление Персоналом 3.1. Допустим, вам поступила задача вывести дополнительную информацию в кадровый приказ об увольнении по форме Т-8. Вы находите соответствующий отчет в конфигураторе (например, ПечатнаяФормаТ8), вносите изменения в схему компоновки данных (СКД), добавляете нужные поля, корректируете макет. Однако, при попытке распечатать приказ из документа увольнения в режиме пользователя, ваши новые реквизиты упрямо не отображаются.
При этом, если открыть сам отчет через функции для технического специалиста и вручную добавить поля в настройках варианта, данные выводятся корректно. Проанализируем эту ситуацию подробно и выясним причину такого поведения системы, а также разберем по шагам все возможные пути решения.
Для начала давайте разберем архитектурную особенность современных конфигураций на базе БСП (Библиотеки стандартных подсистем), таких как ЗУП 3.1. Большинство сложных кадровых печатных форм здесь реализовано не через обычные табличные макеты документов, а через полноценные отчеты на базе СКД. Это сделано для гибкости и возможности получения данных из множества кадровых регистров без написания огромных запросов вручную.
Когда вы вносите изменения в СКД отчета прямо в конфигураторе, вы ожидаете, что система сразу начнет использовать новую схему. Но 1С применяет многоуровневое кэширование и сохранение настроек, чтобы ускорить формирование печатных форм. Система просто "не видит" ваши изменения, так как читает схему из сохраненных пользовательских или системных кэшей. Рассмотрим подробнее, где именно могут "застрять" старые настройки.
Это основная и самая частая причина, почему отчеты-печатные формы в ЗУП игнорируют обновления из конфигуратора. При первом обращении к печатной форме система читает схему компоновки из метаданных и сохраняет ее во внутренний системный регистр для ускорения последующих вызовов.
Выполним следующие шаги для решения проблемы:
МакетыКомпоновкиДанных.ПечатнаяФормаТ8).После удаления записи попробуйте снова сформировать приказ Т-8 из документа. Система обнаружит отсутствие кэша, обратится к конфигуратору, прочитает вашу измененную схему СКД и заново сохранит её в регистр. После этого дополнительные поля должны успешно появиться на печати.
Проанализируем еще одну частую ситуацию. Иногда разработчик бьется над макетом в конфигураторе, а результата нет, потому что макет переопределен пользователями в режиме предприятия. Механизм БСП позволяет администраторам и продвинутым пользователям менять шрифт, добавлять логотипы или скрывать строки без программирования.
Посмотрим на пример проверки пользовательских макетов:
В этом случае платформа жестко игнорирует макет из конфигуратора. Чтобы применить ваши программные доработки, вам необходимо выделить этот макет в списке и нажать кнопку Использовать стандартный макет. Иконка изменится, и система начнет брать макет из конфигурации.
Если добавленные вами поля в СКД все равно не появляются, возможно, "завис" вариант отчета. В 1С есть справочник ПредопределенныеВариантыОтчетов. Редактировать его напрямую вручную нельзя, но мы можем инициировать его программное обновление.
Рассмотрим, как это сделать. Вы можете запустить базу с параметром обновления, либо выполнить небольшой код через внешнюю обработку:
// Программный запуск обновления справочника вариантов отчетов
Справочники.ПредопределенныеВариантыОтчетов.ОбновитьДанныеСправочника();
Также можно запустить платформу из командной строки с ключом обновления. Это заставит систему перечитать все варианты отчетов из конфигуратора и актуализировать их настройки.
Если вы выполнили все вышеописанные действия, но старая форма продолжает формироваться, стоит исключить влияние платформенного кэша. Временные файлы 1С иногда сохраняют старые версии метаданных.
Для очистки кэша на локальном компьютере пользователя удалите временные папки информационной базы в профиле Windows. Если вы работаете в клиент-серверном варианте, иногда помогает перезапуск службы Агента сервера 1С:Предприятие или очистка сеансовых данных. Это гарантирует, что в память загрузится самая свежая версия вашей схемы компоновки данных.
Разберем важный методологический аспект. Вносить изменения в типовые отчеты и макеты непосредственно в основной конфигурации ЗУП 3.1 (снимая базу с поддержки или включая возможность изменения) — это не самая лучшая практика. В дальнейшем это значительно усложнит процесс обновления системы, так как вам придется при каждом релизе сравнивать ваши измененные схемы СКД с типовыми от 1С.
Рекомендуем использовать более современные и безопасные механизмы:
ПечатнаяФормаТ8 в покое. Создайте внешнюю обработку, которая будет подключаться через подсистему "Дополнительные отчеты и обработки". В модуле объекта этой обработки вы сможете написать любой код, сделать запросы к нужным регистрам для получения вашей дополнительной информации и вывести ее в собственный независимый макет.&После или &Вместо), вы сможете внедрить свои данные без изменения основной конфигурации.Подводя итог, если вы все же решили править типовой объект, обязательно проверяйте системный регистр МакетыКомпоновкиДанных. Именно там скрывается основная причина того, что 1С:ЗУП "не видит" ваши новые поля в кадровых приказах.