Настройка отладки конфигурации 1С на клиенте и сервере
Содержание
Отладку в 1С 8.3 включают в Конфигураторе: Сервис → Параметры → Запуск 1С:Предприятия → Отладка. Там выбирают протокол (HTTP — для клиент-серверных баз, предпочтительный в актуальных релизах) и указывают адрес сервера отладки. После этого отладочный сеанс запускают клавишей F5 или подключаются к уже работающему сеансу через Отладка → Подключение.
Дальше разберём настройку по шагам для файловой и клиент-серверной базы, подключение к серверному коду и внешним соединениям, работу с точками останова, табло и стеком вызовов, а также типичные причины, по которым отладчик «не цепляется» к сеансу.
С чего начинается отладка в Конфигураторе
Отладчик встроен в Конфигуратор и работает с модулями той конфигурации, которая открыта. Базовая настройка — два флажка и выбор протокола.
- Откройте Конфигуратор нужной информационной базы.
- Зайдите в
Сервис → Параметры, вкладкаЗапуск 1С:Предприятия, подвкладкаОтладка. - Включите режим, при котором приложение стартует с разрешённой отладкой (флажок устанавливает ключ
/debugпри запуске из Конфигуратора). - Выберите протокол отладки: HTTP (через сервер отладки — работает и для файловых, и для клиент-серверных баз) либо TCP/IP (устаревший, оставлен для совместимости).
- Для 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С разрешена и запущена отладка. Если её не включили при установке, режим задают параметром запуска агента сервера и перезапускают службу.
- В Конфигураторе в настройках отладки (
Сервис → Параметры → Запуск → Отладка) выберите протокол HTTP и укажите адрес сервера, где работает сервер отладки. - Через
Отладка → Подключениев списке предметов появятся серверные вызовы и фоновые задания текущей базы. Подключитесь к нужному. - Поставьте точку останова в серверной процедуре (в модуле с директивой
&НаСервереили в общем серверном модуле) и инициируйте действие из клиента.
Изменение настроек отладки на сервере применяется после перезапуска рабочих процессов, а это оборвёт активные сеансы пользователей. На рабочей базе делайте это в технологическое окно, не днём.
Не оставляйте разрешённую отладку на продуктивном сервере постоянно: это даёт лишнюю нагрузку и расширяет поверхность доступа к коду. Включили для диагностики — выключили после.
Если сервер и машина разработчика — разные компьютеры, проверьте, что порты сервера отладки не закрыты межсетевым экраном. Чаще всего серверная отладка не работает именно из-за файрвола между разработчиком и сервером.
Особенности отладки в файловом варианте
В файловой базе отдельного сервера нет: и клиентский, и серверный код исполняются в одном процессе — в приложении пользователя. Это упрощает отладку.
- Протокол отладки — тоже HTTP, адрес сервера отладки —
localhost. - Сервер отладки для файлового варианта поднимается локально; отдельно его настраивать и запускать как службу не требуется.
- В списке предметов отладки файловый сеанс один — само приложение. Серверные процедуры (
&НаСервере) останавливаются в этом же процессе, отдельно подключаться к ним не нужно.
Практический вывод: для локальной разработки на файловой базе достаточно включить отладку
в параметрах и нажать F5. Все точки останова — и в клиентском, и в серверном коде — сработают в одном сеансе.
Единственное, что стоит учитывать: поведение серверного кода в файловой базе и на «боевом» клиент-сервере может отличаться по скорости и по работе блокировок. Логику проверяйте в файловой, а узкие места по производительности — на клиент-серверной копии.
Отладка внешних соединений и COM
Внешнее соединение (V83.COMConnector, объект Внешнее соединение) — это отдельный сеанс без интерфейса, который создаёт внешняя программа или другая база. Такой сеанс тоже можно отлаживать.
Чтобы остановиться на коде, который исполняется внутри внешнего соединения:
- Разрешите отладку для сеансов внешнего соединения — так же, как для обычных: через настройки базы или ключ запуска процесса, который устанавливает соединение.
- В Конфигураторе откройте
Отладка → Подключение— сеанс типа «Внешнее соединение» появится в списке предметов отладки. - Подключитесь к нему и ставьте точки останова в модулях, которые вызываются через COM-соединение (например, в общих модулях с методами, доступными извне).
С внешними компонентами ситуация иная, и её важно не путать. Встроенный отладчик 1С отлаживает код на встроенном языке, а не нативный код самой компоненты.
- Если компонента написана на C++ (Native API или COM-технология), её внутреннюю логику отлаживают сторонним отладчиком (например, средствами среды разработки C++), подключаясь к процессу
1cv8илиrphost. - Со стороны 1С вы отлаживаете вызывающий код — тот, что подключает компоненту (
ПодключитьВнешнююКомпоненту) и вызывает её методы. Здесь обычные точки останова работают штатно.
Если метод компоненты возвращает не то, что ожидали, сначала проверьте на точке останова параметры, которые вы в неё передаёте, и тип результата. Часто проблема не в компоненте, а в данных на входе.
Точки останова: обычные и условные
Точка останова — строка, на которой отладчик приостановит выполнение. Ставится и снимается клавишей F9 (или кликом на левом поле редактора модуля).
Условная точка останова останавливает выполнение не всегда, а только когда истинно заданное выражение. Это незаменимо в циклах: не нужно жать F5 сотню раз, чтобы поймать нужную итерацию.
- Поставьте обычную точку останова
F9. - Вызовите на ней контекстное меню и откройте условие останова.
- Введите булево выражение на встроенном языке, например
ТекущийЭлемент.Код = "000123"илиСчётчик > 100.
Отладчик встанет на строке, только когда условие вернёт Истина.
Полезные приёмы работы с точками:
- 🔹 Список точек останова (
Отладка → Список точек останова) — видно все расставленные точки по всей конфигурации, их можно включать и выключать не удаляя. - 🔹 Отключить все точки — когда нужно быстро «пробежать» участок без остановок, а потом вернуть точки на место.
- 🔹 «Пустая» (серая) точка останова — признак того, что модуль с этой строкой ещё не загружен в текущем сеансе отладки либо отладчик не подключён к нужному процессу. Это не ошибка расстановки.
Смотрим значения: табло, стек вызовов, вычисление выражений
Когда выполнение остановлено, нужно понять, что происходит с данными. Для этого есть несколько инструментов.
Наведение мыши. Самый быстрый способ: наведите курсор на переменную прямо в тексте модуля — всплывёт её текущее значение. Для коллекций и объектов значение можно развернуть.
Табло (Отладка → Табло). Окно для выражений, за которыми вы следите постоянно. Добавьте сюда переменные или выражения — и видите, как они меняются на каждом шаге. Структуры, таблицы значений и объекты раскрываются по дереву: удобно смотреть реквизиты и коллекции.
Вычислить выражение (Shift+F9). Разовый расчёт произвольного выражения в текущем контексте. Можно не только посмотреть значение, но и вызвать метод, собрать строку, проверить условие — всё с реальными данными момента остановки.
Стек вызовов (Отладка → Стек вызовов). Показывает цепочку, по которой выполнение дошло до текущей строки: какая процедура кого вызвала. Двойной клик по строке стека переносит в соответствующий кадр — и табло с переменными пересчитывается под контекст этой процедуры. Так проще понять, откуда пришли «неправильные» параметры.
Связка простая: встали на точке → посмотрели стек вызовов, чтобы понять контекст → разложили ключевые переменные в табло → вычислили спорное выражение через Shift+F9 → пошли дальше по F10/F11.
Что делать, если отладчик не подключается
Самая частая категория проблем — не сам поиск ошибки в коде, а то, что отладчик вообще не присоединяется к сеансу или точки останова не срабатывают. Разберём по симптомам.
Сервис → Параметры → Запуск → Отладка. Для локальной базы — localhost. Если сервер на другой машине — убедитесь, что порты сервера отладки открыты в межсетевом экране.Сервис → Параметры) или запустите процесс с ключом /debug. Проверьте, что версии платформы в Конфигураторе и в сеансе совпадают.Отладка → Подключение.rphost. Подключитесь к серверным предметам отладки и проверьте, что отладка на сервере 1С разрешена и служба перезапущена после изменения настроек.Отладка → Подключение.Отдельно про «проблемы с символами». Если отладчик останавливается, но не показывает исходный текст или ведёт себя так, будто код не тот, — почти всегда причина в рассинхроне конфигурации. Отладчик работает с модулями конфигурации, открытой в Конфигураторе; если в базе исполняется другая версия кода (например, конфигурация базы данных отличается от основной конфигурации с незафиксированными правками), точки встают «не на своё место». Обновите конфигурацию базы данных или отлаживайте ту версию, что реально исполняется.