В современных конфигурациях 1С (таких как БП 3.0, ERP 2.5, КА 2.5, УТ 11), построенных на базе Библиотеки стандартных подсистем (БСП), задача изменения макета печатной формы перестала быть тривиальной. Часто программисты сталкиваются с ситуацией: макет в конфигураторе изменен, а бухгалтер при печати документа по-прежнему видит старую форму. В этой статье мы подробно разберем, как устроена система печати, где искать нужные объекты и почему ваши изменения могут «игнорироваться» системой.
Первое, что мы должны проанализировать, — это дата документа. Фирма 1С поддерживает актуальность печатных форм в соответствии с постановлениями Правительства РФ (№1137, №1096, №951, №1434 и др.). Логика выбора макета жестко привязана к дате формирования документа.
Рассмотрим пример с Универсальным передаточным документом (УПД). Если вы редактируете макет с индексом 1096, а документ выписывается текущей датой 2024 года, система, скорее всего, выберет более свежий макет (например, соответствующий изменениям по Постановлению №534). Проанализируем список доступных макетов в конфигурации:
ПФ_MXL_УниверсальныйПередаточныйДокумент951ПФ_MXL_УниверсальныйПередаточныйДокумент1096ПФ_MXL_УниверсальныйПередаточныйДокумент_Приказ634Важное правило: если изменения законодательства вступили в силу, программа автоматически переключается на новый макет. Чтобы найти актуальный, нужно либо изучить код модуля менеджера, либо проверить все похожие макеты в ветке Общие макеты или внутри обработки ПечатьОбщихФорм.
Разберем основные места хранения макетов УПД и Счетов-фактур. В типовых решениях они редко привязаны напрямую к объекту Документ.СчетФактураВыданная. Чаще всего они вынесены в общие области для использования разными документами (Реализация, Авансовый отчет и т.д.).
ПФ_MXL_УниверсальныйПередаточныйДокумент.... Именно здесь хранятся эталонные формы для всей системы.ПечатьОбщихФорм — «Макеты». Здесь 1С часто группирует формы счетов-фактур, корректировочных справок и УПД.Выясним причину, по которой макет может находиться в обработке: это позволяет БСП использовать единый механизм печати для «полконфы», не дублируя код в каждом документе.
Это самая частая причина «неработающих» правок программиста. В 1С существует механизм пользовательского редактирования форм. Если пользователь зашел в меню «Администрирование — Печатные формы, отчеты и обработки — Макеты печатных форм» и внес там любое изменение, система создает копию макета в базе данных (в хранилище значений).
Приоритет системы:
1. Сначала 1С ищет измененный макет в справочнике пользовательских макетов.
2. Если он найден — используется он. Изменения в Конфигураторе при этом полностью игнорируются.
3. Если пользовательского макета нет — берется макет из Конфигуратора.
Чтобы ваши правки из Конфигуратора вступили в силу, выполните следующие шаги:
Если визуальный поиск не дает результатов, воспользуемся самым надежным методом — отладкой. Нам нужно найти точку, где программа обращается к макету. Посмотрим на алгоритм действий:
1. Откройте модуль менеджера документа СчетФактураВыданная (или того объекта, из которого запускается печать).
2. Найдите процедуру Печать. В современных конфигурациях она обычно вызывает функции из общих модулей печати.
3. Установите точку останова в процедуре Печать и запустите формирование формы. Проанализируйте значение переменной, отвечающей за имя макета. Чаще всего код выглядит так:
// Пример логики в общем модуле или модуле менеджера
Если ДатаДокумента < ДатаНовогоПостановления Тогда
ИмяМакета = "ПФ_MXL_УниверсальныйПередаточныйДокумент1096";
Иначе
ИмяМакета = "ПФ_MXL_УниверсальныйПередаточныйДокумент_Актуальный";
КонецЕсли;
Макет = УправлениеПечатью.МакетПечатнойФормы(ИмяМакета);
Особое внимание уделите модулю МенеджерПечатиУПД или УчетНДСПереопределяемый. Именно там прописана логика: «Если условие X, то использовать макет Y».
Разберем еще две ситуации, когда правка макета в конфигурации не приносит результата:
Внешние формы: Проверьте раздел «Администрирование — Дополнительные отчеты и обработки». Если для документа подключена внешняя печатная форма с тем же именем («Универсальный передаточный документ»), то система может быть настроена на использование именно внешнего файла .erf. В этом случае правки нужно вносить во внешний файл и перезагружать его в справочник.
Электронный документооборот (ЭДО): Помните, что если вы правите визуальный макет (MXL), это влияет только на печать на бумагу или сохранение в PDF. Если бухгалтер отправляет УПД через ЭДО, формируется XML-файл по строгому формату ФНС. Изменение макета MXL никак не изменит данные в XML-пакете.
Когда вы наконец нашли нужный макет, обратите внимание на свойства ячеек, которые хотите изменить. В 1С ячейка может иметь заполнение типа «Текст», «Параметр» или «Шаблон».
Параметр (например, ДатаДокумента), то при формировании печати код модуля менеджера обязательно перезапишет всё, что там написано, своими данными.Текст.Шаблон и конструкцию вида: Дата: [ДатаДокумента].Проанализируем ситуацию: автор сообщения вносил изменения, но «ничего не изменилось». Скорее всего, он менял текст в ячейке, которая программно заполняется как Параметр, либо редактировал макет, который не соответствовал дате документа.
После внесения изменений в макет через Конфигуратор и обновления базы данных (F7), иногда требуется очистить кэш. Это касается как серверного кэша, так и локального кэша пользователя. Самый простой способ убедиться, что изменения применились — перезапустить сеанс 1С:Предприятия. Если и это не помогло, проверьте еще раз пункт №3 (Пользовательские макеты) — в 90% случаев причина именно там.
Подведем итог: для успешного редактирования макета УПД нужно действовать последовательно: убедиться в отсутствии пользовательских копий макета, определить актуальную версию по дате документа через отладку в модуле менеджера и проверить свойства заполнения ячеек в самом макете.