При работе с платформой 1С:Предприятие 8.2 (или при использовании обычных форм в режиме совместимости на 8.3) разработчики часто сталкиваются с проблемой: стандартная обработка ВыгрузкаЗагрузкаДанныхXML82.epf отказывается запускаться, выдавая серию ошибок в конфигураторе или в пользовательском режиме. Самая распространенная ошибка звучит так: "Переменная не определена (СтандартныеПодсистемыПовтИсп)". Это происходит из-за конфликта кода обработки с логикой Библиотеки стандартных подсистем (БСП). Разберем по шагам, почему это происходит и как привести инструмент в рабочее состояние.
Проанализируем ситуацию: ошибка указывает на модуль Справочник.ИдентификаторыОбъектовМетаданных.МодульМенеджера или на прямой вызов СтандартныеПодсистемыПовтИсп. Проблема заключается в том, что современные версии обработки "Выгрузка и загрузка данных XML", даже имеющие в названии "82", адаптированы под конфигурации, в которые интегрирована БСП.
Если ваша конфигурация является "самописной" (написанной с нуля без использования БСП) или это очень старая типовая версия, в ней физически отсутствуют общие модули с префиксом СтандартныеПодсистемы. Платформа пытается найти глобальный контекст или модуль повторного использования, не находит его и прерывает выполнение кода.
Важный технический нюанс: Обработка пытается определить, работает ли она на платформе 8.3 без режима совместимости, чтобы использовать более современные методы работы с XML. Для этой проверки она обращается к функции ЭтоПлатформа83БезРежимаСовместимости(). Если модуля нет — работа невозможна.
Прежде чем приступать к правке кода, рассмотрим самый правильный путь. Обработки для обмена данными поставляются вместе с конфигурацией "Конвертация данных 2.1". Проверим наличие нужных файлов в папке шаблонов на вашем компьютере. Обычно путь выглядит следующим образом:
C:\Users\ИмяПользователя\AppData\Roaming\1C\1cv8\tmplts\1c\Conversion\2_1_X_X\ExternalFiles
В этой папке обычно лежат несколько вариантов обработки:
ВыгрузкаЗагрузкаДанныхXML82.epf — для обычных форм.ВыгрузкаЗагрузкаДанныхXML83.epf — для управляемых форм.Если ваша база работает на платформе 8.2, убедитесь, что вы используете версию из старых релизов Конвертации Данных (например, версии 2.1.8.1 или ранее). В новых релизах КД разработчики 1С часто обновляют код внешних обработок, делая их зависимыми от наличия справочника ИдентификаторыОбъектовМетаданных, которого в чистой 8.2 просто не существует.
Если возможности найти старую версию нет, проанализируем, как можно быстро "подлечить" имеющуюся обработку. Как было замечено в обсуждении, иногда помогает замена серверного модуля повторного использования на клиентский, который может присутствовать в системе. Рассмотрим этот процесс.
СтандартныеПодсистемыПовтИсп.СтандартныеПодсистемыКлиентПовтИсп, заменим отсутствующее имя на существующее.Пример изменения кода:
// Было:
Если СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости() Тогда
// Логика для 8.3
Иначе
// Логика для 8.2
КонецЕсли;
// Стало (после замены на клиентский модуль):
Если СтандартныеПодсистемыКлиентПовтИсп.ЭтоПлатформа83БезРежимаСовместимости() Тогда
// Логика
КонецЕсли;
Внимание: Это решение является "костылем". Клиентский модуль может не содержать всех тех функций, которые есть в серверном. Если после этой правки возникнет ошибка "Метод не обнаружен", значит, нужно переходить к радикальному исправлению кода.
Рассмотрим самый надежный способ адаптации обработки для работы в среде без БСП. Нам нужно вручную "вырезать" все проверки, которые обращаются к несуществующим модулям. Поскольку мы точно знаем, что работаем на платформе 8.2, нам не нужна ветка кода для 8.3.
Найдем все блоки условий, похожие на этот:
Если СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости() Тогда
// Здесь код для версии 8.3
Иначе
// Здесь код для версии 8.2
КонецЕсли;
Проанализируем ситуацию и упростим код, оставив только то, что идет после оператора Иначе. Мы можем просто закомментировать всю проверку и оставить одну строку, которая гарантированно работает на 8.2. Также стоит поступить со всеми обращениями к справочнику ИдентификаторыОбъектовМетаданных. В чистой версии 8.2 обработка должна работать напрямую с объектом Метаданные.
Посмотрим на важный организационный момент. Обработка ВыгрузкаЗагрузкаДанныхXML82.epf написана под обычный интерфейс. Это означает, что:
Если ваша конфигурация работает в режиме управляемого приложения, но вам нужно выгрузить данные из версии 8.2, попробуйте запустить 1С в режиме обычного приложения (параметр запуска /RunModeOrdinaryApplication) и уже там открыть обработку.
Если стандартная "Выгрузка-загрузка" продолжает выдавать ошибки или работает нестабильно на больших объемах данных, проанализируем альтернативу. Вместо этой обработки можно использовать "Универсальный обмен данными в формате XML" (V8Exchan82.epf).
Разберем, как это сделать:
V8Exchan82.epf.Этот метод гораздо стабильнее, так как V8Exchan82 не имеет таких жестких зависимостей от БСП и позволяет выгружать данные порциями, что критично для производительности старых версий платформы.
Таким образом, мы выяснили, что основной причиной ошибки является попытка универсальной обработки подстроиться под возможности БСП, которой нет в вашей базе. Исправив вызовы модулей или вырезав лишние проверки, вы получите стабильно работающий инструмент для переноса данных.