Не работает отладка

Использовать режим отладки в 1С необходимо при проектировании и тестировании типовых и самостоятельно разработанных конфигураций любой сложности. Данный механизм помогает разработчикам не только устранить выявленные ошибки, но и предусмотреть многие узкие места до запуска системы в эксплуатацию. Чтобы использовать все возможности этого режима платформы 1С:Предприятие 8.3, надо не только включить его, но и знать предназначение его основных инструментов.

Включение режима отладки на сервере 1С

Если вы работаете в клиент-серверном варианте, то надо, чтобы пользоваться всеми функциями отладчика 1С, пройти процедуру включения отладки на сервере. Она не занимает много времени и не требует обширных знаний, но аккуратным быть все-таки придется, ведь процесс затронет изменение реестра на сервере.

Включить отладку в 1С вы сможете по следующему алгоритму:

  • Перейдите на сервер 1С и откройте регистр через функцию «Выполнить» из меню «Пуск». Также можно воспользоваться одновременным нажатием клавиш Windows и R на клавиатуре. Введите команду открытия регистра — «regedit»;

Рис.1 Включение отладки

  • В открывшемся окне в дереве слева пройдите по пути: «HKEY_LOCAL_MACHINE», «SYSTEM», «ControlSet001», «services», «1C:Enterprise 8.3 Server Agent»;

Рис.2 Включение отладки

  • Выделив нижний пункт, в правой части находим реквизит с именем «ImagePath» и меняем его с помощью контекстного меню. Чтобы подключить отладку на сервере, к существующему пути добавляем строку » -debug»;

Рис.3 Включение отладки

  • Осталось лишь перезапустить агент сервера 1С и можно использовать режим отладки на сервере.

Чтобы запустить отладку через клиентское приложение, заходим в 1С в режиме конфигуратора и выбираем в меню «Отладка» нужный режим. Большинство современных конфигураций работают в режиме тонкого клиента, соответственно, и отлаживать работоспособность лучше в данном виде клиента. Если в вашей конфигурации используются различные виды клиентов, то для большего спокойствия протестировать функционал можно во всех режимах. В момент запуска режима отладки 1С открывает режим «Предприятие».

Рис.4 Запуск отладки через клиентское приложение

Как только запуск 1С в режиме отладки произошел, вы увидите практически аналогичное окно программы. Единственное отличие будет снизу – 1С показывает статистику по количествам вызовов на сером фоне. Но если вы переключитесь в этот момент в конфигуратор, то заметите, что верхняя панель изменилась. Появились новые кнопки, с помощью которых вы и будете управлять режимом отладки.

Рис.5 Управление режимом отладки

Чтобы получить максимум пользы от отладки серверных процедур, нужно знать основные возможности этого режима, их назначение и способы применения. Конечно, невозможно все понять на теоретическом уровне, но когда вы ознакомитесь с основами, то на практике вам будет намного легче. К тому же, большинство особенностей отладки используется редко, поэтому глубокие знания этого механизма могут пригодиться только через несколько лет работы.

Среди тех возможностей режима отладки «Предприятия», которыми разработчики 1С пользуются регулярно, можно выделить следующие:

  • Точки останова;
  • Пошаговая отладка кода;
  • Просмотр значений;
  • Стек вызовов.

Функции отладки 1С

Основная возможность отладки заключается в том, чтобы при работе в режиме Предприятия 1С запустить отладку и проверить, как отрабатывает код. Для этого разработчики 1С устанавливают точку останова на строке алгоритма. Чтобы это сделать, необходимо выделить мышкой строку и нажать кнопку с изображением красного круга. Также вы можете щелкнуть дважды на полосе слева от текста модуля или воспользоваться «горячей» клавишей F9.

Рис.6 Проверка отработки кода

Чтобы увидеть установленные точки останова, воспользуйтесь меню «Отладка». Там вы сможете убрать все точки, отключить их, добавить новую и ознакомиться с «горячими» клавишами. Также в этом меню можно установить точку останова с условием (в виде синего круга). Она пригодится в ситуациях, когда вам нужно проверять код при выполнении условия, которое вам придется прописать при установке точки.

Рис.7 Меню «Отладка»

Еще один полезный механизм из этого меню – «Остановка по ошибке», позволяющий останавливаться только в недопустимых ситуациях. После остановки вы попадаете в конфигуратор и можете использовать другие возможности отладки. К примеру, перемещаться по строкам кода с помощью специальных клавиш, описанных в меню «Отладка», где сверху выведены более популярные функции. Разница между F10 и F11 заключается в том, что в первом случае вы будете попадать во вложенные функции и процедуры.

Рис.8 Остановка по ошибке

Серверная отладка в 1С хороша еще и тем, что вы можете посмотреть значение переменных после выполнения каждой строки кода. Простейший вариант – просто навести курсор мыши, и 1С высветит значение в выплывающем окне. Но в платформе, в меню «Отладка», встроены еще два инструмента:

  • Табло. При вызове открывается окно, в котором можно перетащить переменные, выделив их двойным нажатием в коде. В окне показывается их значение и тип на протяжении всей отладки – можно следить за изменением в процессе выполнения алгоритма;

Рис.9 Табло

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

Рис.10 Вычислить выражение

Иногда разработчикам необходимо узнать последовательность вызова процедур в алгоритме. Для этого им пригодится механизм стека вызовов из меню «Отладка». При его вызове открывается окно, в котором вы можете увидеть, из какой процедуры была вызвана та, где находится курсор отладки.

Рис.11 Последовательность вызова процедур в алгоритме

Знать и применять все эти инструменты важно для проведения тестов, перед тем как перенести свои доработки на рабочую базу. Вышеперечисленного набора механизмов более чем достаточно для успешной продуктивной работы разработчика в 1С. Но также важно следить за новым функционалом, так как отладка на сервере 1С 8.3 через несколько лет может приобрести новые возможности.

Эта статья рассказывает о том, как включить отладку на сервере 1С 8.1, 8.2 и 8.3 в операционных системах Windows и Ubuntu.

Кроме этого отмечу, что эта статья входит в небольшую серию статей об отладке в 1С:

  • Как включить отладку на сервере 1С
  • Отладка по протоколам HTTP и TCP/IP в 1С
  • Инструменты отладки в 1С
  • Отладка в 1С

Включаем отладку на сервере 1С в Windows

Запускаем редактор реестра, выполнив команду regedit (при помощи Win+R или Пуск->Выполнить).

Win+R

Или так:

Запускаем Regedit

Затем, в редакторе реестра открываем:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\1C:Enterprise 8.3 Server Agent (x86-64)

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

Редактор реестра

После этого в параметре ImagePath (подчеркнут на картинке сверху) добавляем -debug, например было:

стало:

Изменяем ImagePath

И наконец, перезапускаем службу «Агент сервера 1С:Предприятия 8.3 (x86-64)» (названием может отличаться в зависимости от версии сервера).

Перезапускаем агент сервера 1С

Готово — теперь отладка на сервере 1С должна заработать.

Включаем отладку по протоколу HTTP на сервере

Описанные выше операции позволяют включить отладку на сервере по протоколу TCP/IP (это вариант по умолчанию) и в подавляющем большинстве случаев это как раз то, что нужно.

Если же требуется отладка по протоколу HTTP, то нужно сделать все тоже самое, только параметр ImagePath в реестре будет выглядеть по другому.

Если сервер отладки будет запускаться кластером серверов, то к ImagePath нужно добавить -http, например:

Если используется удаленный сервер отладки, то нужно дополнительно указать адрес этого сервера, порт и пароль (если требуется) добавляя соответствующие параметры — -debugServerAddr, -debugServerPort и -debugServerPwd, например:

Отладка по протоколу HTTP доступна начиная с версии технологической платформы 8.3.7.

Подробнее об отладке по протоколу HTTP и о сервере отладки можно прочитать в следующей статье серии.

Включаем отладку на сервере 1С в Ubuntu

В начале становим сервер:

sudo service srv1cv83 stop

После этого открываем от имени суперпользователя файл /etc/init.d/srv1cv83 и находим в нем строку:

#SRV1CV8_DEBUG=

И приводим ее к такому виду:

SRV1CV8_DEBUG=1

Затем запускаем сервер вновь:

sudo service srv1cv83 start

В конфигураторе на клиентской машине идем в «Параметры» -> «Запуск 1С:Предприятия» -> «Дополнительные» и включаем два пункта:

  • «Устанавливать режим разрешения отладки»
  • «Начинать отладку при запуске»

Включение режима отладки

О том, как установить сервер 1С на Ubuntu 16.04/18.04 можно прочитать в этой статье.

На этом все, надеюсь, что эта статья была Вам полезна. Также напомню про другие статьи серии об отладке в 1С, ссылки на них можно найти в начале этой статьи.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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

Например, при отладке фонового задания может возникнуть ситуация, когда Отладчик не останавливается на Точке останова.

Происходит это из-за того, что Отладчик не подключен к сеансу фонового задания. То есть, он подключен к нашему пользовательскому сеансу 1С:Предприятие, а к сеансу фонового задания – нет.

Для исправления ситуации нужно настроить Отладчик таким образом, чтобы он автоматически подключался к новым сеансам.

Делается это в режиме Конфигуратор, в меню Отладка —> Подключение.

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

Шаг 1: Выбор режима отладки алгоритмов

В первую очередь выберите режим отладки алгоритмов:

  • Без отладки алгоритмов.
  • Вызывать алгоритмы как процедуры.
  • Подставлять код алгоритмов по месту вызова.

Режим «Без отладки алгоритмов» удобно использовать, когда мы точно знаем, что ошибка в обработчике не связана с кодом какого-либо алгоритма. В этом режиме код алгоритмов не выгружается в модуль отладки. Алгоритмы выполняются в контексте оператора «Выполнить», и их код недоступен для отладки.

Режим «Вызывать алгоритмы как процедуры» рекомендуется использовать в тех случаях, когда необходимо проводить отладку кода алгоритмов. Алгоритмы выгружаются как отдельные процедуры, а их вызовы вставляются в код обработчиков или других алгоритмов. Для передачи параметров в алгоритмы используется глобальная переменная «Параметры». Этот способ является рекомендуемым. Однако если разработчик использует какой-либо другой способ передачи параметров (например, используются локальные переменные обработчика), то при попытке запуска выгрузки или загрузки в режиме отладки обработчиков программа выдаст ошибку создания внешней обработки. Для отладки таких алгоритмов существует третий режим.

В режиме «Подставлять код алгоритмов по месту вызова» текст алгоритмов подставляется прямо в текст вызывающих их обработчиков или других алгоритмов с учетом вложенности вызовов. В этом режиме сняты ограничения на использование локальных переменных, однако есть ограничение на отладку рекурсивных алгоритмов. В момент формирования модуля отладки при обнаружении рекурсивных вызовов алгоритмов программа сообщит об ошибке.

Шаг 2: Формирование модуля отладки

Выполните выгрузку обработчиков по кнопке «Сформировать модуль отладки выгрузки (загрузки)». Сформированные обработчики и алгоритмы выводятся в отдельное окно для просмотра, содержимое которого можно скопировать в буфер обмена по кнопке «Копировать в буфер обмена».

Шаг 3: Создание внешней обработки

Запустите конфигуратор и создайте внешнюю обработку. В модуль обработки вставьте текст сгенерированного модуля и сохраните обработку под любым именем.

Шаг 4: Подключение внешней обработки

В заключение укажите имя файла внешней обработки в поле «Имя файла внешней обработки с модулем отладки» и нажмите на кнопку «Готово». При этом программа выполнит проверку по времени создания (обновления) файла обработки. Если обработка имеет более раннюю версию, чем версия файла модуля отладки (обработка не была обновлена данными выгрузки), то будет выведено предупреждение, и форма настройки закрыта не будет.

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

Примечание:

Отладка глобального обработчика конвертации «После загрузки правил обмена» не поддерживается.

После завершения исправления выявленных ошибок в модуле отладки необходимо самостоятельно перенести измененный код в соответствующие обработчики и алгоритмы в конфигурации «Конвертация данных».

Пример передачи параметров алгоритму

Как уже отмечалось выше, для передачи параметров алгоритму рекомендуется использовать глобальную переменную «Параметры», которая доступна во всех обработчиках конвертации. Передачу параметров алгоритму рассмотрим на примере выгрузки остатков по заданному складу организации.

В глобальном обработчике конвертации «Перед выгрузкой данных» определяем структуру «ПараметрыАлгоритмов»:

В обработчике «Перед обработкой» правила выгрузки данных определяем параметры для передачи в алгоритм «ВыгрузитьОстаткиПоСкладу»:

В теле алгоритма получаем переданные параметры:

В этой статье мы узнали о механизме отладки обработчиков событий и алгоритмов правил обмена. Выяснили, что при возникновении ошибок выгрузки или загрузки данных возможно использование обработки «Универсальный обмен данными XML» в режиме отладки обработчиков. Все необходимые тексты для отладки находится в файле правил обмена или в файле данных. Настройка и выполнение обмена данными становятся более удобными для использования и анализа.

Добавить комментарий

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