Отладка внешних печатных форм в управляемых формах

Отладка внешних печатных форм в управляемых формах

Отладка внешних печатных форм в управляумых приложениях у многих вызывает затруднение. Причина — нельзя установить точку остановки в конфигураторе, т.к. выполняется временный файл. Поэтому множатся разработки типа «Отладчик внешних печатных форм». Не буду спорить, в некоторых случаях оказывают неоценимую помощь, но… не во всех. К примеру, если вы используете форму во ВПФ и запускаете печть оттуда. Между тем решение очень простое: вставьте в том месте обработки, в котором вы хотите установить точку останова конструкцию типа:

Попытка
а = «у»;
в = число(а);
Исключение КонецПопытки;

Ну и включите в конфигураторе «Останавливаться по ошибке».

Тогда, когда компилятор дойдет до данного места, он откроет вам временный файл и вы сможете посмотреть как работает ваша ВПФ.

Преимущества:

— не зависит от того есть ли у вас БСП и используете ли вы ее в обработке;

— не зависит от того используете ли вы форму во ВПФ.

Недостатки:

— приходится постоянно удалять/вставлять обработку при отладке;

— Невнимательные программисты по привычке правят обработку в открывшемся временном файле, а не в самой обработке.

30 Comments

  1. fomix

    А ларчик так просто открывался… Работает не только на управляемых формах, но и на обычных.

    Спасибо за подсказку!!!

    Reply
  2. Alias

    В случае если временный файл удаляется сразу после создания обработки (а именно так, насколько я знаю, реализовано в типовых конфигурациях) этот способ не подходит… то есть просто нет файла (временного), который можно было бы открыть в Конфигураторе.

    Нужно закомментировать те строки, которые удаляют временный файл. Тогда сработает.

    Reply
  3. Alias

    Да и сложностей в Попытке можно поменьше.

    аааа=1/0;

    и хватит.

    Reply
  4. CratosX

    баян… автор, исправь уж название — не только впф, но и обработки; не только управляемые, а вообще весь внешний кусок кода…

    Reply
  5. Yury1001

    подозреваю что прокатит не везде



    при попытке отладить Команду заполнения объекта остановка происходит в общем модуле и внутрь не идёт.

    конфигурация Розница 8. Аптека, ред 2.0 возможно это связано с (2)

    Reply
  6. kitminsk

    (2) Alias, Да, есть такая проблемка, СПАСИБО!

    Reply
  7. CratosX

    (5) Yury1001, (6) а в Отладка — Остановка по ошибке… — Останавливаться на ошибке не решит проблему?

    Reply
  8. Yury1001

    (7) cratos2, так собственно это и обсуждаем

    Reply
  9. CratosX

    (5), (8) Yury1001, да, если в коде много попыток, нацеленных на исключения. Тогда надо лавировать, либо пару раз нажать на F5, либо кусок кода вставлять, который ещё нужно не забыть удалить после всего. Либо, если вы забывчивы, делаем проверку на сегодняшнюю дату, и если она больше

    «20121030»

    , то

    НЕ ВызватьИсключение() 
    Reply
  10. AlexO

    Крайне вредная и ерундовая статья.

    Есть прекрасный обработчик от poppy для ВПФ 8.1, есть подобное и для УФ.

    А лазить во временный файл — не должно быть и намеков даже никаких!

    Статья однозначно должна превратится в маленькое сообщение в виде совета в теме с заголовком «Как править ВО на скорую руку»

    Reply
  11. knigula

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

    Reply
  12. OrsoBear

    AlexO— Спасибо за » прекрасный обработчик от poppy для ВПФ 8.1″, не знал про такой. Второй способ тоже иногда пригождается.

    Reply
  13. premierex

    А не проще сохранить ВПФ на диск и отладить в обычном режиме?

    Reply
  14. AlexO

    (14) premier,

    видимо, студенты не ищут легких путей, преодолевая сами себе сооруженные препяствия.

    мало с 1с возились, видимо, если не хватает адреналина.

    Reply
  15. Новенький_2209

    Что-то автора совсем куда-то повело не в ту степь. Зачем такие сложности? К чему?

    Минусы ставить ПОКА не могу. Думаю, это временно 😉

    Reply
  16. MaxS

    Дайте, пожалуйста ссылку на нормальный вариант. Поиск инфостарта показывает только эту обработку для управляемых форм. ((

    Нашел: http://infostart.ru/public/73691/

    Reply
  17. kitminsk

    Еще есть поиск на сайте инфостарта через google

    Reply
  18. prodines

    Комплексная Автоматизация Толстый клиент 8.2. Файловая база. Всё на обычных формах, только для формы списка реализаций поставил управляемую форму списка. Добавил туда кнопку проводок (чтобы было как в обычной форме списка), хотел её отладить — но отладка почему-то не запустилась, поставленная точка останова была проигнорирована программой.

    Никакие внешние формы при этом вообще не используются. База не серверная, а файловая. Но отладка всё равно почему-то не идёт.

    Только эта публикация меня и выручила. Ставлю плюс.

    Reply
  19. tindir

    ИМХО. как то отладка внешних обработок через ловлю ошибки во временном файле)))) как диагностирование головной боли с помощью удара сковородой по пальцам)))

    Reply
  20. Phoenix4565

    получается что отладить внешнюю печатную форму в управляемом приложении невозможно?

    Reply
  21. kitminsk

    Phoenix4565 Ну зачем так пессимистично — есть множество специальных обработок для этой цели, но если хотите побыструхе, то можно и так 🙂

    Reply
  22. AnryMc

    Я, обычно, отлаживаю его как объект конфигурации и когда отлажен — выгружаю в файл…

    ЗЫ. Но как метод — этот тоже имеет право на жизнь… Менее трудоёмким будет вызов ошибки не как в публикации, а например делением на ноль…

    Reply
  23. zels

    Попробовал на БП 3.0, платформа 8.3.5.1570 — не получается. Останов по ошибке происходит не где ошибочная команда, а в общем модуле «ДополнительныеОтчетыИОбработки» в процедуре «ПечатьПоВнешнемуИсточнику» при выполнении команды «ВнешняяОбработкаОбъектПечать(….»

    Пробовал в файлой и серверной (с ключом debug) версиях.

    Ставил точку останова на команду «ВнешняяОбработкаОбъектПечать(….» Останов происходит, но на следующем шаге в модуль печати не попадаю.

    Странно все это…

    Reply
  24. VovkaPutin

    Люди, делайте проще:

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

    Так платформа сама откроет отладку внешки. И это без необходимости писать «ВызватьИсключение», ставить остановки по ошибке и т. д…

    Reply
  25. kitminsk

    Ну вот, дискуссия выявила оптимальное решение. Можно только добавить что я ставлю

    ОбщегоНазначенияКлиентСервер.СообщитьПользователю(«Отладка»); но на вкус и цвет…

    Reply
  26. AlexO

    (22) «есть множество специальных обработок для этой цели»

    Для УФ нет никаких «специальных обработок» по многим причинам:

    — в типовых используется БСП, которая постоянно меняется и переписывается от релиза к релизу

    — в разных конфах — разные версии БСП

    — весь код (для ВПФ, открытия обработок) вынесен в общие модули

    — переход 1С от хранения временного образа при открытии обработки на диске к хранению в хранилище базы.

    (21)»получается что отладить внешнюю печатную форму в управляемом приложении невозможно?»

    Можно, только нужно в каждой своей ВПФ создавать сразу сервисную форму для привязки ВПФ к объекту-источнику данных и «вручную» открывать ВПФ для отладки.

    Reply
  27. baldorc

    (25)

    На платформе 8.3 в управляемых формах перестало работать. по крайней мере в БП 3.0.52.39

    курсор отладки просто исчезает, как будто проваливается в невидимый модуль. и молчок

    Reply
  28. ccserg

    нет никакого решения нового ? на 8.3.11 не работает

    Reply
  29. ccserg

    в соседней теме нашел ссылку , работает

    http://www.obrabotki.com/otladka-bsp-1s/

    Reply
  30. denmax

    Рабочий вариант для современных конфигураций: https://infostart.ru/public/916110/

    Reply

Leave a Comment

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