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

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

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

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

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

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

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

17 Comments

  1. Поручик

    (0) В типовых на 8.1. по другому делается?

    Reply
  2. Mamakan

    Да одинаково все и в 8.1, и в 8.2

    Reply
  3. gutentag

    Спасибо, пошел тренироваться 🙂

    Reply
  4. serega_sun

    По другому делается в УТ-11

    Reply
  5. pumbaE

    (4) Более общий случай по другому делается в БСП.

    Reply
  6. miaso

    В управляемых все по другому. А в типовых «старых» есть прекрасный шаблон http://infostart.ru/public/67060/ в котором не нужно ничего переименовывать и как написано в описании выдирается любая печать за 5 минут.

    Reply
  7. Lyolik

    Спасибо за инструкцию. Все ясно и коротко.

    Reply
  8. Sean1s

    Да, спасибо! Очень чётко, кратко и понятно.

    Reply
  9. vikylena

    Спасибо! Очень нужная информация.

    Reply
  10. Alexey55

    Спасибо автору!

    Reply
  11. demanu

    Да всё так, ничего сложного нет. Для облегчения отладки можно приладить форму, добавить в неё реквизит СсылкаНаОбъект и написать обработчик для кнопки выполнить, что-то типа того:

    ТабДокумент = Печать();

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

    Это позволит избежать необходимости постоянного обновления во внешних обработках.

    Reply
  12. Spirit11

    Спасибо. В самый раз! была задача сделать внешний счет на оплату 🙂

    Reply
  13. apostal86

    Технология стара, для 8.1 и для 8.2 не управляемого приложения. Для 8.2, управляемых приложений (УТ ред. 11, УНФ, Документооборот) технология изменилась, и вышеописанный метод не подойдет. Найдите тут на инфостарте как делать внешние печатные формы, обработки таб.частей, ввод на основании, ссылку не помню.

    Reply
  14. viktorija-d

    Не знаю как сама внешняя печатная форма, но комментарий к ней отличный. Коротко ясно и последовательно. Сделала то,что необходимо мне буквально за 30 минут. Получила отличный результат за короткое время, руководствуясь алгоритмом действий. Огромное спасибо!!!!!!

    Reply
  15. finik

    Спасибо! Потратил три вечера, но сделал первую в жизни внешнюю форму….

    Reply
  16. natylit

    Уже не раз пришлось менять типовую форму. Спасибо за такую простую и полезную инструкцию

    Reply
  17. baton_pk

    немножко вклинюсь:

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

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

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

    Но потому как функция ничего не возвращает, то её результат есть Неопределено и второй вызов ничего не делает.

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

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *