Часто при переносе данных (например, из нетиповой конфигурации УТ в Розницу) с использованием «Конвертации данных 2.1» (КД 2) возникает необходимость отладить правила загрузки. В правилах конвертации широко применяются алгоритмы, и при стандартной генерации модуля отладки они выгружаются как отдельные процедуры. Проанализируем ситуацию и разберем по шагам, как заставить генератор подставлять код алгоритмов непосредственно по месту их вызова, а также выясним, как правильно передавать данные и обходить ограничения подсистемы БСП.
Если код алгоритма не встроен в сам обработчик, разработчики часто используют механизм передачи значений через параметры. Рассмотрим логику взаимодействия обработчика и алгоритма через структуру параметров:
Параметры.Параметры.Этот подход универсален, однако для пошаговой отладки единого полотна кода удобнее использовать режим подстановки.
Рассмотрим подробнее настройки, отвечающие за компоновку модуля отладки. В конфигурации «Конвертация данных 2.1» или в обработке «Универсальный обмен данными в формате XML» есть специальный переключатель, управляющий способом переноса кода алгоритмов.
За эту логику отвечает переключатель «Режим отладки кода алгоритмов». По умолчанию обычно установлен режим «Вызывать алгоритмы как процедуры» или «Без отладки алгоритмов». Чтобы программный код алгоритма физически встраивался в тело вызывающего обработчика, нам необходимо явно выбрать вариант «Подставлять код алгоритмов по месту вызова» перед сохранением модуля.
Посмотрим на требования к настройке самих алгоритмов в справочниках КД 2, без соблюдения которых подстановка не сработает:
Выполнить(Алгоритмы.<ИмяАлгоритма>);. Любые нестандартные конструкции, динамическое формирование имени или разбиение строки вызова помешают автоматическому парсингу и тело алгоритма не будет вставлено.Разберем важные нюансы и ограничения, о которых нужно помнить при использовании режима подстановки по месту вызова:
Объект, Отказ, Источник). Но есть и существенный минус — если имена локальных переменных внутри алгоритма совпадают с локальными переменными обработчика, их значения будут непреднамеренно перезаписаны, что приведет к трудноуловимым логическим ошибкам.Современные конфигурации 1С построены на базе Библиотеки стандартных подсистем (БСП), которая накладывает строгие требования к безопасности. Проанализируем способы обхода этих ограничений при отладке:
КонвертацияОбъектовИнформационныхБаз) на программном уровне заблокирована загрузка внешних обработок отладки из файлов на локальном диске. При попытке указать путь к сформированному файлу отладки платформа сгенерирует исключение о нарушении прав или безопасного режима./C РежимОтладки.Выполнив все описанные настройки, мы сможем комфортно отлаживать весь поток выполнения загрузки в конфигураторе, видя полный код обработчиков вместе с развернутыми алгоритмами.