Отладка серверных процедур (1Cv82). Отладка серверных процедур (1Cv82) Архитектура процесса отладки

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

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

  • Как включить отладку на сервере 1С

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

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

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

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

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

sudo service srv1cv83 stop

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

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

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

sudo service srv1cv83 start

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

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

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

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

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

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

Включение режима отладки на сервере для платформы 1С версии 8.2 и выше

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

  • Остановите через Диспетчер сервера службу «Агент сервера 1С:Предприятия». Если настройка проходит на рабочем сервере, то стоит позаботиться заранее об отсутствии пользователей 1С в базе;
  • Запускайте редактор реестра системы путем нажатия «Пуск»-«Выполнить» или сочетания клавиш «Win»+«R». В открывшемся окне ввести строку «regedit»;
  • В реестре необходимо найти пункт ;

  • Среди параметров найти «ImagePath» и изменить его, добавив к существующему значению через пробел в конце «-debug»;
  • Через Диспетчер сервера запустить службу, которую останавливали – «Агент сервера 1С:Предприятия».

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

Если необходимо включить режим отладки на платформе 8.1, то алгоритм действий практически не меняется. Единственным изменением является местонахождение параметра пути «ImagePath». В версии 8.1 он располагается в разделе .

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

Как запустить отладку на сервере 1С...

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

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

1. Найти и остановить в диспетчере служб службу «Агент сервера 1С:Предприятия 8.3» (для версии 8.3).

2. Открыть редактор системного реестра. Можно воспользоваться командной строкой или инструментом меню Пуск – Выполнить… и командой regedit .

3. В реестре найти ветку:

  • Для версии 1С 8.1
  • Для версии 1С 8.2
  • Для версии 1С 8.3

4. Изменить свойство ImagePath, добавить в конец строки директиву «-debug». Получится следующая строка свойства: «C:\Program Files (x86)\1cv8\8.3.6.2152\bin\ragent.exe» -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d «C:\Program Files (x86)\1cv8\srvinfo» –debug

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

8 назрела необходимость (о чём ниже) в значительной переработке процедуры отладки. Это отразилось в версии 8.3.7.1759. Во-первых, был создан для этой процедуры универсальный интерфейс, а во-вторых, таким изменением обеспечивается дальнейшее развитие самой программы. Ведь теперь с отладкой можно работать не только через Конфигуратор, но и с помощью Development Tools. Рассмотрим, как включить отладку на сервере 1С начиная с новой версии.

Использование нового протокола

Предыдущий отладчик, который был реализован в предыдущих версиях,осуществлял управление клиентскими и серверными приложениями с помощью протокола TCP/IP.

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

Поэтому для свободного доступа к информационным базам, которые могут находиться за пределами локальной сетки, теперь принят к использованию гибкий протокол HTTP.

Новая архитектура

Ранее, осуществляя конфигураторные отладки, сотрудник должен был подключаться к информационной базе. Для этого требовалось наделить его правами администратора.

В новой версии в прямом соединении с базами нет необходимости - достаточно просто обладать такой же базой, как у клиента. А загрузить её можно из файла.

Мобильные приложения

По протоколу HTTP теперь имеется возможность отлаживать и серверные данные, и клиентские, и приложения.

Другие изменения

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

Режим вычислений изменён на асинхронный, позволяющий продолжать работу не дожидаясь результатов.

Отладчик в Development Tools

Взаимодействие с новой процедурой выполнено в специально разработанном универсальном программном интерфейсе. С одной стороны, этот интерфейс используется Конфигуратором. С другой стороны - он внедрён в новую среду 1C:Enterprise Development Tools.

Как это выглядит теперь

После изменения программы процедура происходит по следующему сценарию:

Теперь в ней участвуют не только отладчик и предметы, как это было ранее. Теперь в цепочку введён дополнительный элемент - Server.

Мало того, что он добавлен - он служит основным элементом обмена информацией между отладчиком и предметами. А сам обмен происходит посредством выстраиваемых в очередь сообщений.

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

Обращения к серверу формируются со стороны отладчика и предметов в форме дополнительных запросов-соединений. При появлении таковых - им направляются соответствующие ответы.

Включение отладки при разных сценариях

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

Рассмотрим, что же происходит при запуске режима если мы выбираем один из двух сценариев.

Файловый сценарий

В начале файлового варианта необходимо в конфигураторных настройках указать использование нового механизма - «Отладка по протоколу HTTP».

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

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

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

Значение параметра ownerPID будет соответствовать идентификатору приложения, которое привязано к нему.

При запуске отладочного сеанса через Конфигуратор - серверное подключение произойдёт автоматически. А в нём отразятся подключённые предметы.

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

Заходим в Сервис — Параметры

Он находится в настройках предметов:

Заходим Подключение — Настройка

При использовании файлового сценария с несколькими базами одновременно нужно учесть важный нюанс, - каждый из Конфигураторов (с включённым механизмом по HTTP) отправляет свой Сервер:

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

Клиент-серверный сценарий

Отладка на сервере 1С по клиент-серверному сценарию, как и в предыдущем случае, начинается запуском режима. Здесь указывается использование нового механизма HTTP. Делается это таким образом:

ragent.exe -debug -http

При его запуске автоматически стартует за ним и отладчик.

Значение параметра ownerPID будет соответствовать идентификационному номеру менеджера кластера 1С.

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

В дальнейшем всё будет проходить подобно файловому сценарию. Только при запуске Конфигуратора серверной базы локальный сервер-отладчик уже не будет запускаться.

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

Для того чтобы можно было отлаживать серверные процедуры надо установить флаги в форме "Сервис->Параметры" конфигуратора:

Отладка на сервере приложений

Это описано в документации:

Книга «1С:Предприятие 8.1. Конфигурирование и администрирование»

Глава 18. Инструменты конфигурирования

Отладчик и замеры производительности

"Отладка кода на сервере

Для установки отладочного режима следует запустить сервер 1С:Предприятия с ключом командной строки /Debug (ragent.exe /debug)."

Ключи запуска агента сервера описаны в книге:

«1С:Предприятие 8.1. Клиент-сервер. Особенности установки и использования»

"Запуск агента сервера как сервиса

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

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

Регистрация сервиса выполняется следующей командой:

Ragent.exe -instsrvc -usr <пользователь> -pwd <пароль> -port <порт> -range <диапазоны> -seclev <уровень> -debug | -rmsrvc | -start | -stop

Instsrvc – регистрация агента кластера как сервиса Windows. Если ragent.exe запущен с этим ключом, то он выполняет регистрацию в списке сервисов Windows и завершается. Не совместим с ключами -srvc, -rmsrvc;

Usr <имя пользователя>

Pwd <пароль пользователя> – имя и пароль пользователя Windows, от имени которого должен запускаться ragent.exe как сервис Windows. Могут использоваться только совместно с ключом -instsrvc при регистрации ragent.exe как сервиса Windows;

Port <порт> – номер главного порта агента кластера. Этот порт используется консолью кластера для обращения к центральному серверу. Порт агента кластера также указывается в качестве IP порта рабочего сервера;

Range <диапазоны> – диапазоны IP портов для динамического выбора. Из них выбираются служебные порты процессов кластера при невозможности их выбора из настроек соответствующего рабочего сервера. По умолчанию: 1560-1591. Примеры значений <диапазоны>: «45:49», «45:67,70:72,77:90»;

Seclev <уровень> – уровень безопасности процесса агента кластера. Определяет уровень безопасности соединений, устанавливаемых с процессом ragent.exe. <уровень> может принимать значения: 0 (по умолчанию) соединения не защищенные, 1 – защищенные соединения только на время выполнения аутентификации пользователей, 2 – постоянно защищенные соединения.;

Rmsrvc – отмена регистрации агента кластера как сервиса Windows. Если ragent.exe запущен с этим ключом, то он отменяет свою регистрацию в списке сервисов Windows и завершается. Не совместим с ключами -srvc, -daemon, -instsrvc.

Start - запустить ragent.exe, зарегистрированный как сервис Windows. Выполняет запуск ragent.exe, ранее зарегистрированного как сервис Windows, после чего завершается;

Stop - остановить ragent.exe, зарегистрированный и запущенный как сервис Windows. Выполняет остановку ragent.exe, ранее зарегистрированного и запущенного как сервис Windows, после чего завершается;

Debug - запуск кластера серверов в режиме отладки конфигураций. "

Таким образом если сервер 1С:Предприятия был запущен как сервис и по каким-то причинам в отладочном режиме он так же должен быть запущен как сервис, необходимо сначала отменить регистрацию сервиса (ключ -rmsrvc), а затем заново зарегистрировать сервис с ключом -debug.

Очевидно, что аналогичного эффекта можно добиться и другими способами, например непосредственной правкой реестра Windows. Для этого, по всей вероятности, следует обратиться к документации по Windows.

Срабатывает только при установке ключа "-debug" в реестре. Во всех остальных случаях почему-то не работает.

"ImagePath"=

было "F:\Program Files\1cv81\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "F:\Program Files\1cv81\server"

поставили "F:\Program Files\1cv81\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -debug -d "F:\Program Files\1cv81\server"