Пример внешней печатной формы с возможностью типового изменения макета

24.02.26

Учетные задачи - Печатные формы

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Пример внешней печатной формы документа СчетНаОплатуПокупателю
.epf 10,27Kb
4 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

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

Сначала я проверил, что вообще влияет на видимость данного элемента в общей форме ПечатьДокументов - помимо прав проверяется заполнение свойства ПутьКМакету у элементов таблицы НастройкиПечатныхФорм, которое в свою очередь заполняется из свойства ПолныйПутьКМакету элементов таблицы КоллекцияПечатныхФорм. Данную таблицу мы не раз видели в модуле объекта печатных форм - в нее мы помещаем сформированный табличный документ, имя макета и много чего ещё. Так почему же ПолныйПутьКМакету пустой? Ответ был найден в процедуре УправлениеПечатью.ПечатьПоВнешнемуИсточнику:

 

 

Значит, мы должны сделать так, чтобы МакетСуществует вернул нам Истина. Долго искать не пришлось:

 

 

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

Функция ПутьКМакету()
	Возврат "ВнешняяОбработка.ВнешняяПечатнаяФорма.ПФ_56f3852d-0d82-4f8b-9e6b-ed7b4aea8230";
КонецФункции

Начало строки может быть любым, проверяется лишь подстрока после последней точки.

Передаём наш путь в параметрах процедуры УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию:

УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, ИмяМакета, СинонимМакета, 
	ПечатьСчетаНаОплату(МассивОбъектов, ОбъектыПечати, ПараметрыПечати),, ПутьКМакету());

Но нашего макета всё ещё нет в справочнике МакетыПечатныхФорм. Добавляем следующие функции и процедуры для записи макета в справочник и его получения:

Процедура ЗарегистрироватьМакет(Заменить) Экспорт
	
	СсылкаМакета = Справочники.МакетыПечатныхФорм.СсылкаМакета(ПутьКМакету());
	
	Если СсылкаМакета = Неопределено Тогда
		Объ = Справочники.МакетыПечатныхФорм.СоздатьЭлемент();
	ИначеЕсли Заменить Тогда
		Объ = СсылкаМакета.ПолучитьОбъект();
		Объ.ИсточникиДанных.Очистить();
	Иначе
		Возврат;
	КонецЕсли;
	
	Объ.ТипМакета      = "MXL";
	Объ.Идентификатор  = Справочники.МакетыПечатныхФорм.ИдентификаторМакета(ПутьКМакету());
	Объ.Макет          = Новый ХранилищеЗначения(ПолучитьМакет("Макет"));
	Объ.Наименование   = "Внешняя печатная форма";
	Объ.ИсточникДанных = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Метаданные.Документы.СчетНаОплатуПокупателю);
	
	Стр = Объ.ИсточникиДанных.Добавить();
	Стр.ИсточникДанных = Объ.ИсточникДанных;
	
	Объ.Записать();
	
КонецПроцедуры
Функция МакетИзСправочника()
	
	Макет = Неопределено;
	
	Для НомерПопытки = 1 По 2 Цикл
		
		Макет = Справочники.МакетыПечатныхФорм.НайтиМакет(
			ПутьКМакету(), ОбщегоНазначения.КодОсновногоЯзыка());
		
		Если Макет <> Неопределено Тогда
			Прервать;
		КонецЕсли;
		
		Если НомерПопытки = 1 Тогда
			ЗарегистрироватьМакет(Ложь);
		Иначе
			ВызватьИсключение "Макет не найден";
		КонецЕсли;
		
	КонецЦикла;
	
	Возврат Макет;
	
КонецФункции

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

 

 
 Проверка работоспособности

 

 

При последующей печати будет запрошен уже отредактированный пользователем макет. На всякий случай добавим возможность сбросить изменения - для этого я добавил команду в основную форму со следующим кодом на сервере:

	ОбъектОбработки = РеквизитФормыВЗначение("Объект");
	ОбъектОбработки.ЗарегистрироватьМакет(Истина);
	Сообщить("Макет успешно восстановлен");

Тестировалось на 1С:Бухгалтерия предприятия, редакция 3.0

Проверено на следующих конфигурациях и релизах:

  • Бухгалтерия предприятия, редакция 3.0, релизы 3.0.191.41

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    39467    111    48    

125

Печатные формы Взаиморасчеты Оптовая торговля Производство готовой продукции (работ, услуг) Акт сверки Бухгалтер Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Управленческий учет Платные (руб)

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

17080 руб.

13.03.2018    70188    265    80    

122

Печатные формы Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Транспорт, автопарки, такси Бухгалтерский учет Платные (руб)

Учет путевых листов выполнен в виде расширения. Предназначен для учета путевых листов в конфигурации БП 3.0., УТ 11.5 и КА 2.5 Печатная форма: Типовая межотраслевая форма № 3. Утверждена постановлением Госкомстата России от 28.11.97 № 78. Типовая межотраслевая форма № 4-П от 18.09.2008 г. N 152 с учетом изменений указанных в Приказе Министерства транспорта Российской Федерации №368 от 11 сентября 2020 г. №368, Типовая межотраслевая форма № ЭСМ-7, и др. ЭСМ-2, 4-С, 3 спец., 6 спец., ПЛ для Автомобильного крана.

5000 руб.

14.10.2019    46474    335    216    

236

Печатные формы Учет рабочего времени Учет ОС и НМА Бухгалтер 1С:Предприятие 8 1С:ERP Управление предприятием 2 1C:ERP Транспорт, автопарки, такси Оптовая торговля, дистрибуция, логистика Россия Бухгалтерский учет Управленческий учет Платные (руб)

Программа для автоматизации учета путевых листов в 1С - расширение, добавляющее в конфигурацию "ERP", документ Путевой лист и печатные формы установленных образцов для легковых и грузовых авто, расчет и списание нормативного количества топлива, отчет "Реестр путевых листов" с отбором по автомобилю и по водителю (через настройки) Позволит контролировать расход топлива, потому что сразу будет виден сверхнормативный расход.

25620 руб.

23.07.2025    5602    13    0    

11

Печатные формы НДС 22% 1С 8.3 1С:Управление торговлей 10 1С:Управление производственным предприятием Бухгалтерский учет Налоговый учет Платные (руб)

Решение для работы с новой графой 5б в УПД и Счете-фактуре с 01.04.2026 года для конфигураций 1С:УТ 10.3, 1С:УПП 1.3 и 1С:КА 1.1. Обеспечивает корректную печать универсальных передаточных документов и счетов-фактур в соответствии с изменениями в статье 169 НК РФ, заполняет обязательные поля - порядковый номер и дату авансового счета-фактуры при зачете предоплаты. Подключается как внешняя печатная форма в конфигурацию 1С, поддерживает все стандартные требования и имеет открытый исходный код для адаптации под ваши бизнес-процессы.

6100 руб.

19.12.2025    5994    48    27    

47

Печатные формы Пакетная печать 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Печать (приемо - сдаточных актов) ПСА, заявления, журнала покупок и реализаций. Подходит для фреш.

6100 руб.

10.09.2025    2048    12    2    

12

Печатные формы Логистика, склад и ТМЦ Бухгалтер 1С:Предприятие 8 1С:Комплексная автоматизация 2.х Транспорт, автопарки, такси Оптовая торговля, дистрибуция, логистика Россия Бухгалтерский учет Управленческий учет Платные (руб)

Программа для автоматизации учета путевых листов в 1С - расширение, добавляющее в конфигурацию "Комплексная автоматизация", документ Путевой лист и печатные формы установленных образцов для легковых и грузовых авто, расчет и списание нормативного количества топлива, отчет "Реестр путевых листов" с отбором по автомобилю и по водителю (через настройки) Позволит контролировать расход топлива, потому что сразу будет виден сверхнормативный расход.

13420 руб.

27.06.2023    8568    29    2    

30
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Viktor_Ermakov 402 25.02.26 09:04 Сейчас в теме
Добрый день. А Вам документация по Вашей версии БСП не помогла? Там же описано как это делать.
2. Tarlich 86 02.03.26 21:06 Сейчас в теме
Спасибо ! Взял за шаблон , теперь свои ВПФ буду делать таким способом
Для отправки сообщения требуется регистрация/авторизация