Как найти и изменить макет Счета из документа Заказ покупателя в 1С:УНФ?

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

При работе с современными конфигурациями на платформе «1С:Предприятие 8.3», такими как «1С:Управление нашей фирмой» (УНФ) или «1С:Бухгалтерия», разработчики часто сталкиваются с трудностью поиска макетов печатных форм. Типичная ситуация: вам нужно отредактировать печатную форму счета, вы открываете документ ЗаказПокупателя в конфигураторе, переходите на вкладку «Макеты», но нужного шаблона там нет. Нет его и в общих макетах конфигурации.

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

Почему макета нет внутри документа? Архитектура БСП

В современных конфигурациях 1С вывод документов на печать централизован. Разработчики отказались от хранения макетов внутри каждого отдельного документа для унификации кода и упрощения обновлений. Когда пользователь нажимает кнопку «Печать» -> «Счет на оплату» в документе ЗаказПокупателя, система выполняет следующие действия:

  1. При создании формы документа вызывается процедура интеграции печати БСП.
  2. Система обращается к модулю менеджера документа ЗаказПокупателя и выполняет экспортную процедуру ДобавитьКомандыПечати(КомандыПечати).
  3. В этой процедуре регистрируются все доступные для документа команды печати. Для строки «Счет на оплату» создается команда, у которой в свойстве МенеджерПечати перенаправляется вызов на другой объект конфигурации — специализированную обработку печати.
  4. Программа передает управление этой обработке (например, Обработка.ПечатьСчетовНаОплату), которая физически содержит и сам макет (табличный документ), и код для его заполнения данными.

Посмотрим на пример того, как выглядит регистрация команды печати в модуле менеджера документа:


Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "СчетНаОплату";
	КомандаПечати.Представление = НСтр("ru = 'Счет на оплату'");
	КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
	КомандаПечати.Порядок = 10;
	
КонецПроцедуры

Как мы видим, свойство МенеджерПечати явно указывает на обработку Обработка.ПечатьСчетовНаОплату. Именно там нам и нужно искать макет.

Шаг 1. Поиск макета через Конфигуратор

Для того чтобы быстро найти нужный макет в дереве метаданных, выполним следующие действия:

  1. Откроем конфигуратор и найдем документ ЗаказПокупателя.
  2. Откроем Модуль менеджера этого документа.
  3. С помощью глобального поиска (сочетание клавиш Ctrl + F) найдем процедуру ДобавитьКомандыПечати.
  4. Проанализируем зарегистрированные команды. Найдем строку, отвечающую за команду «Счет на оплату» или «Счет», и определим имя объекта в параметре МенеджерПечати. Обычно в «1С:УНФ» это обработка ПечатьСчетовНаОплату.
  5. Перейдем в ветку дерева метаданных Обработки -> ПечатьСчетовНаОплату.
  6. Раскроем ветку Макеты у найденной обработки. Там будет находиться необходимый макет, например, ПФ_MXL_СчетНаОплату или аналогичный.

Шаг 2. Как правильно отладить процесс формирования печатной формы?

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

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

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

Пример структуры процедуры печати в модуле менеджера обработки:


Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	
	ПараметрыВывода.ДоступнаПечатьПоАдресу = Истина;
	
	// Проверяем наличие нашей печатной формы в коллекции
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетНаОплату") Тогда
		
		// Получаем макет из текущей обработки
		ТабличныйДокумент = СформироватьПечатнуюФормуСчета(МассивОбъектов, ОбъектыПечати);
		
		// Регистрируем результат в коллекции
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
			КоллекцияПечатныхФорм, 
			"СчетНаОплату", 
			"Счет на оплату", 
			ТабличныйДокумент
		);
		
	КонецЕсли;
	
КонецПроцедуры

Шаг 3. Изменение макета без Конфигуратора (в режиме «1С:Предприятие»)

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

  1. Перейдите в раздел Настройки (в некоторых версиях — Компания -> Администрирование).
  2. Выберите пункт Печатные формы, отчеты и обработки, а затем перейдите по гиперссылке Макеты печатных форм.
  3. В открывшемся списке найдите макет счета. Для быстрого поиска можно использовать строку поиска, введя «Счет на оплату (Заказ покупателя)».
  4. Нажмите кнопку Изменить. Система откроет встроенный редактор табличных документов, который визуально напоминает Excel.
  5. Внесите необходимые правки и нажмите Записать и закрыть.

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

Альтернативный вариант: редактирование «на лету»

Рассмотрим еще один полезный лайфхак. Вы можете перейти к редактированию макета непосредственно при просмотре готового печатного документа:

  1. Откройте документ Заказ покупателя и выведите счет на печать.
  2. В окне предварительного просмотра нажмите кнопку Еще (в правом верхнем углу формы) и выберите пункт Изменить макет.
  3. Система переведет форму в режим редактирования шаблона. После сохранения изменений все последующие счета будут выводиться с учетом внесенных правок.

Важное замечание по настройке реквизитов, логотипов и факсимиле

Очень часто макет счета ищут для того, чтобы добавить логотип компании, подписи руководства или условия оплаты заказа. Настоятельно рекомендуем проверить стандартные возможности «1С:УНФ» перед внесением изменений в макет. Разработчики конфигурации уже предусмотрели эти настройки в пользовательском интерфейсе:

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

← На главную