gifts2017

Шаблон внешней печатной формы в управляемом приложении. Пример создания печатной формы.

Опубликовал Леонид Лесин (Leoway) в раздел Печать - Печатные формы документов

Данная статья посещена для тех, кто пытается сделать внешнюю печатную форму в 1С на основе типовых форм. Отладка печатной формы в клиент-серверном варианте из под тонкого клиента.

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

 

Хочу поблагодарить автора Stradivari за хорошую статью http://infostart.ru/public/180159/, которая помогла мне в написании данной публикации.

Также автор Поручик с обработкой по отладке внешних печатных форм http://infostart.ru/public/73691/

Вступление.

Пример будет базироваться на типовом отчете из документа "СчетНаОплатуПокупателю". Файл шаблона можно взять во вложении.

 

Первый этап: Поиск типового шаблона и модулей

1. Скачиваем ИСХОДНЫЙ ШАБЛОН приложенный к данной статье "Шаблон печатной формы (УП).epf". 

 

2. Создаем копию ИСХОДНОГО ШАБЛОНА даем ему название на пример "СчетНаОплату.epf", далее открываем его в конфигураторе. Это будет наш ШАБЛОН, с которым мы будем далее работать.

 

3. В дереве конфигуратора находим документ, печатную форму которого мы планируем переделать. В нашем случае - это документ "СчетНаОплатуПокупателю"

 

  4. Копируем в буфер макет

 

5. Помещаем скопированный макет в наш ШАБЛОН "СчетНаОплату"

 

 

6. Открываем модуль менеджера документа "СчетНаОплатуПокупателю"

Находим процедуре "Печать".  Обратите внимание, что в данной процедуре находятся все функции печати документа.

Для примера я возьму одну из них:

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

Итак, как вы можете видеть нам нужна Функция "ПечатьДокумента". Найдем ее в модуле менеджера и скопируем в наш Шаблон.

 

7. Нажимаем на кнопку "Проверка модуля" или сочетание клавиш (Ctl+F7)

Получаем сообщение со списком ошибок:

     {ВнешняяОбработка.СчетНаОплатуПокупателя.МодульОбъекта(118,17)}: Процедура или функция с указанным именем не определена (ПолучитьТекстЗапросаДляФормированияПечатнойФормыСчетаНаОплатуПокупателю)
     Запрос.Текст = <>ПолучитьТекстЗапросаДляФормированияПечатнойФормыСчетаНаОплатуПокупателю(); (Проверка: Сервер)
{ВнешняяОбработка.СчетНаОплатуПокупателя.МодульОбъекта(138,3)}: Процедура или функция с указанным именем не определена (ВывестиЗаголовокПредупреждение)
     <>ВывестиЗаголовокПредупреждение(Шапка.Получатель, ТабличныйДокумент, Макет); (Проверка: Сервер)

Из текста предупреждения видно, что не хватает еще двух Функций/Процедур:

а. ПолучитьТекстЗапросаДляФормированияПечатнойФормыСчетаНаОплатуПокупателю()

б. ВывестиЗаголовокПредупреждение(Шапка.Получатель, ТабличныйДокумент, Макет)

 

Перенесем их из модуля менеджера документа СчетНаОплатуПокупателя в наш ШАБЛОН и повторно нажмем на кнопку "Проверка модуля".

 

8. Пункт 7 необходимо производить до тех пор, пока не появится сообщение:

     Синтаксических ошибок не обнаружено!

9. Остался последний нюанс.

      а. В ШАБЛОНЕ находим функцию ПечатьДокумента(), в ней находим строку где определяется переменная "Макет = " и комментируем ее.

      в. Вместо закомментированной строки определим переменную "Макет = " указав путь к нашему макету см. п.4.

 У вас должно получиться следующее:

      //Макет = УправлениеПечатью.ПолучитьМакет("Документ.СчетНаОплатуПокупателю.ПФ_MXL_СчетЗаказ");
     
Макет = ЭтотОбъект.ПолучитьМакет("ПФ_MXL_СчетЗаказ");


10. Заполним сведения о Печатной форме, которая находятся под Функция СведенияОВнешнейОбработке()

      а. Идентификатор    = "СчетНаОплатуПокупателя"   //Идентификатор внешней печатной формы

      б. Представление   =   "Счет";      //Имя команды в интерфейсе

      в. ПрефиксВПФ          = "Внешний";     //Префикс добавляемый к имени команды интерфейса, для отделения от встроенных команд (ХХХХХХХ)

      г. МассивНазначений = Новый Массив; //Массив объектов метаданных, для которых будут определены печатная форма

         МассивНазначений.Добавить("Документ.СчетНаОплатуПокупателю");  // в нашем случае - это документ СчетНаОплатуПокупателю. Название копируем из конфигуратора см. п.3. Может быть массив документов, если печатная форма работает с несколькими типами документов.

 

Всего за 10 пунктов мы смогли сделать внешнюю печатную форму, на основе типового СчетаНаОплату.

Далее вы дорабатываете его в соответствии с потребностями вашего предприятия.

 

И теперь самое приятное.

Данная обработка позволяет производить отладку в клиент-серверном режиме (в тонком клиенте).

 

Это был мой первый опыт написания подобных статей, прошу не судить строго.


Спасибо всем, кто дочитал до конца.


Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Шаблон печатной формы (УП)
.epf 10,33Kb
10.01.14
425
.epf 10,33Kb 425 Скачать
СчетНаОплату
.epf 17,99Kb
10.01.14
174
.epf 17,99Kb 174 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. DAnry (DAnry) 15.01.14 17:59
Спасибо, тема актуальна.
2. Nadin_.ka (SotNick) 18.02.14 21:41
Очень Вам благодарна! Сколько я промучилась с этими управляемыми формами для Камин 3.0, Ваша статья меня просто спасла:) Так все просто расписано. Спасибо, спасибо, спасибо!
3. Иванов Иван (Death_eye) 27.02.14 17:20
Спасибо, скачал только СчетНаОплату. Его и использую как шаблон.
4. Альберт (Alik_1c) 03.03.14 08:44
Ошибка БП 3,0 (3.0.30.12)

яКлиентСервер.Модуль(759)}: Неправильный формат параметра СтрокаВерсии1: 1.0
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
5. Альберт (Alik_1c) 05.03.14 06:16
6. Леопольд Роскошный (ЛеваРоскошный) 20.03.14 21:03
7. Алексей Заболотнов (z-alexey) 22.03.14 13:10
Есть ошибка. В строке:
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("1.0");

нужно заменить:
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("1.0.0.0");
rosys2; Apelsinka; Пончик; +3 Ответить 1
8. Alexey K (kanalex) 25.03.14 09:26
а вот такой вопрос теоритический...

Можно сделать внешнюю печатную форму и прикрутить ее не к документу, а к справочнику?
Например, кадры просят поправить формы, печать которых вызывается из элемента справочника сотрудников.
9. mikhailovaew (mikhailovaew) 08.04.14 17:23
(8) можно, механизм регистрации абсолютно тот же самый
10. qaz (pricec) 13.05.14 20:47
у меня не работает(
при запуске, через файл открыть

поле объекта недоступно для записи(ЭтотОБъект)

бухгалтерия 3.0.30.15

через дополнительные отчеты и обработки работает
11. Ирина Усачева (IrinaU) 21.07.14 10:39
Очень Вам благодарна за статью. Действовала аналогично, но не работало. Статья четко раскладывает все по полочкам. Теперь всё работает!!! Спасибо автору.
12. Сергей Ковтунов (79123890854) 23.09.14 10:13
Бухгалтерия предприятия 3.0.35.24
при запуске, через файл открыть
поле объекта недоступно для записи(ЭтотОБъект), как победить?
irbek; makcbol1; Yackov; +3 Ответить 2
13. Сергей Власкин (vlaskin) 12.11.14 13:56
14. Yackov . (Yackov) 21.11.14 09:41
15. Михаил Кончаренко (Anchoret) 19.12.14 12:33
(5) Alik_1c, что было, как решил?
16. Леонид Лесин (Leoway) 19.12.14 15:37
Измените имя переменно "ЭтотОБъект", на любое другое.
17. st13 (st13) 15.01.15 12:21
в новых версиях "ЭтотОбъект" - зарезервировано системой, нужно изменить название переменной и всё будет хорошо.
18. Alexander March (mavom) 29.01.15 15:21
19. Сергей Княгинин (Gremlin) 02.02.15 16:05
Спасибо тебе, добрый человек. Очень облегчил этот шаблон процесс создания печатных форм для моих капризных бухов.
20. Apelsinka (Apelsinka) 11.03.15 15:46
Спасибо за обработку, для обычного приложения уже попробовали, а тут приспичило для управляемых форм. Супер, все просто и понятно.
21. Apelsinka (Apelsinka) 11.03.15 15:47
(7) z-alexey, огромная благодарность)) сэкономила время))
22. Николай Долгих (nnickname) 26.03.15 10:42
Использовал для ERP 2.0. Не взлетало при отладке из формы обработки, пока не поменял в модуле формы
ОбъектыПечати = Новый Массив; 

на
ОбъектыПечати = Новый СписокЗначений;

А так хорошая обработка, спасибо!
23. Роман Данилюк (Roman_Go) 30.06.15 10:18
(12) 79123890854, переименую переменную например в фЭтотОбъект
фЭтотОбъект = РеквизитФормыВЗначение("Объект");
	МассивОбъектов = Новый Массив;
	МассивОбъектов.Добавить(Объект.СсылкаНаОбъект);
	
	ОбъектыПечати 		  = Новый СписокЗначений;
	КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм(фЭтотОбъект.Идентификатор);
	ПараметрыВывода 	  = УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода();

	фЭтотОбъект.Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
	
	ТабДок = КоллекцияПечатныхФорм[0].ТабличныйДокумент;
...Показать Скрыть
24. Андрей Логинов (Poplar) 26.06.16 19:02
Хороший шаблон. Решил воспользоваться. В результате сократил время на создание ВПФ.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа