Как отредактировать макет печатной формы в управляемом интерфейсе 1С

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

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

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

Выясняем причину: механизм приоритета макетов в БСП

В конфигурациях на управляемых формах формирование печатных форм осуществляется через механизмы подсистемы «Печать». Когда вызывается процедура формирования документа, программа обращается к методу:


Макет = УправлениеПечатью.ПолучитьМакет("Документ.РеализацияТоваровУслуг.ПФ_MXL_Накладная");

Проанализируем алгоритм работы этой функции. Перед тем как прочитать макет из метаданных конфигурации, система проверяет регистр сведений ПользовательскиеМакетыПечати. Если пользователь или администратор хотя бы один раз открывал и сохранял макет в режиме «1С:Предприятие», в этом регистре создается индивидуальная копия табличного документа.

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

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

Возврат к типовому макету из метаданных

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

  1. Откроем режим «1С:Предприятие».
  2. Перейдем в раздел Администрирование — Печатные формы, отчеты и обработки — Макеты печатных форм.
  3. Найдем в списке нужную печатную форму (например, «Накладная» документа «Реализация товаров и услуг»). Макеты, отредактированные пользователем, визуально выделяются в списке (обычно специальным значком или жирным шрифтом).
  4. Нажмем кнопку Использовать стандартный макет (или удалим пользовательскую настройку).

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

Редактирование макета и отображение областей в режиме предприятия

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

Рассмотрим, как включить визуализацию именованных областей в режиме «1С:Предприятие»:

  1. В списке макетов печатных форм откроем требуемый табличный документ для редактирования.
  2. Кликнем левой кнопкой мыши по любой ячейке открывшегося табличного документа, чтобы фокус ввода перешел на него.
  3. В главном системном меню программы (верхняя панель окна 1С) найдем появившийся пункт Таблица.
  4. Перейдем по цепочке пунктов: Таблица — Имена — Отображение именованных строк/колонок и активируем его.

После включения этого режима по краям таблицы отобразятся цветные полосы с именами областей (например, «Шапка», «Строка», «КолонкаКодов», «Подвал»). Теперь можно визуально контролировать, чтобы новая ячейка расширяла границы существующей именованной области, а не выпадала за её пределы.

Посмотрим на пример кода, с помощью которого программа получает и заполняет составную область строки:


ОбластьКодов = Макет.ПолучитьОбласть("Строка" + СуффиксОбластиТаблицы + "|КолонкаКодов" + СуффиксОбластиТаблицы);
ОбластьКодов.Параметры.НовыйПараметрКода = ЗначениеРеквизита;
ТабличныйДокумент.Присоединить(ОбластьКодов);

Если ячейка с параметром НовыйПараметрКода не включена в именованную область по горизонтали или по вертикали, вызов ОбластьКодов.Параметры.НовыйПараметрКода приведет к ошибке отсутствия свойства.

Особенности базовых версий и перенос изменений между базами

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

Файл конфигурации .cf хранит только структуру метаданных и программный код. Поскольку пользовательские макеты хранятся в виде записей в таблице базы данных (регистр сведений ПользовательскиеМакетыПечати), они не включаются в состав файла .cf. Для их тиражирования используем один из двух подходов:

  1. Экспорт и импорт макета: в исходной базе открываем отредактированный макет в режиме предприятия, сохраняем его как табличный документ (.mxl) на жесткий диск. В целевой базе открываем макет через администрирование и загружаем сохраненный файл.
  2. Перенос регистра сведений: выгружаем данные регистра ПользовательскиеМакетыПечати при помощи обработки «Выгрузка и загрузка данных XML».

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

← На главную