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

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

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

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

Книга «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"

Как запустить отладку на сервере 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С.

18.10.2016

Отладка на сервере 1С (8.2, 8.3...)

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

Включаем отладку на сервере "1С:Предприятие" 8.2, 8.3

Первое что необходимо сделать, это остановить службу сервера "1С:Предприятие". Заходим "Пуск - Выполнить" (либо сочетание клавишь "Windows + R"), пишем "services.msc" (конечно нужно открывать управление службами Windows от Администратора)

После остановки открываем редактор реестра Windows ("Пуск - Выполнить" (либо сочетание клавишь "Windows + R") пишем "regedit"), и находим ветку с именем "" либо "" в зависимости от версии платформы


Нас интересует ключ реестра с именем "ImagePath". В конце значения ключа дописываем " -debug". Это и означает, что режим отладки на стороне сервера 1С активизируется.
Было: "C:\Program Files\1cv8\8.3.6.2530\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"
Стало: "C:\Program Files\1cv8\8.3.6.2530\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug


Сохраняем и запускаем службу 1С. Все готово! Удачной отладки!