Хитрости отладки в 1С
Отладка в 1С
Отладка - это основной инструмент которым должен овладеть начинающий программист. Без отладки написание любой более менее сложной функции и\или объекта превратиться в настоящую муку. Сам я выбираю такой способ, хорошо себя зарекомендовавший себя: пишу блок кода в 50-100 строк не останавливаясь и не проверяя отладчиком. Затем идет первый запуск, обязательно предварительно ставлю точку останова на первой написанной строке. Затем однократно полностью прохожу весь код построчно, останавливаясь на каждой переменной и сверяю ее "тип значения", а также ее "значение" с тем что было спланировано перед доработкой.
- Запуск отладчика производится с панели, нажатием на соответствующую кнопку (F5):
- Чтобы остановить отладчик на нужной строке, надо поставить красную точку (двойным кликом) слева от строки, она называется точка останова:
- После того как отладчик остановится на строке выделяем любую переменную и жмем Shift+F9 (или кнопку на панели вверху)
- Переход по строкам, с заходом в вызываемые процедуры - F11
- Переход по строкам, не заходя в процедуры которые вызываются в вашем коде - F10
Крайние важные особенности отладки в 1С
- Если необходимо быстро перейти к строке, на которой платформа "вываливается" с ошибкой, то необходимо установить флаг "Останавливаться по ошибке":
- Если в есть подозрение что где то в коде спрятана "попытка\исключение" и вы не можете найти это место, хотя есть мнение что она отсекает крайне важное для вас событие, то необходимо установить этот же флаг остановки. При ошибке в блоке "попытка..исключение" отладчик остановится на этой строке.
- Если программа зависла на выполнении, допустим где-то бесконечный цикл, то можно легко перейти на строку, которая выполняется в данный момент, если нажать Меню "Отладка - Остановить".
- Если вы находитесь в процедуре и не знаете откуда она была вызвана - необходимо вызвать окно "стек вызовов", в нем будет видно всю цепочку вызова процедур:
- При обнаружении ошибки необходимо не прекращая отладки менять код и идти дальше. Интересная особенность, только что измененный код часто можно сразу же проверить на работоспособность. Например у вас есть код "Если А=Б Тогда" в результате отладки вы понимаете что код надо поменять. Даже если отладчик спустился уже на строку ниже смело меняем на "Если А<>Б Тогда", тутже выделяем блок "А<>Б" и жмем Shift+F9, в окне вычисляющим выражение будет уже новый код и значение вычисленное по этому новому куску кода.
Как запустить отладчик от имени другого пользователя
- В конфигураторе нажать "Сервис - Параметры" и задать имя пользователя на вкладке "Запуск 1С:Предприятия":
- Затем запустить отладчик в требуемом режиме:
- В итоге на экран будет выдано окно авторизации под заданным пользователем:
Отладка в клиент-серверном режиме
В режиме клиент-сервер, начинающего программиста ждет сюрприз, отладчик прекрасно "входит" в процедуры "на клиенте" но дойдя до вызова серверной процедуры не заходит в нее, а как бы проходит строку, если вы бы вы нажали "шагнуть через F10". Причина проста - отладчику необходим доступ к серверной части 1С, и пока вы его не откроете вы не сможете отлаживать "серверный" участок кода.
Как включить отладку на сервере. Все очень просто необходимо изменить параметры запуска службы 1С-сервера:
- Открываем реестр (на ПК где крутится сервер 1С:предприятия) - пуск - regedit
- Ищем в реестре виндоус службу 1С, примерно по такому пути: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\1C:Enterprise 8.3 Server Agent
- В ключе ImagePath добавляем параметр "-debug", не забываем оставить пробелы.
- После правки реестра перезапускаем службу через панель управления - .. службы.
- Готово! Теперь отладчик будет заходить внутрь серверных модулей\процедур.
У пользователя проблема, как к нему подключиться и отладить кусок кода
Бывают ситуации когда возникает трудноуловимая ошибка и появляется только у одного пользователя. Если ошибку пользователю удается воспроизвести, можно подключиться отладчиком к уже запущенному процессу пользователя и отладить процедуру. Как сделать:
- В запущенной программе пользователя поставить флаг разрешающий отладку в этом сеансе. В меню - сервис - параметры - отладка в текущем сеансе.
- запустить рядом конфигуратор и нажать меню "отладка" - "подключение" - в списке "доступные предметы отладки" появится сеанс проблемного пользователя.
Подключение к web-сервису, подключение к фоновому заданию
Для того чтобы отладить web-сервис надо поймать нужный "поток" на сервере. А это означает а) надо включить отладку на сервере (см. выше) б) надо включить спец. флажок, который позволит перехватить управление потоком.
Включение перехвата:
- Установить точку останова на процедуре, которую необходимо отладить.
- Меню "отладка" - "подключение" - "автоматическое подключение..."- установить флажок "web-сервисы..\фоновые задания".
- Дальше ждем когда точка останова сработает - готово! сеанс перехвачен.
- Далее если ваша база более менее "живая", необходимо убрать вышеустановленные флажки и только затем продолжить отладку процедуры. Если этого не сделать то при переходе к следующей строке у вас начнется чехарда с перескоками между строк. Ведь к вам будут подключаться все новые и новые фоновые задания и web-сервисы.
Спасибо!
Вопросик можно, как в коде определить что 1С запущен в режиме отладки?
Спасибо за труд! )