База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как создать расширение для изменения печатной формы документа в 1С? › Ответ в теме: Как создать расширение для изменения печатной формы документа в 1С?
Чтобы создать расширение и внести изменения в печатную форму документа в 1С (например, в документ «РеализацияТоваровУслуг»), можно сделать так:
1. Создаёте расширение конфигурации.
2. В расширении добавляете модуль менеджера документа, например, «Документ.РеализацияТоваровУслуг.МодульМенеджера».
3. Переопределяете процедуры, отвечающие за печать, с помощью аннотации &Вместо, чтобы добавить свою печатную форму или изменить существующую.
4. Создаёте свой макет печатной формы и добавляете его в расширение.
Пример кода из расширения для добавления новой печатной формы:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
&Вместо("ДобавитьКомандыПечати") Процедура Расш_ДобавитьКомандыПечати(КомандыПечати) Экспорт // Добавляем новую команду печати КомандаПечати = КомандыПечати.Добавить(); КомандаПечати.Идентификатор = "МояНоваяФорма"; КомандаПечати.Представление = "Моя новая печатная форма"; КомандаПечати.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати"; КомандаПечати.СписокФорм = "ФормаДокументаОбщая,ФормаДокументаТовары"; КомандаПечати.Порядок = 10; // Вызов типовой процедуры, если нужно // Оригинал.ДобавитьКомандыПечати(КомандыПечати); КонецПроцедуры &Вместо("Печать") Процедура Расш_Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "МояНоваяФорма") Тогда // Формируем табличный документ для печати ТабДок = Новый ТабличныйДокумент; // Здесь формируем содержимое табличного документа по своему макету Макет = УправлениеПечатью.МакетПечатнойФормы("ОбщийМакет.МояНоваяПечатнаяФорма"); УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "МояНоваяФорма", "МояНоваяФорма", ТабДок, , "ОбщийМакет.МояНоваяПечатнаяФорма"); ПараметрыВывода.Вставить("ФормироватьЭД", Истина); КонецЕсли; // Вызов типовой процедуры, если нужно // Оригинал.Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода); КонецПроцедуры |
5. Добавляете в расширение макет с именем «ОбщийМакет.МояНоваяПечатнаяФорма» (файл .mxl или .frx).
6. В настройках расширения отключаете «Безопасный режим» (иначе аннотация &Вместо не сработает).
7. Загружаете расширение в базу и проверяете, что в меню печати документа появилась новая форма.
Если хотите изменить существующую печатную форму (например, ТОРГ-12), то можно переопределить функцию печати этой формы, заменив макет на свой.
Рекомендую посмотреть подробный пример здесь:
https://infostart.ru/1c/articles/594348/
Там подробно описан весь процесс с кодом и объяснениями.