gifts2017

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

Опубликовал Владимир Гусев (adhocprog) в раздел Программирование - Практика программирования

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

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

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

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

См. также

Подписаться Добавить вознаграждение

Комментарии

1. anry mc (AnryMc) 12.12.11 11:25
(0) А как понять порядок выполнения? Производительность дает только, что "выполнилось за время"
2. Сергей Ожерельев (Поручик) 12.12.11 11:53
(1) Это типа для новичков и плюс неполный список публикаций по теме. (0) Про тестирование и отладку печатных форм забыл.
3. Анатолий (Yasen) 12.12.11 14:11
Все равно +
Тоже пользуюсь этой штукой, и вижу что вокруг народ не знает.
4. Анатолий (Yasen) 12.12.11 14:12
Поручик пишет:
неполный список публикаций по теме


А полным поделишься? :)
5. Сергей Самошин (saiten) 12.12.11 16:31
(1) Порядок смотреть при проходе отладчиком. А вот без лишних тыканий оценить прохождения условий - это мысль. За мысль плюсанул.
Иваныч; adhocprog; gaglo; Rustig; +4 Ответить
6. Юрий M (YuriM) 12.12.11 18:39
Идеи для статьи:
1) Как использовать удалённую отладку (не у всех получается);
2) Как включать отладку на сервере (знаю людей, которые про такую возможность не знают вообще).
Дмитрий_71; +1 Ответить
7. Александр (МимохожийОднако) 14.12.11 07:13
Работает ли эта штука при отладке синтаксических ошибок?
8. Мастер Йода (master_yoda) 14.12.11 08:28
Пользовался давно..... но многие такой фиишки не знают
9. Владимир Чаклин (vec435) 14.12.11 09:20
пока не пользовался, но прикольно
10. Slas (slas) 14.12.11 09:31
Спасибо за идею, обязательно воспользуюсь
11. cassyan (cassyan) 14.12.11 11:39
Любопытно. Надо попробовать.
12. Fomix (fomix) 14.12.11 11:57
Давно пользуюсь обработкой "Продвинутый отладчик для 8.1" от Фиксина - за что автору большое спасибо! Помогает при отладке запросов. Особенно в ЗУПе, где запросы написаны какими-то "титанами от 1С" и осилить их можно только с помощью данной обработки, расчленяя на более мелкие и удобные для понимания прямо по ходу работы программы.
Смело можно включить в список автора
13. г. Казань Рустем Гумеров (Rustig) 14.12.11 13:03
14. Fomix (fomix) 14.12.11 13:13
(13) Rustig, Кажется я скачал ее c сайта автора - fixin.narod.ru. Но могу и ошибаться по URL. Он там много чего полезного выкладывает бесплатно. Если там не найдешь пришли в личку мыло -скину
15. Сергей (Sergoninfostarru) 14.12.11 14:13
Прекрасный метод отслеживания использования процедур как в контексте документа, так и общих модулей. Но пошаговую отладку не отменяет : по этому методу можна только видеть какая процедура и сколько раз используется, а вот последовательность исполнения тут не увидишь. А отладка то и начинается с поиска ошибки, поэтому до выполнения определенных процедур может и не дойти !!!
16. Осипов Сергей (fixin) 14.12.11 14:57
(12) гы, скоро я ее тут размещу. По просьбам трудящихся. Следите за развитием событий.
17. Осипов Сергей (fixin) 14.12.11 14:58
(15) а вы знаете, как в 1С сделать трассировку отдельной строки с помощью условной точки останова? Думаете это невозможно? ;-)
18. Michael Smith (opiumdx) 14.12.11 19:51
Спасибо! Никогда не думал в таком ключе, очень интересная мысль... Должно быть неплохой способ отследить выполнение процедур. Надо будет обязательно попробовать на практике.
19. Fomix (fomix) 14.12.11 21:46
20. denis leonov (curys) 14.12.11 22:48
Замечательная статья. Не зря время провнел за прочтением, новые нюансы узнал. Спасибо автору!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
21. Dima Dima (dumal) 14.12.11 22:55
Знаете, для тех, кто на 1С пришел из других языков программирования, эти знания сакральными не являются. Тем не менее, спасибо, дойти до этого "с нуля", наверно, непросто
22. Осипов Сергей (fixin) 14.12.11 23:14
(19) скоро, очень скоро, пока на моем сайте ищите, я ведь недавно вернулся на ИС. Скоро все это счастие, мои шедевры будут тут. ;-)
23. ddd ddd (alexsiswx) 14.12.11 23:29
Я считаю, если научился пользоваться отладчиком в полную силу, то остальное ерунда...
24. Виталий Зеленцов (shizobruder) 15.12.11 08:47
25. Виталий Зеленцов (shizobruder) 15.12.11 08:48
вообще с помощью этой штуки начал разбираться в языке)))
26. highlander highlander (highlander) 15.12.11 10:32
(21) dumal, абсолютно с вами согласен. это тонкости работы, которые могут помогать но мало кто их использует
27. Димон * (DDos76) 15.12.11 15:26
Прикольно. По отдельности про это (замер производительности + отладка по шагам) знал, но чтобы вместе - не думал. Только вот код чаще всего приходится отлаживать который (А очень долго работает) (Б не работает вообще) - т.е. вылетает с ошибкой. Методика уже не прокатит. И наконец, последний гвоздь: все чаще ошибки кроются в запросах. Так, например, некорректно определяется сумма при перемещении из розницы обратно на оптовый склад в УНФ. Ошибку то удалось найти, но сколько это заняло времени... Вот если бы кто предложил методику отладки пакетных запросов по частям - было бы супер.
28. Алексей (АлексейН) 16.12.11 11:35
Возмем на вооружение, молодец, за идею +
29. Maksim Titov (Maks_Payn) 17.12.11 13:46
Очень интересно и позновательно! Молодец! Спасибо! ))
30. Олег Иванов (ogeniv) 18.12.11 11:05
Интересно, надо будет попробовать
32. Дмитрий Веселов (Veduin) 19.12.11 05:06
Может будет практично! попробуем!
33. Андрей Романовский (and_r) 19.12.11 06:29
Попробовал, плюсов не заметил, но, думаю, найдутся задачи и под это решение! Спасибо!
34. Степан Лавров (Mopcuk) 20.12.11 06:19
35. Саўка Збянтэжаны (Збянтэжаны Саўка) 20.12.11 15:39
(22) fixin, дай здесь URL своего сайта, интересно же глянуть, что там у тебя есть
36. Осипов Сергей (fixin) 20.12.11 16:36
37. Саўка Збянтэжаны (Збянтэжаны Саўка) 20.12.11 17:40
38. Alexey Drujkov (extremehelp) 20.12.11 22:57
39. Дмитрий Т. (t_dima) 23.12.11 14:50
Трудно конечно дедушку переучить от того к чему он привык давным давно :)
Как говорится: век живи - век учись!
40. Pavel Y (Pashikuss) 28.12.11 10:16
Тоже пользуюсь этой штукой
41. Максим Грибков (magrib) 29.12.11 14:36
Очень полезно. Ждем от автора новых публикаций. Спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)))))
42. Ирина Тодорова (Hantinka) 04.01.12 19:21
Очень полезная статья. Спасибо!
43. Игорь Юртаев (ipyu) 04.01.12 21:59
45. Anton Sergeev (sdwggg2) 13.01.12 13:50
46. Владимир Водин (BalVlad) 17.01.12 09:48
48. econom1 30.01.12 18:29
я вообще в восторге от запуска замера без точек останова
недавно начал работать с 8 после 7, и неоднократно тратил кучу времени например, чтоб найти откуда беруться движения у документа, формирование которых не ловилось отладчиком в обработке проведения. бывало все пройдешь - нет нигде, движения смотрим, а они есть. домовой блин завелся. не знал тогда, что в 8 есть подписки на события.
вот теперь заживем! спасибо!
49. Гость 07.02.12 20:50
Очень хороший файлик... сэкономил время!!! очень помогло...
надо было срочно и тут как раз мне в помощь.
спасибо автору
50. Алексей Аборин (commo) 10.02.12 14:49
51. Николай (Nickon) 22.03.12 00:41
Идея в работе неплохая. надо все проверить лично. На практике так сказать.
Спасибо +
52. Сергей Захаров (zachs) 13.04.12 10:25
Отличная статья! Надо тренироваться...
53. Игорь Юртаев (ipyu) 23.06.12 08:21
54. Александр Лыткин (TrinitronOTV) 27.11.12 10:37
большое спасибо, очень пригодиться в работе
55. Lika Ivanova (Lik2707) 05.12.12 05:22
Да, интересная фишка, обязательно надо попробовать :)
Несомненно плюс!
56. evgen1977 (musatov1c.ru) 05.12.12 08:38
Да, весьма любопытно. Оставляю на заметку. Автору большое спасибо :)
57. Владимир Гусев (adhocprog) 05.12.12 09:41
58. Алексей Роза (DoctorRoza) 05.12.12 10:44
59. Ксюша Феерия (Феерия) 05.12.12 12:23
Спасибо большое! Буду пользоваться!
60. Андрей Казанцев (ander_) 06.12.12 08:07
61. Олег Шалимов (CaSH_2004) 08.12.12 17:51
Странно, но народ не в курсе. Тогда наверно механизм стека вызовов вообще будет шоком для многих :)
62. Анатолий Бурмистров (tolik_byr) 08.12.12 21:58
АГа, на моей практике есть "программисты" для которых стек вызовов - это новое открытие в области программирования! )))
63. Владимир (ARL) 25.01.13 11:14
Описанный метод - такой простой и такой эффективный помощник, просто супер! Конечно, он эффективен, когда в коде используется большое количество процедур и функций, например, в громоздкой обработке. Срезу видишь - где "прошлась" отлаживаемая задача. И как результат - тут же определяешь - где надо исправлять.
64. Александр Ганиев (namazi74) 17.07.13 15:29
спасибо! побольше бы таких статей!
65. Владимир Семенов (kruglay) 19.07.13 14:04
66. Сергей Сторожев (ssa) 16.10.13 22:20
67. Denis Michaylov (denis_aka_wolf) 31.03.14 10:21
А в чем тут хитрость??? нечего нового не сказал...
68. Владимир Гусев (adhocprog) 31.03.14 15:19
Хитрость в том, что это существенно облегчает отладку.
Далеко не все это знают.
69. Denis Michaylov (denis_aka_wolf) 01.04.14 08:41
Думаю не делают так только новички. Нормальный разработчик использует различные инструменты для отладки. И точки остановок с условиями и табло и стек вызовов и замер производительности. Код должен работать точнее часов ))) без багов, утечек памяти и с высокой производительностью.
Иваныч; +1 1 Ответить 1
70. Владимир Гусев (adhocprog) 01.04.14 11:17
(69) >> Думаю не делают так только новички
В целом да, но.
Я тоже бы так думал, если бы не показывал это программистам. Далеко не новичкам, далеко не слабым.
71. Иваныч Иванов (Иваныч) 15.05.14 18:30
72. Дарья Зотова (daryz) 01.08.14 08:59
73. Рамиль Баширов (bashirov.rs) 04.09.14 09:01
Спасибо за рекомендации! Беру в вооружение!
adhocprog; +1 Ответить
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа