Нередко разработчики и администраторы 1С сталкиваются с ситуацией: в конфигураторе открыт нужный документ, в его макете скорректирован текст, добавлены или удалены колонки, изменения сохранены, однако при формировании печатной формы в режиме «1С:Предприятие» печатный бланк остается прежним. Разберем по шагам, почему так происходит и как исправить эту проблему.
Самая распространенная причина кроется в специфике двухуровневой структуры метаданных платформы 1С. В конфигураторе существует основная конфигурация (в которой ведется редактирование) и конфигурация базы данных (с которой работают пользователи в режиме предприятия).
Когда мы редактируем табличный документ макета и нажимаем стандартное сохранение файла (комбинация клавиш Ctrl + S), изменения сохраняются только в разрабатываемой конфигурации. Для того чтобы они вступили в силу для пользователей, выполним следующий порядок действий:
Проанализируем ситуацию, когда база данных обновлена и сеанс перезапущен, но изменений по-прежнему нет. В типовых и доработанных конфигурациях печать стандартных документов часто переопределяется через механизм дополнительных обработок.
Если кнопка печати в документе перехвачена внешней печатной формой, система полностью игнорирует встроенный макет объекта. Выясним причину через интерфейс программы:
Рассмотрим структуру метаданных конфигурации подробнее. Нередко процедура формирования печатной формы обращается не к подчиненному макету конкретного документа, а к объекту из общей ветки метаданных.
Печать или процедура формирования табличного документа).ПолучитьОбщийМакет("ИмяМакета"), то редактировать нужно именно общий макет, а не вложенный макет документа ЭтотОбъект.ПолучитьМакет("ИмяМакета").В конфигурациях, созданных на базе БСП, встроен механизм пользовательского редактирования бланков без захода в конфигуратор. Принцип работы подсистемы устроен так: если для печатной формы хотя бы один раз было сохранено изменение пользователем в режиме предприятия, система навсегда отключает чтение макета из метаданных конфигуратора.
Чтобы вернуть использование макета из конфигуратора, выполним следующие шаги:
Если в информационной базе используются расширения, макет или процедура печати могут быть перехвачены ими. Проверим наличие расширений:
&Вместо, то платформа будет выводить макет из расширения, игнорируя изменения в основной конфигурации.Если все предыдущие проверки не дали результата, имеет место зависание клиентского кэша, что регулярно случается после динамического обновления конфигурации базы данных.
/ClearCache.1C:Enterprise Server Agent.Бывают ситуации, когда текст в макете визуально изменен (например, статическая надпись в шапке), но при печати выводится старое значение. Это связано с тем, что в модуле печати разработчик мог жестко переопределить значение ячейки программным способом.
Посмотрим на пример в коде процедуры печати:
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.Организация = ШапкаДокумента.Организация;
// Явное переопределение текста ячейки в обход макета:
ОбластьШапка.Области.НазваниеДокумента.Текст = "Гарантийный талон (старый формат)";
ТабДокумент.Вывести(ОбластьШапка);
В приведенном примере любые правки текста внутри области макета с именем НазваниеДокумента будут затираться программным кодом. В таких случаях необходимо корректировать не только макет, но и соответствующий модуль формирования печатной формы.