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

Отладка в 1С

Отладка - это основной инструмент которым должен овладеть начинающий программист. Без отладки написание любой более менее сложной функции и\или объекта превратиться в настоящую муку. Сам я выбираю такой способ, хорошо себя зарекомендовавший себя: пишу блок кода в 50-100 строк не останавливаясь и не проверяя отладчиком. Затем идет первый запуск, обязательно предварительно ставлю точку останова на первой написанной строке. Затем однократно полностью прохожу весь код построчно, останавливаясь на каждой переменной и сверяю ее "тип значения", а также ее "значение" с тем что было спланировано перед доработкой.

  • Запуск отладчика производится с панели, нажатием на соответствующую кнопку (F5):
  • Чтобы остановить отладчик на нужной строке, надо поставить красную точку (двойным кликом) слева от строки, она называется точка останова:
  • После того как отладчик остановится на строке выделяем любую переменную и жмем Shift+F9 (или кнопку на панели вверху)
  • Переход по строкам, с заходом в вызываемые процедуры - F11
  • Переход по строкам, не заходя в процедуры которые вызываются в вашем коде - F10

Крайние важные особенности отладки в 1С

  • Если необходимо быстро перейти к строке, на которой платформа "вываливается" с ошибкой, то необходимо установить флаг "Останавливаться по ошибке":

  • Если в есть подозрение что где то в коде спрятана "попытка\исключение" и вы не можете найти это место, хотя есть мнение что она отсекает крайне важное для вас событие, то необходимо установить этот же флаг остановки. При ошибке в блоке "попытка..исключение" отладчик остановится на этой строке.
  • Если программа зависла на выполнении, допустим где-то бесконечный цикл, то можно легко перейти на строку, которая выполняется в данный момент, если нажать Меню "Отладка - Остановить".
  • Если вы находитесь в процедуре и не знаете откуда она была вызвана - необходимо вызвать окно "стек вызовов", в нем будет видно всю цепочку вызова процедур:
  • При обнаружении ошибки необходимо не прекращая отладки менять код и идти дальше. Интересная особенность, только что измененный код часто можно сразу же проверить на работоспособность. Например у вас есть код "Если А=Б Тогда" в результате отладки вы понимаете что код надо поменять. Даже если отладчик спустился уже на строку ниже смело меняем на "Если А<>Б Тогда", тутже выделяем блок "А<>Б" и жмем Shift+F9, в окне вычисляющим выражение будет уже новый код и значение вычисленное по этому новому куску кода.

Как запустить отладчик от имени другого пользователя

  1. В конфигураторе нажать "Сервис - Параметры" и задать имя пользователя на вкладке "Запуск 1С:Предприятия":
  2. Затем запустить отладчик в требуемом режиме:
  3. В итоге на экран будет выдано окно авторизации под заданным пользователем:

Отладка в клиент-серверном режиме

В режиме клиент-сервер, начинающего программиста ждет сюрприз,  отладчик прекрасно "входит" в процедуры "на клиенте" но дойдя до вызова серверной процедуры не заходит в нее, а как бы проходит строку, если вы бы вы нажали "шагнуть через F10". Причина проста - отладчику необходим доступ к серверной части 1С, и пока вы его не откроете вы не сможете отлаживать "серверный" участок кода.

Как включить отладку на сервере. Все очень просто необходимо изменить параметры запуска службы 1С-сервера:

  1. Открываем реестр (на ПК где крутится сервер 1С:предприятия) - пуск - regedit
  2. Ищем в реестре виндоус службу 1С, примерно по такому пути: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\1C:Enterprise 8.3 Server Agent
  3. В ключе ImagePath добавляем параметр "-debug", не забываем оставить пробелы.
  4. После правки реестра перезапускаем службу через панель управления - .. службы.
  5. Готово! Теперь отладчик будет заходить внутрь серверных модулей\процедур.

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

Бывают ситуации когда возникает трудноуловимая ошибка и появляется только у одного пользователя. Если ошибку пользователю удается воспроизвести, можно подключиться отладчиком к уже запущенному процессу пользователя и отладить процедуру. Как сделать:

  1. В запущенной программе пользователя поставить флаг разрешающий отладку в этом сеансе. В меню - сервис - параметры - отладка в текущем сеансе.
  2. запустить рядом конфигуратор и нажать меню "отладка" - "подключение" - в списке "доступные предметы отладки" появится сеанс проблемного пользователя.

Подключение к web-сервису, подключение к фоновому заданию

Для того чтобы отладить web-сервис надо поймать нужный "поток" на сервере. А это означает а) надо включить отладку на сервере (см. выше) б) надо включить спец. флажок, который позволит перехватить управление потоком.

Включение перехвата:

  1. Установить точку останова на процедуре, которую необходимо отладить.
  2. Меню "отладка" - "подключение" - "автоматическое подключение..."- установить флажок "web-сервисы..\фоновые задания".
  3. Дальше ждем когда точка останова сработает - готово! сеанс перехвачен.
  4. Далее если ваша база более менее "живая", необходимо убрать вышеустановленные флажки и только затем продолжить отладку процедуры. Если этого не сделать то при переходе к следующей строке у вас начнется чехарда с перескоками между строк. Ведь к вам будут подключаться все новые и новые фоновые задания и web-сервисы.

 

 

 

Комментарии  
+2 #2 Сергей 13.08.2019 02:53
Спасибо за статью! По поводу изменения кода на лету - это доступно только в режиме http отладки насколько мне известно. В параметрах службы должен стоять флаги -debug -http
Цитировать
0 #1 Павел Васянин 03.06.2019 13:02
Спасибо за статью !
Цитировать
Добавить комментарий