Как исправить нестабильную отладку фоновых заданий и ошибку SDBL на платформе 8.3.20.1674?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При переходе на новые релизы платформы «1С:Предприятие 8.3», в частности на версию 8.3.20.1674, разработчики часто сталкиваются с неприятными сюрпризами. Одной из самых острых проблем стала нестабильная работа отладчика при анализе фоновых заданий: курсор прыгает по случайным строкам кода, точки останова срабатывают некорректно, а иногда отладка и вовсе прерывается без видимых причин. Кроме того, в этой ветке платформы была замечена критическая ошибка SDBL, блокирующая работу отчетов. В этой статье мы подробно разберем, как стабилизировать процесс разработки и обойти эти платформенные ограничения.

Разбираем причины «скачущего» отладчика в фоновых заданиях

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

Первым делом рассмотрим самый простой, но эффективный метод — изоляцию предметов отладки. Часто отладчик «дергается», потому что он подключен одновременно к тонкому клиенту и серверу, пытаясь перехватить события из разных потоков. Выполним следующие действия:

  1. Откроем конфигуратор и перейдем в меню Отладка — Подключение....
  2. В окне «Доступные предметы отладки» проанализируем список.
  3. Если вы отлаживаете именно фоновое задание, попробуйте временно отключить такие предметы, как «Тонкий клиент» или основной «Серверный сеанс», оставив только нужное фоновое задание.
  4. В поле поиска или фильтрации пользователей укажите строго своего пользователя, чтобы исключить попытки отладчика подключиться к фоновым процессам других коллег, работающих на том же сервере.

Принудительная синхронизация фоновых заданий через БСП

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

Найдем в конфигурации вызов функции ДлительныеОперации.ВыполнитьВФоне(). Для целей отладки мы можем временно модифицировать параметры запуска. Рассмотрим пример изменения параметров:


// Временная модификация для отладки
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.ЗапуститьВФоне = Ложь; 
ПараметрыВыполнения.ЗапуститьНеВФоне = Истина;

Результат = ДлительныеОперации.ВыполнитьВФоне(ИмяПроцедуры, ПараметрыПроцедуры, ПараметрыВыполнения);

Установка свойства ЗапуститьВФоне в значение Ложь заставляет систему выполнить код здесь же, в текущем сеансе. Это полностью исключает «прыжки» отладчика, так как контекст исполнения не меняется. После завершения отладки не забудьте вернуть настройки в исходное состояние.

Использование ключа запуска РежимОтладки

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

Чтобы настроить это в Конфигураторе, пройдем по пути: Сервис — Параметры — Запуск 1С:Предприятия — Дополнительные. В поле «Параметр запуска» впишем: /РежимОтладки. Теперь при запуске из Конфигуратора система будет сама стремиться выполнять фоновые задачи в основном потоке, где это предусмотрено логикой БСП.

Решение ошибки SDBL: Таблица или поле TED2

Параллельно с проблемами отладки, на платформе 8.3.20.1674 пользователи часто сталкиваются с ошибкой: Ошибка SDBL: Таблица или поле TED2 не содержится в разделе FROM. Выясним причину этого сбоя. Данная ошибка возникает из-за некорректной трансляции запросов платформой к СУБД, когда в отчетах (например, в «Бухгалтерии предприятия 3.0») используются виртуальные таблицы регистров бухгалтерии с установленным отбором по счету.

Посмотрим, какие есть варианты решения этой проблемы:

  1. Обновление платформы: Данный баг был официально признан и исправлен в более поздних сборках. Рекомендуется перейти на версию 8.3.20.1789 или ветку 8.3.21/8.3.22.
  2. Откат на стабильную версию: Если стабильность критична, а возможности обновиться на тестовые релизы нет, лучшим решением будет откат на версию 8.3.18.1741. Это последняя стабильная версия предыдущей ветки, где подобные ошибки SDBL отсутствуют.
  3. Изменение запроса: В некоторых случаях помогает вынос отбора по счету из параметров виртуальной таблицы во временную таблицу, но это требует значительной переработки конфигурации, что не всегда оправдано.

Тонкая настройка серверной отладки (TCP и порты)

Часто нестабильность отладки связана не только с багами кода, но и с сетевыми настройками. Рассмотрим нюансы настройки TCP отладки. В новых версиях платформы 1С активно использует не только стандартный диапазон портов (1560–1591), но и порт 1550. Если этот порт закрыт брандмауэром на сервере, отладчик может подключаться «через раз».

Также обратим внимание на параметры запуска службы сервера 1С. В реестре Windows проверьте строку запуска ragent.exe. Важно использовать правильный синтаксис для включения отладки. Рекомендуется использовать /debug:


"C:\Program Files\1cv8\8.3.20.1674\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" /debug

Важный момент: использование тире -debug вместо косой черты /debug в некоторых сборках 20-й платформы приводило к игнорированию параметра. Проверьте этот момент в настройках вашей службы.

Очистка серверного кэша и сеансовых данных

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

Разберем процедуру «глубокой» очистки:

  1. Остановите службу сервера «1С:Предприятие».
  2. Перейдите в каталог данных сервера (обычно это C:\Program Files\1cv8\srvinfo).
  3. Найдите папки, чье название начинается с snccntx_. Это папки сеансовых данных.
  4. Удалите содержимое этих папок. Также очистите содержимое папки reg_1541 (за исключением файлов конфигурации кластера, если вы не хотите сбросить настройки списка баз).
  5. Запустите службу сервера.

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

Подводя итог, можно сказать, что релиз 8.3.20.1674 требует особого внимания при настройке. Для комфортной работы программисту необходимо либо использовать методы синхронизации кода через /РежимОтладки и параметры БСП, либо рассматривать переход на более свежие исправительные релизы платформы.

← На главную