Хитрости отладки кода 1С

Хитрости отладки кода 1С
Только самые простые задачи не требуют отладки. Для решения сложных задач без отладки в принципе не обойтись. С годами придумал способ упростить этот процесс.
1) Включаем отладку (без точек останова), включаем замер производительности, выполняем отлаживаемые действия, выключаем замер производительности (появится список выполненных команд и он будет подсвечен в коде).
2) Потом устанавливаем точки останова и идем по шагам, т.е. выполняем обычную отладку.
Теперь мы заранее видим какой код будет исполнен (и сколько раз). Это значительно ускоряет процесс отладки сложного, объемного кода.

Когда в реале показываю этот способ коллегам, они не сразу видят выгоду. Но потом говорят, что это вещь 🙂

Горячие клавиши (записанные на подкорку):
Alt+F2 — поставить/убрать закладку
F2 — перейти к следующей закладка
Shift+F2 — перейти к предыдущей
F9 — поставить/убрать точку останова
Ctrl+Shift+F9 — отключить точку останова

Другие темы по отладке:
Динамическое изменение переменных во время отладки
Обработка для отладки обработок заполнения табличных частей документов
Отладка Web сервисов 1С в картинках
Отладка удаленных сеансов пользователей

70 Comments

  1. AnryMc

    (0) А как понять порядок выполнения? Производительность дает только, что «выполнилось за время»

    Reply ↓
  2. Поручик

    (1) Это типа для новичков и плюс неполный список публикаций по теме. (0) Про тестирование и отладку печатных форм забыл.

    Reply ↓
  3. Yasen

    Все равно +

    Тоже пользуюсь этой штукой, и вижу что вокруг народ не знает.

    Reply ↓
  4. Yasen
    Поручик пишет:

    неполный список публикаций по теме

    А полным поделишься? 🙂

    Reply ↓
  5. saiten

    (1) Порядок смотреть при проходе отладчиком. А вот без лишних тыканий оценить прохождения условий — это мысль. За мысль плюсанул.

    Reply ↓
  6. YuriM

    Идеи для статьи:

    1) Как использовать удалённую отладку (не у всех получается);

    2) Как включать отладку на сервере (знаю людей, которые про такую возможность не знают вообще).

    Reply ↓
  7. МимохожийОднако

    Работает ли эта штука при отладке синтаксических ошибок?

    Reply ↓
  8. master_yoda

    Пользовался давно….. но многие такой фиишки не знают

    Reply ↓
  9. vec435

    пока не пользовался, но прикольно

    Reply ↓
  10. slas

    Спасибо за идею, обязательно воспользуюсь

    Reply ↓
  11. cassyan

    Любопытно. Надо попробовать.

    Reply ↓
  12. fomix

    Давно пользуюсь обработкой «Продвинутый отладчик для 8.1» от Фиксина — за что автору большое спасибо! Помогает при отладке запросов. Особенно в ЗУПе, где запросы написаны какими-то «титанами от 1С» и осилить их можно только с помощью данной обработки, расчленяя на более мелкие и удобные для понимания прямо по ходу работы программы.

    Смело можно включить в список автора

    Reply ↓
  13. Rustig

    (12) где ее найти?

    Reply ↓
  14. fomix

    (13) Rustig, Кажется я скачал ее c сайта автора — fixin.narod.ru. Но могу и ошибаться по URL. Он там много чего полезного выкладывает бесплатно. Если там не найдешь пришли в личку мыло -скину

    Reply ↓
  15. Sergoninfostarru

    Прекрасный метод отслеживания использования процедур как в контексте документа, так и общих модулей. Но пошаговую отладку не отменяет : по этому методу можна только видеть какая процедура и сколько раз используется, а вот последовательность исполнения тут не увидишь. А отладка то и начинается с поиска ошибки, поэтому до выполнения определенных процедур может и не дойти !!!

    Reply ↓
  16. fixin

    (12) гы, скоро я ее тут размещу. По просьбам трудящихся. Следите за развитием событий.

    Reply ↓
  17. fixin

    (15) а вы знаете, как в 1С сделать трассировку отдельной строки с помощью условной точки останова? Думаете это невозможно? 😉

    Reply ↓
  18. opiumdx

    Спасибо! Никогда не думал в таком ключе, очень интересная мысль… Должно быть неплохой способ отследить выполнение процедур. Надо будет обязательно попробовать на практике.

    Reply ↓
  19. fomix

    (17) fixin, Колись!

    Reply ↓
  20. curys

    Замечательная статья. Не зря время провнел за прочтением, новые нюансы узнал. Спасибо автору!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    Reply ↓
  21. dumal

    Знаете, для тех, кто на 1С пришел из других языков программирования, эти знания сакральными не являются. Тем не менее, спасибо, дойти до этого «с нуля», наверно, непросто

    Reply ↓
  22. fixin

    (19) скоро, очень скоро, пока на моем сайте ищите, я ведь недавно вернулся на ИС. Скоро все это счастие, мои шедевры будут тут. 😉

    Reply ↓
  23. alexsiswx

    Я считаю, если научился пользоваться отладчиком в полную силу, то остальное ерунда…

    Reply ↓
  24. shizobruder

    Очень полезно бывает)))

    Reply ↓
  25. shizobruder

    вообще с помощью этой штуки начал разбираться в языке)))

    Reply ↓
  26. highlander

    (21) dumal, абсолютно с вами согласен. это тонкости работы, которые могут помогать но мало кто их использует

    Reply ↓
  27. DDos76

    Прикольно. По отдельности про это (замер производительности + отладка по шагам) знал, но чтобы вместе — не думал. Только вот код чаще всего приходится отлаживать который (А очень долго работает) (Б не работает вообще) — т.е. вылетает с ошибкой. Методика уже не прокатит. И наконец, последний гвоздь: все чаще ошибки кроются в запросах. Так, например, некорректно определяется сумма при перемещении из розницы обратно на оптовый склад в УНФ. Ошибку то удалось найти, но сколько это заняло времени… Вот если бы кто предложил методику отладки пакетных запросов по частям — было бы супер.

    Reply ↓
  28. АлексейН

    Возмем на вооружение, молодец, за идею +

    Reply ↓
  29. Maks_Payn

    Очень интересно и позновательно! Молодец! Спасибо! ))

    Reply ↓
  30. ogeniv

    Интересно, надо будет попробовать

    Reply ↓
  31. Veduin

    Может будет практично! попробуем!

    Reply ↓
  32. and_r

    Попробовал, плюсов не заметил, но, думаю, найдутся задачи и под это решение! Спасибо!

    Reply ↓
  33. Mopcuk

    Сейчас попробуем!

    Reply ↓
  34. Збянтэжаны Саўка

    (22) fixin, дай здесь URL своего сайта, интересно же глянуть, что там у тебя есть

    Reply ↓
  35. fixin

    (35) fixin.com.ru

    Reply ↓
  36. Збянтэжаны Саўка

    (36) fixin, 10x!

    Reply ↓
  37. extremehelp

    Спасибо очень помогло

    Reply ↓
  38. t_dima

    Трудно конечно дедушку переучить от того к чему он привык давным давно 🙂

    Как говорится: век живи — век учись!

    Reply ↓
  39. Pashikuss

    Тоже пользуюсь этой штукой

    Reply ↓
  40. magrib

    Очень полезно. Ждем от автора новых публикаций. Спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)))))

    Reply ↓
  41. Hantinka

    Очень полезная статья. Спасибо!

    Reply ↓
  42. ipyu

    Спасибо. Буду знать.

    Reply ↓
  43. sdwggg2

    узнал кое что новое

    Reply ↓
  44. BalVlad

    Спасибо. +

    Reply ↓
  45. econom1

    я вообще в восторге от запуска замера без точек останова

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

    вот теперь заживем! спасибо!

    Reply ↓
  46. Гость

    Очень хороший файлик… сэкономил время!!! очень помогло…

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

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

    Reply ↓
  47. commo

    спасибо

    Reply ↓
  48. Nickon

    Идея в работе неплохая. надо все проверить лично. На практике так сказать.

    Спасибо +

    Reply ↓
  49. zachs

    Отличная статья! Надо тренироваться…

    Reply ↓
  50. ipyu

    Спасибо, идея на 5.

    Reply ↓
  51. TrinitronOTV

    большое спасибо, очень пригодиться в работе

    Reply ↓
  52. Lik2707

    Да, интересная фишка, обязательно надо попробовать 🙂

    Несомненно плюс!

    Reply ↓
  53. musatov1c.ru

    Да, весьма любопытно. Оставляю на заметку. Автору большое спасибо 🙂

    Reply ↓
  54. adhocprog

    (55), (56) спасибо )

    Reply ↓
  55. DoctorRoza

    Возьму на вооружение!

    Reply ↓
  56. user199589

    Спасибо большое! Буду пользоваться!

    Reply ↓
  57. ander_

    спасибо! в «копилку».

    Reply ↓
  58. CaSH_2004

    Странно, но народ не в курсе. Тогда наверно механизм стека вызовов вообще будет шоком для многих 🙂

    Reply ↓
  59. tolik_byr

    АГа, на моей практике есть «программисты» для которых стек вызовов — это новое открытие в области программирования! )))

    Reply ↓
  60. ARL

    Описанный метод — такой простой и такой эффективный помощник, просто супер! Конечно, он эффективен, когда в коде используется большое количество процедур и функций, например, в громоздкой обработке. Срезу видишь — где «прошлась» отлаживаемая задача. И как результат — тут же определяешь — где надо исправлять.

    Reply ↓
  61. namazi74

    спасибо! побольше бы таких статей!

    Reply ↓
  62. kruglay

    Плюс

    Reply ↓
  63. ssa

    Спасибо,полезно.

    Reply ↓
  64. denis_aka_wolf

    А в чем тут хитрость??? нечего нового не сказал…

    Reply ↓
  65. adhocprog

    Хитрость в том, что это существенно облегчает отладку.

    Далеко не все это знают.

    Reply ↓
  66. denis_aka_wolf

    Думаю не делают так только новички. Нормальный разработчик использует различные инструменты для отладки. И точки остановок с условиями и табло и стек вызовов и замер производительности. Код должен работать точнее часов ))) без багов, утечек памяти и с высокой производительностью.

    Reply ↓
  67. adhocprog

    (69) >> Думаю не делают так только новички

    В целом да, но.

    Я тоже бы так думал, если бы не показывал это программистам. Далеко не новичкам, далеко не слабым.

    Reply ↓
  68. Иваныч

    Плюс поставил

    Reply ↓
  69. daryz

    Полезно, спасибо!

    Reply ↓
  70. bashirov.rs

    Спасибо за рекомендации! Беру в вооружение!

    Reply ↓

Leave a Comment

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