Поддерживает ли «1С:Конвертация данных 2.1» работу с управляемыми формами и современными конфигурациями?

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

При переходе на современные версии конфигураций, таких как 1С:Бухгалтерия предприятия 3.0, Управление торговлей 11 или 1С:CRM 3.0, у разработчиков часто возникает вопрос: можно ли продолжать использовать привычный инструмент «1С:Конвертация данных 2.1» (КД 2.1) для организации обмена со старыми системами (например, УТ 10.3). Рассмотрим подробнее технические аспекты этого вопроса и разберем способы решения типичных проблем, возникающих при работе в среде управляемых форм.

Универсальность технологии Конвертации данных 2.1

Важно понимать, что сама конфигурация Конвертация данных — это специализированная база для разработки правил обмена. Результатом работы в ней является файл XML, содержащий алгоритмы сопоставления объектов. Этот файл интерпретируется универсальными обработками, которые существуют под разные версии платформы. Проанализируем основные компоненты этой системы:

  1. Правила обмена (XML): Не зависят от типа форм (обычные или управляемые).
  2. Обработка выгрузки метаданных (MD83Exp.epf): Необходима для получения структуры объектов конфигурации в формате XML для последующей загрузки в КД 2.1.
  3. Обработка обмена данными (V8Exchan83.epf): Выполняет фактическое чтение или запись данных по правилам.

Таким образом, ответ на вопрос о поддержке однозначен: да, КД 2.1 поддерживает работу с управляемыми формами. Однако при использовании актуальных версий платформы (8.3.9 и выше) разработчики сталкиваются с рядом ошибок, которые требуют ручного исправления в коде внешних обработок.

Где взять актуальные версии обработок?

Многие пользователи ищут обработки внутри типовых конфигураций (например, УниверсальныйОбменДаннымиXML), но они часто адаптированы под внутренние нужды БСП (Библиотеки стандартных подсистем) и могут работать некорректно с произвольными правилами. Разберем, где найти оригинальные и наиболее подходящие файлы:

В комплекте поставки самой конфигурации Конвертация данных всегда идет папка с дополнительными файлами. Обычно она располагается по пути установки шаблонов:

.../1cv8/tmpls/1c/Conversion/[Номер_Версии]/ExtFiles/

В этой директории мы найдем:

Решение проблемы с методом ПравоДоступа на платформе 8.3.9+

Одной из самых распространенных ошибок при открытии обработки V8Exchan83.epf в конфигурациях на управляемых формах является ошибка выполнения метода ПравоДоступа(). Проанализируем ситуацию: начиная с версии платформы 8.3.9, логика работы этого метода изменилась. Если ранее проверка права, которое не предусмотрено для конкретного типа объекта (например, право Удаление для РегистрСведений), просто возвращала Ложь, то теперь система генерирует исключение.

Выясним причину: регистры сведений не поддерживают право Удаление (у них есть только Чтение и Изменение). Когда обработка перебирает все метаданные для построения дерева объектов, она спотыкается на первой же проверке прав. Чтобы исправить это, нам необходимо внести изменения в Модуль объекта или Модуль управляемой формы обработки.

Рассмотрим пример исправления кода с использованием блока Попытка...Исключение, который позволяет проигнорировать недопустимые проверки:


Для каждого ОбъектМД Из Метаданные.РегистрыСведений Цикл
    Попытка
        Если Не ПравоДоступа("Изменение", ОбъектМД) Тогда 
            Продолжить; 
        КонецЕсли;
    Исключение
        // Если право неприменимо к объекту, просто идем дальше
        Продолжить;
    КонецПопытки;
КонецЦикла;

Также в современных конфигурациях рекомендуется заменять прямое обращение к глобальному методу на вызов через коллекцию метаданных: Метаданные.ПравоДоступа("Удаление", ОбъектМД). Это работает более стабильно в новых условиях.

Особенности выполнения кода в управляемых формах

При написании обработчиков событий внутри КД 2.1 (например, «Перед выгрузкой», «При загрузке»), работая с управляемыми конфигурациями, мы должны помнить о контексте выполнения кода. В управляемом приложении обмен всегда выполняется на сервере.

Проанализируем ограничения, которые это накладывает на разработчика:

Проблемы COM-соединения и разрядности

Если мы планируем выполнять обмен не через файл XML, а напрямую (через COM-соединение), важно учитывать разрядность сервера. Если ваша база БП 3.0 работает на 64-битном сервере 1С, а подключаться нужно к 32-битной базе УТ 10.3, возникнет ошибка инициализации COM-объекта.

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

  1. Использовать промежуточный обмен через XML-файлы (самый надежный способ).
  2. Настроить запуск 32-битного COM-коннектора через Службы компонентов (dcomcnfg) в Windows, создав отдельное приложение COM+.

Отладка правил в управляемом интерфейсе

Отладка кода внутри КД 2.1 для управляемых форм несколько сложнее, чем для обычных. Разберем алгоритм действий:

В обработке V8Exchan83.epf переходим на вкладку «Дополнительные настройки» и включаем «Режим отладки обработчиков». Система предложит выгрузить программный код правил во внешний файл. После этого на основе этого файла создается временная внешняя обработка, которую можно открыть в конфигураторе и установить точки останова.

Важно: Чтобы точка останова сработала, сервер 1С должен быть запущен с ключом -debug, иначе отладчик не «подцепит» серверный контекст выполнения обмена.

Заключение

Несмотря на появление Конвертации данных 3.0 (основанной на формате EnterpriseData), версия 2.1 остается «золотым стандартом» для обмена между конфигурациями разных поколений. Она прекрасно справляется с управляемыми формами, если разработчик своевременно корректирует служебные обработки под требования актуальных версий платформы и учитывает серверный контекст исполнения кода.

← На главную