22.09.2014 — Выложил новую версию отладчика. Добавлена возможность просмотра табличного документа без регистрации ВПФ. Исправлены ошибки.
26.11.2024 — Версия 2.1, исправление от Borisych
05.01.2024 — Версия 2.0, исправлена регистрация ВНФ при установленном флаге «Вывести печатную форму» (спасибо Mx00 за сообщение об ошибке).
27.02.2024 — Версия 2.3, исправлены ошибки (спасибо CratosX), учтены пожелание (iiceberg, tormozit)
10.06.2024 — Версия 2.4, учтены пожелания Дмитрий74Чел
01.07.2024 — Версия 2.5, включены изменения от Дмитрий74Чел — возможность работы в клиент-серверном варианте, возможность просто изменять ВПФ без перевыбора. В заголовок выведена версия отладчика.
25.08.2024 — Версия 2.6, включены изменения от viollan
29.09.2024 — Версия 2.7, убрал ошибку для УТ 11, в платформе 8.3.8.2137 отладка не работает, даже если остановить код в самом отладчике — с новой платформой вас))) Создавайте ВПФ с формой для отладки…например с помощью http://infostart.ru/public/535969/
Для обычных форм использовал обработку из публикации //infostart.ru/public/92211/. Появилась необходимость сделать подобное для управляемого приложения — вот что получилось.
Обработка предназначена для отладки внешних печатных форм (ВПФ) в управляемом приложении (тестировалась в УТ 11 и БП.3.0).
При выборе обрабоки считываются сведения о регстрации из экспортной функции СведенияОВнешнейОбработке() модуля ВПФ.
Незаполненные реквизиты выделяются цветом. Тут можно проверить корректность сведений о регистрации до начала отладки.
В реквизит «Ссылка на объект» необходимо выбрать объект, для которого создана ВПФ (типы объектов в реквизит устанавливаются при выборе ВПФ).
Запуск обработки осуществляется так же, как из кофигурации для зарегистрированных ВПФ, если возникают ошибки ДО модуля обработки — что-то не так
в экспортной процедуре Печать ВПФ (не заданы/заданы некорректно параметры итд).
Устанавливаем точку останова в модуле ВПФ — можно отлаживать/изменять модуль.
Установка флага «Вывести печатную форму» приведет к регистрации ВПФ в справочнике «Допольнительные отчеты и обработки» и
выводу на экран сформированной уже через этот справочник печатной формы (т.е полностью проверяется цикл регистрации и выполнения ВПФ).
02.04.2014 Исправлено подключение ВПФ для текущей БСП
05.05.2014 Протестировал на БП 3.0.32.7, версия БСП 2.2.2.43
Спасибо!
(1) Sparko, Пожалуйста 🙂
Обработка пока ещё сырая — слепил на скорую руку.
Уже сейчас понял, что для разных конфигураций механизм регистрации и выполнения ВПФ пусть в мелочах, но отличается.
Хотелось бы услышать ваше мнение, о том, какой функционал можно было бы добавить, и какие проблемы возникают при использовании.
(3) Вот давно есть готоваяhttp://infostart.ru/public/73691/
(4) Поручик, Поиском не нашел, поэтому свою сделал 🙂 Я же не украл, да и функционал у меня получился чуть пошире.
Спасибо! Да, функционал по сравнению с сылкой у 4(Поручик) поинформативней и более глазу приятен!
(6) KliMich, Пожалуйста! Хотелось бы услышать что тут ещё можно добавить (исправить), мысли вроде есть, но хотелось бы получить мнение «со стороны».
Можно процедуру Печать() начинать со строк:
Попытка
нн = 10/0;
Исключение
КонецПопытки;
при отладке ставить «Остановку по ошибке»
при обычной работе не мешает
(8) slawa, Имеется ввиду процедура печать в ВПФ? Если да, то к этой обработке отношение не имеет, или я Вас не понял.
(9) Да, процедура Печать() в ВПФ.
Используя остановку прерывания по ошибке можно отлаживать ВПФ и без использования дополнительных обработок.
(10) slawa, Конечно можно — останавливаться будет обработка во временном файле, в которую можно внести изменения, потом её обязательно нужно будет руками перегистрировать запустить, если ошибка осталась, остановится уже другая обработка (имя временного файла каждый раз разное). Я не мазохист, мне проще взять любую ВПФ, пропустить через этот отладчик, даже не ставя точек останова — будет ошибка — перейти по ней именно в эту обработку и исправить. Да и отладчик нужен не только для исправления ошибок, но и для проверки/исправления алгоритмов ВПФ, даже для работающих обработок, кот. по ошибке не остановятся.
А так — дело вкуса — не нужен предлагаемый инструмент — не используем и всё 🙂
(11) Alex_E
Согласен.
Просто хотел обратить внимание на возможность программного прерывания работы ВПФ.
Обработка нужная. Появятся деньги обязательно скачаю.Автору спасибо
Автору спасибо! Очень полезная обработка, особенно когда нужно сделать 30 внешних печатных форм 🙁
Реальный инструмент, сильно облегчает жизнь 🙂
Спасибо!!!
(14), (15) Пожалуйста 🙂
а как именно отлаживать? ставлю точку останова в модуле внешней печатной формы, прогоняю ее через этот отладчик — он ее выводит на печать,но на точке останова не стопорится((( что я не так делаю?..
(17) Valery1303, На ум приходит только одно — в место остановки программа «не попадает» (то что программа должна быть запущена в режиме отладке это по умолчанию). Что бы точно остановить попробуйте точку останова поставить на первой строке процедуры:
Процедура Печать(МассивОбъектовНазначения, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
спасибо,попробую. Может,я ее запускала не так? Я запускала вашу обработку просто через файл-открыть.
(19) Tarley,
как запущена обработка не имеет значения, в принципе через файл открыть, для работы в базе клиента, это правильно, нет смысла регистрировать её в программе, т.к. пользователю она без надобности.
Жаль, что ни в одном из отладчиков не реализован клиентский вызов метода Печать(), есть печатные формы, у которых метод Печать() не модуле объекта, а в форме. У себя я реализовал такую возможность.
(21) Shuffler, Не совсем понятен комментарий. Что есть клиентский метод Печать()? Если мы говорим о внешних печатных формах — то механизм их подключения описан, и подразумевает что процедура или функция (управляемое/обычное приложение) печать находится в модуле. Если процедура или функция Печать() объявлена в модуле формы, то это именно внешняя печатная форма, подключаемая через механизм подключения внешних печатных форм, или отчет/обработка, с возможностью печати? Если последнее — то отладить такую обработку можно просто открыв её через Файл — Открыть и отлаживать не прибегая к каким либо дополнительным средствам.
(22) это именно внешняя печатная форма, форма используется как просто контейнер кода, она не показывается, но в ней можно вызвать открытие форм выбора контрагентов, к примеру. В конфе есть перечисление СпособыВызоваДополнительныхОбработок и там есть способ ВызовКлиентскогоМетода. Можете посмотреть как он работает. Если вкратце, то получаем форму обработки и из нее вызываем метод Печать()
Не удалось прочитать сведения о внешней обработке. Возможно она не предназначена для текущей конфигкрации!!!
Не загружается.
(26) Kaval88, Какая платформа? Какая конфигурация? Как открывали? Регистрировать обработку не надо — открывается через файл открыть.
1С:Предприятие 8.2 (8.2.17.169)
УТ 11.1
(28) Kaval88,
— Вы пытаетесь зарегистрировать обработку в дополнительных? Этого делать не нужно — она нужна для отладки внешних печатных форм, а не для пользователя в текущей работе, поэтому открывается через Файл — Открыть.
(29) нет через файл открыть.
(30) Kaval88, В левом верхнем углу окно в режиме предприятия есть кружочек с треугольничком вершинкой вниз, если нажать на него — вывалится меню, первый пункт там Файл
Не оч понял последний коммент, я открываю Вашу обработку в предприятии файл открыть, далее в обработке выбираю файл моей внешней обработки, в исключении вываливается ошибка описанная выше.
(32) Kaval88,
— теперь я понял, а чём Вы спросили, не моя обработка не открывается, а отлаживаемая! Поставьте точку останова в моей обработке на строке:
, при выборе внешней — там происходит чтение из процедуры СведенияОВнешнейОбработке() из модуля отлаживаемой, там будет видная причина сообщения.
Проверил на УНФ 1.4. Работает. Спасибо. Полезный инструмент.
(3) у меня похожая есть.. подскажите пожалуйста как ими пользоваться?
А то когда отладка идёт в конфигураторе — там я вроде понимаю..
Но когда отлаживаем внешнюю ВПФ через данную обработину-отладчик — я не пойму как ориментироваться..
В собственном модуле проблем и ошибок не показывает, но процесс отладки время от времени заходит как раз в эту обработку — отладчик.. Без неё ВПФ обычной формы не откроешь.
Так в чем суть? Когда процесс отладки заходит в обработку отладчик — здесь надо ориентироваться и и скать похожую процедуру чтобы открывалось без обработки-отладчика? Подскажите пожалуйста)
(36) Bukaska, В конфигураторе открываем ВПФ и ставим точку останова где нужно, или просто открываем модуль, если происходит вылет по ошибке. Отладчик запускаем в режиме учета, там указываем файл с ВПФ и объект, к которому ВПФ привязывается. Дольше выполнить — остановится на точке останова или, если ошибка, в конфигураторе можно перейти на строку с ошибкой. В код самого отладчика по идее попадать не должно.
Перспектива, пугает, если сейчас для отладки Печатных УФ надо использовать дополнительную обработку))
Спасибо обработка к месту.
(38) Kometa, Да оно уже давно так:-)
При отладке ВПФ можно получить прерывание по точке останова?
(40) EddieTocha, Да, оно для этого и писалось…
(41) А можно получить обработку на почту?
(42) EddieTocha, Пишите в личку.
Бухгалтерия предприятия, редакция 3.0 (3.0.26.11)
Выдает ошибку в этой строке:
ПолноеНазначениеЗначение = ДополнительныеОтчетыИОбработки.ПолучитьПолноеНазначениеПоВидуДополнительнойВнешнейОбработки (дво.Вид);
ПолучитьПолноеНазначениеПоВидуДополнительнойВнешнейОбработки не нашел в конфигурации вообще.
Это исправимо?
(44) EddieTocha, Давно не пользовался, всего скорее изменилась БСП, исправить можно всё — посмотрите вызов ВПФ в типовых документах, будет время посмотрю, но не думаю, что это проблема.
В БП 3.0 не работает, не хватает процедуры ПолучитьПолноеНазначениеПоВидуДополнительнойВнешнейОбработки , нашла её в УТ 11. А еще кусок кода закомментировала, а в остальном неплохая вещь, спасибо. 🙂
Кусок кода, который вызывал ошибку:
Показать
(46) ejka,
(46) ejka, С момента написания отладчика изменилась БСП…
не работает в общем.
(49) Aparatus,
Нормально так в общем (главное информативно), хоть ошибку бы показали. Последний вариант выложил после исправления и отладки ВПФ на БП 3.0 (3.0.30.*)
(50) на релизе 31,14 не работает. ошибка Каталог не обнаружен ‘E:СЧЕТ(договор).epf’
(51) makaorel, Выбор файла ВПФ в принципе не зависит от релиза. Попробовал — выбирается (см. файл)
(52) а у меня вот ни в какую, палтформа 437
(53) makaorel, У меня стоит 8.3.4.465, но опять же диалог выбора файла не менялся. Раз Вы собираетесь использовать отладчик, так поставьте точку останова в самом отладчике в процедуре выбора файла, и посмотрите, что там не так. Или напишите в личку, могу посмотреть, что у Вас происходит удаленно.
вы напишите, что необходимо обязательное наличие БСП и какой именно релиз нужен.
(55) rasswet,
— БСП есть и в БП 3.0 и в УТ 11, так от того, что я напишу что обязательно — ничего не изменится.
А вот то что с момента написания обработки БСП менялось и обработка перестала работать я узнал отсюда, т.к. каждый день ей не пользуюсь.
Сегодня протестировал на БП 3.0.32.7 , версия БСП 2.2.2.43, 1С:Предприятие 8.3 (8.3.4.465) — работает…
Если в 1с опять будут делать изменения БСП в части регистрации дополнительных отчетов и обработок, возможно опять придется что то переделывать, хотя сейчас изменения в самом отладчике были минимальными.
Не устанавливает признак безопасного режима?
При обычном подключении обработка регистрируется и исполняется на ура.
(57) NittenRenegade, При выборе ВПФ видно, что безопасный режим не установлен, ошибка возникает в общем модуле. Надо смотреть, когда устанавливается безопасный режим. Можно поставить точку останова не в ВПФ, а в самом отладчике, и посмотреть там. У меня такой ошибки не возникало, без Вашей ВПФ смоделировать её у меня вряд ли получится. Да конфигурация у Вас не БП 3.0, может быть там в БСП что то изменили разработчики?
В безопасном режиме внешние компоненты как раз не подключаются. Поэтому ВПФ регистрирую с признаком «БезопасныйРежим» = Ложь.
Конфигурация: Бухгалтерия предприятия, редакция 3.0 (3.0.31.14)
А ошибка возникает на строчке
Я бы по разбирался в ситуации, но время жмет. Раз ВПФ регистрируется стандартными средствами нормально, сдавать её можно)))
Могу выслать ВПФ, не проблема))
(59) NittenRenegade,
Ради академического интересно, можно посмотреть, если пришлете. Только не прямо сейчас и даже не сегодня — как будет время. Если работает без отладки — то тут уж как в том анекдоте — «Работает — и пусть работает, главное ничего не меняй…» 🙂
а про100 форму добавить — не!?
(61) DJDUH, Конечно ДА, кто ж не дает? Тут есть конструктор замечательный, который ВПФ с формой создает — сам пользуюсь — очень удобно.
Этот отладчик — вообще моя первая поделка на УФ, нарисовал давно, в принципе не только для отладки, но и:
— что бы видеть, как будет регистрироваться;
— не делать ненужную форму для каждой ВПФ, там в форме не одна строка получается, мне как то лениво этим заниматься…
Не понял, на что я потратил 1 $m. В модуль ВПФ отладчик как не заходил, так и не заходит.
(63) blackjack666, Значит все успешно зарегилось? Если бы не зарегилось.. то могло бы выкинуть в модуль отладчика ВПФ
(63) blackjack666, Опишите последовательность действий, как то Вы не первый скачали, но в первый раз не останавливается в модуле ВПФ.
(65) извиняюсь, отладка работает. Точнее, точка останова работает, но по F11 не заходит, но не суть. Удалить свои сообщения?
(66) blackjack666, Зачем? Мне не мешают 🙂
Спасибо огромнейшее за обработку. В течение 10 секунд нашла ошибку, что ковырялась и не видела практически полчаса.
Очень все удобно и понятно
(68) Lady-mo, Пожалуйста. Рад, что пригодилось 🙂
При попытке отладить выводит сообщение «В обработчике печати не был сформирован табличный документ»
Печать этикеток — серверная.
Сначала вызывается форма где выводится количество, которое нужно печатать, можно исправить.
Затем пользователь нажимает печать.
Всю голову сломал как отладить.
Ни в 1с исключением, ни отладчиками ВПФ зайти не получается.
При любом раскладе остановка происходит на серверном методе конфигурации вызова процедуры печати в ВПФ.
Конфиг — Бухгалтерия 3.0 платформа 8.3.5, УФ
(70) daka, Для отладки галку Вывести печатную форму ставить необязательно. Точку останова надо ставить в процедуре, которая вызывается в форме ввода количества. Ещё могу предположить, что дело происходит в sql-ной базе, а отладка на сервере не включена — как результат серверные процедуры не отлаживаются (ключ -debug при запуске сервера 1с).
Печально, но на 8.3.5 перестала работать точка останова в отлаживаемой форме.
(72) blackjack666, Специально попробовал — факт, отладить можно, если запустить отладку с точку оставнова в самой обработке отладчика. Если просто точку останова в ВПФ — не встает:
Будет время — надо разобраться, что эт — глю в платформе или глюк в обработке…
(74) судя по тому, что если всё таки зайти в отлаживаемую форму через вашу обработку, то пропадает курсор текущей строки :), скорее глюк в платформе.
Ещё замечание по другой проблеме. При использовании вашего отладчика не выключается безопасный режим.
(75) blackjack666, «Желтая стрелка» пропадает, а текущую строку видно по вертикальной черточке — бред конечно, но отлаживается. Про безопасный режим посмотрю — не видел проблем с этим как-то…
(76) для УТ 11, чтобы отключить безопасный режим, судя по всему, надо делать запись в РС РежимыПодключенияВнешнихМодулей.
Действительно глюк какой-то в 8.3.5 что касается отладки. Кстати остановка по ошибке еще помогает.
Не подключается. Метод объекта не обнаружен. 1С 8.3
(79) Robert51, А куда подключаем то? Вообще то эта обработка не для пользователей, и в подлючении не нуждается, потому там и не прописано вроде как ничего для подключения…
Файл — Открыть — и дальше по инструкции….
(80) Ага. Спасибо, работает. Я для себя делаю печатные формы (для удобства и ускорения работы). Вот не могу понять в чем у меня проблема, а отладчик встроенный вешает систему и т.д.
(81) Robert51, Пожалуйста!
про встроенный ничего не скажу, даже не знаю где он есть 🙁
Не работает на формах с вызовом клиентского метода:
{Форма.Форма.Форма(147)}: Метод объекта не обнаружен (Печать)
ВнешняяОбработка.Печать(
Тестировал на УТ 11.
В самой ВПФ в СведенияОВнешнейОбработке():
Использование = «ВызовКлиентскогоМетода»; //здесь можно прописать использование как серверного так и клиентского, отличие в том, что серверный метод будет обращаться к экспортной процедуре из модуля объекта, клиентский — к экспортной процедуре из модуля формы объекта
т.е. у меня Процедура Печать() Экспорт — в форме
Перенес Печать в модуль объекта. Опять не работает: Слишком много фактических параметров.
И верно: у меня
Функция Печать(Идентификатор, МассивОбъектов) Экспорт
УТ 11
БСП 2.2.2.37
(84) Atow, Если есть форма, зачем отладчик? Через Файл-Открыть запускаем в режиме учета, поставив точку останова в конфигураторе и отлаживаем…
(85) Пришлось добавить на форму таблицу со ссылками на объекты печати, формировать массив и вызывать Печать. Думал отладчиком обойтись…
Автору спасибо! Только вместо команды «Предупреждение» используйте команду «ПоказатьПредупреждение», чтобы не всплывало сообщение о запрете использования модальных окон.
(87) samadurov, Исправлю в следующей версии
(87) samadurov, Выложил новую версию, добавил возможность просмотра табличного документа без регистрации, исправил предупреждение, и так, по мелочи — в комментариях предложил строку, где можно поставить точку останова, при отладке на платформе 8.3.5.* — так и не ловит платформа останов в другом файле :-(.
Ура! Новая версия ловит! 🙂
(90) SoulCast, В новой в какой?
(91) 8.3.5.1231
(92) SoulCast, Блин, проверял на нескольких предыдущих, не работало, эту даже смотреть не стал, и не тебе — ЗАРРРАБОТАЛО 🙂
НЕ работает.
{Форма.Форма.Форма(5,2)}: Ожидается оператор препроцессора
#<<?>>Область ВсеПодрядКромеОтладить (Проверка: Сервер)
(94) busy1, На 8.2 небось пробуете? Если да — то закомметарьте все строки, где есть #Область …. и #КонецОбласти. Возможность группировать текст модулей есть только в 8.3, на выполнение кода эти области никак не влияют, но в 8.2 вылетает по ошибке — там «#» используется только для препроцессора, в конструкциях типа #Если ТонкийКлиент и т.п.
Так обработка корректно работает на новых платформах 8.3.5.1336 ??
(96) oleg212, Да.
как насчет отладки для печати в word?
(98) Jaivan, Не понял вопрос. Чем она отличается от печати в табличный документ? Ставим точку останова и отлаживаем….
Мощная штука!) Спасибо очень помогла ваша обработка, кстати нигде не написано что в 8.3.5* — отладка по остановке на ошибке не работает, там вообще дебажить внешние формы в отладке нельзя, увы.
Alex_E , а если по существу, то можно ответ (8)slawa вставить в лучшие как полезный совет, только с небольшой оговоркой, что это способ быстрее попасть в нужную точку останова, так как в Вашей обработке (прекрасно работающей невзирая на мнение некоторых) , если точку останова ставить в строке:
то потом долго-долго нужно «бежать по дорожке» в смысле по штатным процедурам, пока не доберёшься до модуля своей печатной формы. А по способу slawa — раз и уже там 🙂
(161) Insanity, Точка останова, про которую Вы говорите, нужна тогда, когда в платформе не работает точка останова в самой обработке, сейчас она работает, так что — это запасной вариант. И в отладчике невозможно написать код ВПФ, которую им будут отлаживать 🙂
Согласен, что способ из (8) красивый, только в продакшн его стоит закоментарить — если печатать много документов сразу — увеличится времени печати, когда будет обрабатываться ошибка в попытке.