Отладка серверных процедур (1Cv82). Отладка серверных процедур (1Cv82) Установка режима отладки на сервере 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С. Все готово! Удачной отладки!

Эта статья рассказывает о том, как включить отладку на сервере 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С:Предприятия» -> «Дополнительные» и включаем два пункта:

  • «Устанавливать режим разрешения отладки»
  • «Начинать отладку при запуске»
Отладка серверных процедур (1Cv82)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Отладчик в Development Tools

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ragent.exe -debug -http

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

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

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

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

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

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

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

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

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

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

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

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

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

Если необходимо включить режим отладки на платформе 8.1, то алгоритм действий практически не меняется. Единственным изменением является местонахождение параметра пути «ImagePath». В версии 8.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"