Каждый разработчик 1С рано или поздно сталкивается с ситуацией, когда в процессе отладки кода программа игнорирует установленную точку останова. При этом сам кружок точки останова на полях Конфигуратора выглядит необычно — он становится серым или блеклым. Особенно часто это происходит при попытке отладить печатные формы (например, популярную форму Т-5 «Приказ о переводе» в решениях 1С:ЗУП или 1С:ЗКГУ 3.1).
В этой статье мы подробно разберем, почему точки останова становятся серыми и неактивными, как вернуть их в рабочее состояние и какие подводные камни существуют при отладке механизмов печати, фоновых заданий и серверного кода.
Самая простая и наиболее распространенная причина серого цвета пиктограммы — это ручное или случайное отключение механизма точек останова в самом Конфигураторе. Платформа 1С позволяет временно деактивировать все точки, не удаляя их из кода. Это удобно, когда нужно быстро протестировать работу алгоритма без постоянных прерываний, но затем программисты забывают вернуть настройки назад.
Давайте разберем по шагам, как быстро исправить эту ситуацию:
Проанализируем пример простого кода, где точка останова может быть отключена:
Процедура ПечатьПриказаТ5(МассивОбъектов, ПараметрыПечати) Экспорт
// Точка останова установлена на строке ниже, но горит серым цветом
ТабличныйДокумент = Новый ТабличныйДокумент;
ЗаполнитьДанныеПечати(ТабличныйДокумент, МассивОбъектов);
КонецПроцедуры
После нажатия комбинации Ctrl + Shift + F9 серый кружок снова станет ярко-красным, и при следующем прохождении этой строки кода выполнение программы приостановится.
Если точки останова горят красным цветом, но программа все равно упорно игнорирует их при выводе печатной формы Т-5 на экран, дело в архитектуре конфигураций, построенных на базе Библиотеки стандартных подсистем (БСП). В современных версиях 1С генерация печатных документов по умолчанию происходит в асинхронном фоновом режиме (через механизм так называемых «длительных операций»).
Поскольку фоновое задание выполняется в отдельном сеансе на сервере, ваш текущий отладчик Конфигуратора его просто «не видит». Выясним, как заставить отладчик перехватывать такие вызовы.
Способ А. Настройка автоматического подключения к фоновым заданиям
Способ Б. Использование параметра запуска "РежимОтладки"
Чтобы БСП не создавала фоновые задания для формирования отчетов и печатных форм, а выполняла их в основном клиентском потоке, мы можем запустить сеанс «1С:Предприятия» со специальным ключом.
/C РежимОтладки (обратите внимание на латинскую букву C).Часто код формирования печатных форм Т-5 или любых других документов расположен в модулях менеджеров или серверных общих модулях с признаком &НаСервере или &НаСервереБезКонтекста. Если ваша база работает в клиент-серверном варианте (под управлением MS SQL, PostgreSQL и т.д.), отладка серверного кода требует специального разрешения на стороне сервера приложений 1С.
Если служба сервера 1С:Предприятия запущена без ключа отладки, точки останова на сервере работать не будут. Проанализируем, как администратор системы может включить этот режим:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3...).ImagePath добавьте ключ -debug в строку запуска службы.После этого серверный отладчик станет доступен, и точки останова в серверных процедурах начнут корректно отрабатывать.
Если печатная форма Т-5 в вашей программе ЗКГУ является не типовой, а зарегистрирована как внешняя печатная форма через механизм дополнительных отчетов и обработок, стандартная расстановка точек останова в локальном файле .epf на диске компьютера не даст результата.
Рассмотрим подробнее механизм работы ВПФ: когда пользователь нажимает кнопку печати в документе «Кадровый перевод», система извлекает двоичные данные файла обработки из базы данных, сохраняет их во временную папку на сервере под случайным именем и запускает её оттуда. Конфигуратор не связывает ваш открытый локальный файл с тем файлом, который реально выполняется сервером.
Для решения этой проблемы мы рекомендуем использовать следующие подходы:
Если точки останова ведут себя непредсказуемо — смещаются на другие строки, самопроизвольно отключаются или горят серым цветом без видимых причин — это может быть следствием частого применения механизма динамического обновления конфигурации базы данных (так называемого «демонического обновления»). При этом кэш Конфигуратора рассинхронизируется с реальной структурой метаданных на сервере.
Для устранения этой проблемы выполните следующие действия:
%userprofile%\AppData\Local\1C\1cv8%userprofile%\AppData\Roaming\1C\1cv8Соблюдение этих простых правил и понимание механизмов работы платформы 1С:Предприятие 8.3 поможет вам быстро находить и устранять причины, по которым отладчик игнорирует точки останова в коде.