При работе с конфигурацией 1С:Зарплата и Управление Персоналом 3.1 (ЗУП) разработчики часто сталкиваются с ситуацией, когда точка остановки в общем модуле, отвечающем за формирование расчетных листков, игнорируется отладчиком. Особенно остро эта проблема проявлялась на стыке версий платформы 8.3.10 и 8.3.11. Рассмотрим подробно технические причины этого поведения и разберем, как обеспечить стабильную работу отладчика в файловом и клиент-серверном режимах.
Прежде всего, проанализируем, как именно ЗУП 3.1 формирует отчеты. В современных конфигурациях на базе БСП (Библиотеки стандартных подсистем) большинство тяжелых операций, к которым относится и генерация расчетных листков, вынесено в фоновые задания. Это сделано для того, чтобы интерфейс программы не «замирал», пока сервер собирает данные.
Когда мы нажимаем кнопку «Сформировать», происходит следующее:
ФоновыеЗадания.В платформе 8.3.10 автоматическое подключение отладчика к таким «второстепенным» сеансам в файловом режиме работало нестабильно. В версии 8.3.11 механизмы перехвата управления были существенно доработаны. Если вы работаете на устаревшей платформе, отладчик просто «не видит» момент запуска фонового процесса, и точка остановки в модуле, например, при вызове процедуры УчетНачисленийПеречисленияРазрез, не срабатывает.
Выясним причину различий в поведении платформ через призму протоколов связи. Исторически 1С использовала протокол TCP/IP для отладки. Начиная с версий 8.3.10 и выше, разработчики платформы начали внедрять отладку по протоколу HTTP.
Рассмотрим основные отличия, влияющие на нашу ситуацию:
Если в настройках вашей базы (параметр запуска /Debug -http) или в настройках сервера 1С не включен современный протокол, это может быть прямой причиной игнорирования точек остановки в платформе 8.3.10.
Проанализируем ситуацию, характерную для файлового режима. Многие полагают, что в файловой базе нет полноценных фоновых заданий, но это не так — они эмулируются самой платформой. Для корректной отладки необходимо выполнить ручную настройку.
Разберем по шагам, как проверить настройки подключения:
В версии 8.3.11 этот флажок зачастую срабатывает «из коробки» корректнее, в то время как в 8.3.10.2299 могли наблюдаться ошибки кэширования этого состояния. Если флажок стоит, но отладка не идет — попробуйте его снять, нажать «ОК», а затем установить заново.
Иногда причина кроется в свойствах самого общего модуля, в котором вы пытаетесь поймать ошибку. Для формирования расчетных листков в ЗУП используются модули с определенными признаками. Проверим следующие свойства:
В платформе 8.3.11 были исправлены критические ошибки, связанные с «пробросом» контекста отладки через модули, у которых установлены специфические комбинации этих флагов (например, когда вызов идет из модуля с флагом Клиент в модуль с флагом Сервер через промежуточный модуль).
Выясним, почему очистка кэша является обязательным пунктом чек-листа. Платформа 8.3.10 имела ряд зафиксированных багов, связанных с обновлением исполняемого кода в режиме отладки. Вы вносите изменения в общий модуль, ставите точку остановки, но платформа продолжает исполнять «старую» версию кода из локального кэша пользователя.
Для решения этой проблемы необходимо очистить содержимое папок:
%AppData%\Local\1C\1cv8
и
%AppData%\Roaming\1C\1cv8
После очистки кэша и перезапуска платформы 8.3.11 механизмы хеширования отрабатывают лучше, гарантируя, что отладчик видит именно ту строку кода, на которой установлена точка.
В самой конфигурации ЗУП есть внутренняя настройка, которая может влиять на возможность отладки. Рассмотрим, как это проверить в пользовательском интерфейсе:
Если вы столкнулись с невозможностью отладить формирование расчетного листка, выполните следующие действия:
Если Истина Тогда
ВызватьИсключение "Стоп для отладки";
КонецЕсли;
Следуя этим рекомендациям, вы сможете эффективно диагностировать алгоритмы расчета заработной платы и формирования отчетности в любых версиях ЗУП 3.1.