gifts2017

Еще раз о создании Внешней Печатной Формы на 8.2 из существующей

Опубликовал MaeXtro xxx (MaeXtro) в раздел Программирование - Практика программирования

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

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

1.Создать новую внешнюю обработку
2.В реквизиты добавить СсылкуНаОбъект можно неопределенный, но лучше на ДокументСсылка.Родитель
3.Скопировать Макет из родителя в новую обработку
4.Скопировать Процедуру Печать из модуля Родителя и превратить ее в Функцию Печать() Экспорт, именно так без параметров, если параметры необходимы описать их в теле функции
5.Скопировать все запрашиваемые функции и процедуры
6.Заменить прямые обращения к Реквизитам Родителя на 
         Реквизит=СсылкаНаОбъект.Реквизит;
7.Заменить ЭтотОбъект и ЭтотОбъект.Ссылка на СсылкаНаОбъект
8.Обратить Внимание! на вызов процедуры печати
было 
УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, ОбщегоНазначения.СформироватьЗаголовокДокумента(ЭтотОбъект, ""), НепосредственнаяПечать);

выдавало ошибку не найден "Номер"!!!
    
стало
УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер,   ОбщегоНазначения.СформироватьЗаголовокДокумента(СсылкаНаОбъект, ""), НепосредственнаяПечать);

PS Теперь можно править Макет (осторожней с изменением его названия)

Прилагаю рабочий вариант НовогоСчета для БП 2.0.25.5

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

Наименование Файл Версия Размер Кол. Скачив.
Пример ВнешнейПечатнойФормы
.epf 10,59Kb
17.07.13
77
.epf 10,59Kb 77 Скачать

См. также

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

Комментарии

1. Сергей Ожерельев (Поручик) 12.09.11 01:00
(0) В типовых на 8.1. по другому делается?
2. Константин Балаев (Mamakan) 12.09.11 06:50
Да одинаково все и в 8.1, и в 8.2
3. Igоr Sаulеviсh (gutentag) 12.09.11 11:47
Спасибо, пошел тренироваться :)
4. Сергей Дашков (serega_sun) 14.09.11 11:45
По другому делается в УТ-11
MaeXtro; pumbaE; +2 Ответить 1
5. Евгений Сосна (pumbaE) 14.09.11 13:39
(4) Более общий случай по другому делается в БСП.
6. Sergey (miaso) 14.09.11 18:10
В управляемых все по другому. А в типовых "старых" есть прекрасный шаблон http://infostart.ru/public/67060/ в котором не нужно ничего переименовывать и как написано в описании выдирается любая печать за 5 минут.
7. Леонид Квит (Lyolik) 15.09.11 12:59
Спасибо за инструкцию. Все ясно и коротко.
8. Sergey Anisimov (Sean1s) 16.09.11 05:43
Да, спасибо! Очень чётко, кратко и понятно.
9. Vilena Vik (vikylena) 16.09.11 09:43
Спасибо! Очень нужная информация.
10. Alexey Pak (Alexey55) 16.09.11 11:46
11. demanu 18.09.11 20:45
Да всё так, ничего сложного нет. Для облегчения отладки можно приладить форму, добавить в неё реквизит СсылкаНаОбъект и написать обработчик для кнопки выполнить, что-то типа того:

ТабДокумент = Печать();
УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент);

Это позволит избежать необходимости постоянного обновления во внешних обработках.
12. Spirit M (Spirit11) 20.09.11 01:39
Спасибо. В самый раз! была задача сделать внешний счет на оплату :)
13. Александр Журавлев (apostal86) 20.09.11 22:06
Технология стара, для 8.1 и для 8.2 не управляемого приложения. Для 8.2, управляемых приложений (УТ ред. 11, УНФ, Документооборот) технология изменилась, и вышеописанный метод не подойдет. Найдите тут на инфостарте как делать внешние печатные формы, обработки таб.частей, ввод на основании, ссылку не помню.
14. Виктория Данилевская (viktorija-d) 29.09.11 18:20
Не знаю как сама внешняя печатная форма, но комментарий к ней отличный. Коротко ясно и последовательно. Сделала то,что необходимо мне буквально за 30 минут. Получила отличный результат за короткое время, руководствуясь алгоритмом действий. Огромное спасибо!!!!!!
15. Игорь (finik) 06.10.11 21:10
Спасибо! Потратил три вечера, но сделал первую в жизни внешнюю форму....
16. Наталья Литвинова (natylit) 26.10.11 19:07
Уже не раз пришлось менять типовую форму. Спасибо за такую простую и полезную инструкцию
17. Сергѣй Батанов (baton_pk) 16.01.12 14:22
немножко вклинюсь:

4.Скопировать Процедуру Печать из модуля Родителя и превратить ее в Функцию Печать() Экспорт

процедуру переделываем в функцию не просто так! Эта функция должна вернуть табличный документ в качестве результата! Потому п. 8 теряет смысл: процедура Печать() в модуле документа получает табличный документ из функции Печать() внешней печ.формы и сама передаёт её в процедуру НапечататьДокумент().

В Вашем случае процедура НапечататьДокумент() вызывается дважды: во внешней обработке и в модуле документа.
Но потому как функция ничего не возвращает, то её результат есть Неопределено и второй вызов ничего не делает.

Нужно делать именно через результат функции, потому как в модуле документа ещё есть такие параметры, как КоличествоЭкземпляров, НаПринтер и НепосредственнаяПечать, которых нет во внешней печ. форме.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа