Пример внешней печатной формы «Счет на оплату покупателю» для БП 3.0.64.28
Процесс отладки внешней печатной формы достаточно трудоёмкий, здесь на Инфостарте есть различные отладчики внешних печатных форм, но они тоже имеют некоторые недостатки, вот решил "наваять свою нетленку" на эту тему 🙂
Обработка представляет из себя внешнюю печатную форму, которая подключается типовым механизмом "Печатные формы, отчеты и обработки", но если в режиме Предприятия открыть обработку через Меню, Файл, Открыть, то откроется окно отладки этой печатной формы.
В открытой обработке указываем Объект печати и Имя печатной формы, нажимаем кнопку [Печать] и видим что получилось.
Переходим в конфигуратор, что-то меняем, сохраняем обработку, Возвращаемся в пользовательский режим, нажимаем кнопку [Переоткрыть форму], при этом закрывается текущая форма, открывается исправленная и сразу формируется новая печатная форма.
Если при формировании печатной формы выявились ошибки, то они выходят в сообщении. Для явного отображения ошибки нужно ещё раз нажать кнопку [Печать]
В режиме отладки все точки останова отрабатываются корректно, т.к. не используются другие обработки.
Описание обработки берётся из реквизитов обработки
Название печатной формы прописывается в СИНОНИМЕ МАКЕТА, т.е. одна обработка может содержать в себе несколько печатных форм.
Имя процедуры печати формируется из ИМЕНИ МАКЕТА в таком виде: "Печать_"+ИмяМакета
Места, где нужно вставлять свои программные модули, отмечены %изм%
Прикрепленная обработка настроена на документ ПриемНаРаботу и работает в ЗУП 3.1 и БП 3.0, для других конфигураций протестировать "сходу" не получится 🙁
В общем и целом в обработке нет ничего революционного, но её использование очень облегчает отладку печатных форм.
В обработке используются наработки других авторов, но за давностью у кого что взял не вспомню, но всё равно огромное вам спасибо 😉
Обновление 19.07.2024.
Добавил внешнюю печатную форму счета с синей печатью.
Пришлось это сделать т.к. 1С опять учудила и теперь вывод синей печати настраивается флажком (раньше была отдельная печатная форма) и теперь чтобы отправить счет на e-mail приходится сначала выводить форму счета, потом ставить флажок и только потом отправлять 🙁 и флажок (редиска) запоминается и при печати ТОРГ-12 тоже выводит синюю печать… надеюсь они исправятся, а пока буду использовать ВПФ
Просто спрошу: А чем не устраивает обычный отчёт с реквизитами-параметрами, который вызывает нужную проц-у из модуля объекта? Отладка стопроцентная и никаких трудоёмких действий.
Просто для тех, кому нужна отладка, может расскажете плюсы Вашей разработки?
(2) не скажу про все внешние отладочные отчеты, видимо мне не повезло 🙂 но то, что использовал требовало каждый раз перевыбирать файл обработки иначе вешний отчет вызывал что-то из кэша и точка остановки не срабатывала. Ну и закрывать окно печатной формы приходится постоянно. Вот сейчас проверил обработкуhttps://infostart.ru/public/138731/ — не сработала точка остановки — разбираться в чужом коде «не наш путь» — сделал своё и решил поделиться
(2) А чем не устраивает обычный отчёт с реквизитами-параметрами,
А можно подробнее, что за отчет?
(4) Например, надо создать отлаживаемую печатную форму для документа. Делаю отчёт, где в модуле объекта формирую утверждённую ф-ию «печать», формата
Функция Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода, ЭтоОтладка=Ложь) Экспорт
В этой ф-ии формирую отчёт по правилам БСП.
Далее создаю реквизиты «ПоОбъекту», который имеет тип любого документа и «ИмяМакета», который просто строка. Далее на форме в первый реквизит выбираю нужный документ, а во второй вписываю имя нужного макета. Ещё на форму кидаю таб.док-т, на который всё буду выводить. В модуле формы пишу что-то вроде
Показать
Готово. Образец для отладки любых печатных форм готов. Если в БСП что-то поменяют, то достаточно изменить утверждённую функцию и вызов к ней.
Просто вот честно, не понимаю чего там сложного. На всё про всё минут 10-30 первый раз уходит, а потом вообще нисколько.
По такому же алгоритму набросал и остальные шаблоны.
(5) Всё так, только не понятно это описание самой обработки внешней печатной формы или дополнительной обработки для отладки?
(6) Сама внешняя печатная форма. Настраиваете её, отлаживаете и потом «скармливаете» БСП.
Я так понимаю забрал у кого-то хлеб? Да?
(7) Хлеб берут не тут 🙂
Да моя обработка именно это и делает, плюс переоткрытие одной кнопкой, а не Меню,Файл,Открыть как у тебя 🙂
запоминание последнего объекта и удобный механизм нескольких макетов… ничего сложного, но всё для удобства
я так и написал в описании «В общем и целом в обработке нет ничего революционного, но её использование очень облегчает отладку печатных форм»
Наверно все продвинутые себе такое уже сделали, один я мучился дополнительными обработками отладки 😉
(8) В таком случае, Максим, я спокоен, т.к. Ваша разработка предназначена как раз для тех, кто не сможет из моих выкладок выявить что-то полезное для себя.
(9) Я тоже успокоился — ни кому это не нужно 🙂
думал ещё выложить внешнюю обработку заполнения документов с (само)отладкой, но это так же никому не будет интересно 🙂
(3) Как-то забросилась та обработка за ненадобностью, уже давно используюhttps://infostart.ru/public/535969/
(11) Благодарю, полезная информация, возьму себе на вооружение, но моя обработка не про копирование типовых и их изменение, а про создание своих, где логика типовых не сильно помогает 🙂
(12) Создав из типовой ПФ ВПФ с помощью констурктора имеем заготовку с отладкой, в которой меняем заполнение табличного документа на любой — получаем созданную свою форму с формой для отладки, но…., тут на, как говорится — на вкус и цвет ….
(13) Да, разобрался, тебе осталось только прикрутить кнопку [Переоткрыть], очень удобно при отладке не нужно закрывать и открывать ВПФ
Все гораздо проще)https://infostart.ru/public/573461/
(15) Вот я бы не сказал, что это проще — на время отладки нужно обработку изменить, а перед тем как загружать обратно изменить, это очень не удобно ИМХО.
(16) Нет, обработка дорабатывается один раз — вставляется вызов внешней, который можно сразу удалить. Перед тем как загружать обратно ничего менять не нужно. Разве что безопасный режим — но он на работоспособность не влияет.
(17) как вариант «замороченной» отладки очень хорошо, но это подходит когда печатная форма делается «в один проход», т.е. сделал и больше не дорабатываешь. У меня пример трудового договора и пока будут отработаны все варианты условий может пройти много времени и постоянно менять вызов обработки, да ещё с прописыванием пути в самой обработке — не вариант. Но для отладки какой-нибудь чужой обработки буду пользоваться 🙂
(18) А его не надо менять «постоянно») Как нужно дорабатывать — делаем вызов один раз, потом загружаем в ИБ как есть — вызов внешней будет закомментирован. При последующих доработках его надо раскомментировать, вот и все. Я пробовал, когда еще сам был начинающим внешние отладчики — сейчас могу с уверенностью сказать что «замороченная» отладка — это как раз про них.
Единственное, где это может быть неудобно — если есть 100500 экспортных методов, т.к. отладка точечная. При таком варианте еще можно сказать что внешний отладчик удобнее — но вообще, странно если у одной внешней обработки настолько большой программный интерфейс.. Я с таким не сталкивался — обычно алгоритмы детализированы.
Превосходный шаблон!!! Спасибо!
вот это работает неправильно, нужно менять. Нельзя удалять строки в перебираемой таблице значений, кое что может и остаться.
Вот так что ли:
Показать
а в целом спасибо.
(13) а я вот ничего не понял, куда зайти что нажать, чтобы что-то удобное создать :)?
я ручками писал. О каком конструкторе идет речь?
(22) вотhttps://infostart.ru/public/535969/
(21) да, я согласен, что не правильно — в печатной форме счета уже сделано по другому, а в «шаблоне» забыл поправить, сейчас исправлюсь 🙂
теперь там сделано так:
в модуле объекта функция ПолучитьКоллекциюПечатныхФорм обзавелась параметром
Показать
а в модуле обработки нет удаления
благодарю за баг-репорт
и тем кто дочитает то этого комментария 🙂
отличие обработок «шаблон» и «счет»:
в «шаблоне» все данные для печати предварительно собираются в структуре ПараметрыДляПечати
а в «счете» данные для печати собираются в таблице значений (использовал типовой механизм ТаблицаСведений=ПечатьТорговыхДокументов.ПолучитьОписаниеСчетаНаОплату();