Настройка отладки конфигурации 1С на клиенте и сервере

· 9 мин

Содержание

Отладку в 1С 8.3 включают в Конфигураторе: Сервис → Параметры → Запуск 1С:Предприятия → Отладка. Там выбирают протокол (HTTP — для клиент-серверных баз, предпочтительный в актуальных релизах) и указывают адрес сервера отладки. После этого отладочный сеанс запускают клавишей F5 или подключаются к уже работающему сеансу через Отладка → Подключение.

Дальше разберём настройку по шагам для файловой и клиент-серверной базы, подключение к серверному коду и внешним соединениям, работу с точками останова, табло и стеком вызовов, а также типичные причины, по которым отладчик «не цепляется» к сеансу.

С чего начинается отладка в Конфигураторе

Отладчик встроен в Конфигуратор и работает с модулями той конфигурации, которая открыта. Базовая настройка — два флажка и выбор протокола.

  1. Откройте Конфигуратор нужной информационной базы.
  2. Зайдите в Сервис → Параметры, вкладка Запуск 1С:Предприятия, подвкладка Отладка.
  3. Включите режим, при котором приложение стартует с разрешённой отладкой (флажок устанавливает ключ /debug при запуске из Конфигуратора).
  4. Выберите протокол отладки: HTTP (через сервер отладки — работает и для файловых, и для клиент-серверных баз) либо TCP/IP (устаревший, оставлен для совместимости).
  5. Для HTTP укажите адрес сервера отладки. Локально это обычно localhost (или 127.0.0.1); для серверной базы — имя или IP того сервера, где запущен сервер отладки.

Если вы отлаживаете прикладной код своей разработки на локальной машине, протокол HTTP с адресом localhost — рабочий вариант по умолчанию. Менять его на TCP/IP нужно только для старых сценариев.

Есть ещё одна полезная настройка на той же вкладке — остановка по ошибке. Когда она включена, отладчик автоматически встаёт на строке, где возникло исключение, даже если точки останова там нет. Это экономит время при поиске «плавающих» ошибок.

Запуск отладки и подключение к сеансу

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

Запуск из Конфигуратора. Нажмите F5 (Отладка → Начать отладку). Конфигуратор стартует 1С:Предприятие в режиме отладки, отладчик уже подключён — ставьте точки останова и работайте.

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

Чтобы сеанс попал в этот список, в нём должна быть разрешена отладка. В работающем приложении это делается через Сервис → Параметры → флажок разрешения отладки в текущем сеансе. Либо приложение изначально запускают с ключом командной строки:

"C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe" ENTERPRISE /IBName"МояБаза" /debug

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

Основные клавиши управления, когда отладчик встал на точке:

КлавишаДействие
F5Продолжить выполнение
F10Шагнуть через (выполнить строку, не заходя в процедуру)
F11Шагнуть внутрь вызываемой процедуры или функции
Shift+F11Выйти из текущей процедуры
Shift+F9Вычислить выражение
Shift+F5Завершить отладку

Отладка серверного кода в клиент-серверной базе

В клиент-серверной базе код делится на клиентский и серверный. Клиентский исполняется в приложении пользователя, серверный — в рабочих процессах rphost на сервере 1С. Чтобы остановиться на точке в серверной процедуре, отладчик должен подключиться именно к серверному процессу.

Как устроено соединение в кластере: клиент обращается к агенту сервера (порт 1540), тот перенаправляет к менеджеру кластера (1541), а он — к рабочим процессам. Диапазон портов рабочих процессов задаётся в свойствах рабочего сервера в консоли администрирования. Отладка идёт через сервер отладки, который регистрирует серверные вызовы как отдельные предметы отладки.

Порядок настройки:

  1. Убедитесь, что на сервере 1С разрешена и запущена отладка. Если её не включили при установке, режим задают параметром запуска агента сервера и перезапускают службу.
  2. В Конфигураторе в настройках отладки (Сервис → Параметры → Запуск → Отладка) выберите протокол HTTP и укажите адрес сервера, где работает сервер отладки.
  3. Через Отладка → Подключение в списке предметов появятся серверные вызовы и фоновые задания текущей базы. Подключитесь к нужному.
  4. Поставьте точку останова в серверной процедуре (в модуле с директивой &НаСервере или в общем серверном модуле) и инициируйте действие из клиента.

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

Не оставляйте разрешённую отладку на продуктивном сервере постоянно: это даёт лишнюю нагрузку и расширяет поверхность доступа к коду. Включили для диагностики — выключили после.

Если сервер и машина разработчика — разные компьютеры, проверьте, что порты сервера отладки не закрыты межсетевым экраном. Чаще всего серверная отладка не работает именно из-за файрвола между разработчиком и сервером.

Особенности отладки в файловом варианте

В файловой базе отдельного сервера нет: и клиентский, и серверный код исполняются в одном процессе — в приложении пользователя. Это упрощает отладку.

  • Протокол отладки — тоже HTTP, адрес сервера отладки — localhost.
  • Сервер отладки для файлового варианта поднимается локально; отдельно его настраивать и запускать как службу не требуется.
  • В списке предметов отладки файловый сеанс один — само приложение. Серверные процедуры (&НаСервере) останавливаются в этом же процессе, отдельно подключаться к ним не нужно.

Практический вывод: для локальной разработки на файловой базе достаточно включить отладку в параметрах и нажать F5. Все точки останова — и в клиентском, и в серверном коде — сработают в одном сеансе.

Единственное, что стоит учитывать: поведение серверного кода в файловой базе и на «боевом» клиент-сервере может отличаться по скорости и по работе блокировок. Логику проверяйте в файловой, а узкие места по производительности — на клиент-серверной копии.

Отладка внешних соединений и COM

Внешнее соединение (V83.COMConnector, объект Внешнее соединение) — это отдельный сеанс без интерфейса, который создаёт внешняя программа или другая база. Такой сеанс тоже можно отлаживать.

Чтобы остановиться на коде, который исполняется внутри внешнего соединения:

  1. Разрешите отладку для сеансов внешнего соединения — так же, как для обычных: через настройки базы или ключ запуска процесса, который устанавливает соединение.
  2. В Конфигураторе откройте Отладка → Подключение — сеанс типа «Внешнее соединение» появится в списке предметов отладки.
  3. Подключитесь к нему и ставьте точки останова в модулях, которые вызываются через COM-соединение (например, в общих модулях с методами, доступными извне).

С внешними компонентами ситуация иная, и её важно не путать. Встроенный отладчик 1С отлаживает код на встроенном языке, а не нативный код самой компоненты.

  • Если компонента написана на C++ (Native API или COM-технология), её внутреннюю логику отлаживают сторонним отладчиком (например, средствами среды разработки C++), подключаясь к процессу 1cv8 или rphost.
  • Со стороны 1С вы отлаживаете вызывающий код — тот, что подключает компоненту (ПодключитьВнешнююКомпоненту) и вызывает её методы. Здесь обычные точки останова работают штатно.

Если метод компоненты возвращает не то, что ожидали, сначала проверьте на точке останова параметры, которые вы в неё передаёте, и тип результата. Часто проблема не в компоненте, а в данных на входе.

Точки останова: обычные и условные

Точка останова — строка, на которой отладчик приостановит выполнение. Ставится и снимается клавишей F9 (или кликом на левом поле редактора модуля).

Условная точка останова останавливает выполнение не всегда, а только когда истинно заданное выражение. Это незаменимо в циклах: не нужно жать F5 сотню раз, чтобы поймать нужную итерацию.

  1. Поставьте обычную точку останова F9.
  2. Вызовите на ней контекстное меню и откройте условие останова.
  3. Введите булево выражение на встроенном языке, например ТекущийЭлемент.Код = "000123" или Счётчик > 100.

Отладчик встанет на строке, только когда условие вернёт Истина.

Полезные приёмы работы с точками:

  • 🔹 Список точек останова (Отладка → Список точек останова) — видно все расставленные точки по всей конфигурации, их можно включать и выключать не удаляя.
  • 🔹 Отключить все точки — когда нужно быстро «пробежать» участок без остановок, а потом вернуть точки на место.
  • 🔹 «Пустая» (серая) точка останова — признак того, что модуль с этой строкой ещё не загружен в текущем сеансе отладки либо отладчик не подключён к нужному процессу. Это не ошибка расстановки.

Смотрим значения: табло, стек вызовов, вычисление выражений

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

Наведение мыши. Самый быстрый способ: наведите курсор на переменную прямо в тексте модуля — всплывёт её текущее значение. Для коллекций и объектов значение можно развернуть.

Табло (Отладка → Табло). Окно для выражений, за которыми вы следите постоянно. Добавьте сюда переменные или выражения — и видите, как они меняются на каждом шаге. Структуры, таблицы значений и объекты раскрываются по дереву: удобно смотреть реквизиты и коллекции.

Вычислить выражение (Shift+F9). Разовый расчёт произвольного выражения в текущем контексте. Можно не только посмотреть значение, но и вызвать метод, собрать строку, проверить условие — всё с реальными данными момента остановки.

Стек вызовов (Отладка → Стек вызовов). Показывает цепочку, по которой выполнение дошло до текущей строки: какая процедура кого вызвала. Двойной клик по строке стека переносит в соответствующий кадр — и табло с переменными пересчитывается под контекст этой процедуры. Так проще понять, откуда пришли «неправильные» параметры.

Связка простая: встали на точке → посмотрели стек вызовов, чтобы понять контекст → разложили ключевые переменные в табло → вычислили спорное выражение через Shift+F9 → пошли дальше по F10/F11.

Что делать, если отладчик не подключается

Самая частая категория проблем — не сам поиск ошибки в коде, а то, что отладчик вообще не присоединяется к сеансу или точки останова не срабатывают. Разберём по симптомам.

Диагностика: выберите симптом

Отдельно про «проблемы с символами». Если отладчик останавливается, но не показывает исходный текст или ведёт себя так, будто код не тот, — почти всегда причина в рассинхроне конфигурации. Отладчик работает с модулями конфигурации, открытой в Конфигураторе; если в базе исполняется другая версия кода (например, конфигурация базы данных отличается от основной конфигурации с незафиксированными правками), точки встают «не на своё место». Обновите конфигурацию базы данных или отлаживайте ту версию, что реально исполняется.

Частые вопросы

Нужно ли что-то устанавливать отдельно для отладки?
Нет. Отладчик встроен в Конфигуратор. Для клиент-серверной базы нужен запущенный сервер отладки на стороне сервера 1С, но это компонент платформы, а не отдельный продукт.
Чем HTTP-протокол отладки лучше TCP/IP?
HTTP — текущий механизм: он единообразно работает и для файловых, и для клиент-серверных баз, проще проходит через сетевое оборудование. TCP/IP оставлен для совместимости со старыми сценариями.
Можно ли отлаживать фоновые и регламентные задания?
Да. Если на сервере разрешена отладка, фоновые задания появляются среди серверных предметов отладки. Подключитесь к нужному и поставьте точку останова в его коде.
Почему на боевом сервере отладку советуют выключать?
Разрешённая отладка добавляет нагрузку и открывает доступ к исполняемому коду. На продуктиве её включают точечно для диагностики и выключают после, в технологическое окно.
Отлаживается ли код расширения конфигурации?
Да, как и код основной конфигурации: открываете расширение в Конфигураторе, ставите точки останова в его модулях, запускаете или подключаетесь к сеансу.