Проблемы совместимости Конвертации данных 3.0 с новыми конфигурациями: почему не запускается выгрузка правил и как это исправить

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

В процессе разработки сложных интеграций между современными конфигурациями 1С специалисты часто сталкиваются со сбоями при попытке использовать устаревшие инструменты. Типичный пример — работа в конфигурации «Конвертация данных» редакции 3.0 (в частности, на релизах вроде 3.0.5.3), когда при попытке выгрузить правила синхронизации из новой базы система выдает ошибки или вовсе не запускает процесс. Разберем по шагам, почему возникает эта проблема, как ее оперативно решить «здесь и сейчас» и к какому глобальному решению стоит прийти для долгосрочной стабильной работы.

Выясним причину: почему ломается выгрузка правил в КД 3.0

Проанализируем ситуацию, описанную разработчиками. При попытке выполнить выгрузку правил синхронизации на современных релизах конфигураций, построенных на новых версиях Библиотеки Стандартных Подсистем (БСП) и платформы 1С 8.3, стандартные обработки КД 3.0 завершают работу с ошибкой. Основные причины этого кроются в следующем:

  1. Эволюция метаданных и платформы: Новые релизы БСП активно используют современные механизмы платформы 1С, включая безопасный режим работы, новые свойства объектов и измененную структуру хранения настроек интеграции. Старая обработка выгрузки просто не «знает» о существовании этих реквизитов и методов.
  2. Ограничения обработки выгрузки: Встроенная или внешняя обработка выгрузки метаданных и правил синхронизации, поставляемая с КД 3.0.5.3, проектировалась под стандарты 2017 года. При попытке прочитать структуру современных конфигураций она натыкается на непредвиденные типы данных или заблокированные вызовы методов в безопасном режиме.
  3. Изменение логики работы планов обмена: В новых типовых решениях механизмы регистрации изменений и работы с планами обмена претерпели существенные изменения, из-за чего старый программный код выгрузки теряет контекст исполнения.

Вариант 1. Оперативное исправление проблемы в рамках КД 3.0

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

Рассмотрим подробнее, в чем заключается суть доработки обработки. Чаще всего сбой происходит при вызове процедур инициализации параметров подключения и чтении структуры конфигурации. Для исправления обработку открывают в конфигураторе и вносят корректировки в модули, отвечающие за обход метаданных.

Посмотрим на пример логики обхода метаданных, которая в старых версиях могла вызывать ошибку при обращении к несуществующим или измененным свойствам:


// Пример корректировки обхода реквизитов метаданных для предотвращения падения обработки
Для Каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл
    // Добавляем проверку на доступность свойств в текущем контексте платформы
    Попытка
        ИмяРеквизита = Реквизит.Имя;
        ТипРеквизита = Реквизит.Тип;
        // Код обработки реквизита...
    Исключение
        ЗаписьЖурналаРегистрации("КД_Выгрузка", УровеньЖурналаРегистрации.Предупреждение, , , 
            "Ошибка обработки реквизита: " + ОписаниеОшибки());
    КонецПопытки;
КонецЦикла;

Для исправления проблемы рекомендуется скачать адаптированную версию обработки выгрузки правил синхронизации. Такие обработки оптимизированы для запуска на актуальных версиях БСП и не вызывают аварийного завершения работы платформы. Найти их можно на партнерском форуме 1С или на профильных ИТ-порталах для разработчиков 1С.

Вариант 2. Глобальное решение — переход на «Конвертацию данных» редакции 3.1

Пытаться поддерживать работоспособность КД 3.0 в долгосрочной перспективе — тупиковый путь. Фирма «1С» совершила качественный скачок и выпустила редакцию «Конвертация данных 3.1». В этой версии архитектурный подход к интеграции был кардинально переработан.

Рассмотрим, какие принципиальные изменения произошли в КД 3.1 и как они решают проблемы разработчиков:

  1. Отказ от обработки MD83Exp.epf для чтения метаданных: В КД 3.1 разработчики полностью изменили логику получения структуры конфигураций. Больше не нужно запускать внешние обработки, которые зависают или падают на новых версиях платформы. Теперь метаданные можно загружать напрямую из XML-файлов конфигурации, выгруженных из Конфигуратора, или напрямую из проектов EDT (1C:Enterprise Development Tools). Это полностью решает проблему совместимости с платформенными обновлениями.
  2. Объединение технологий КД 2.1 и КД 3.1: Одной из главных болей разработчиков в КД 3.0 было отсутствие полноценного инструмента для создания правил регистрации объектов (ПРО). Из-за этого приходилось держать базы КД 2.1 только ради правил регистрации. В новой КД 3.1 этот функционал объединен. Теперь это единая среда разработки, где вы можете создавать правила конвертации по технологии EnterpriseData (XDTO), классические XML-правила (КД 2.1) и правила регистрации (ПРО).
  3. Выгрузка правил регистрации в программный код: Начиная с КД 3.1, правила регистрации объектов можно выгружать не только в привычный XML-формат, но и генерировать в виде чистого программного кода на языке 1С. Это существенно упрощает отладку и ускоряет работу планов обмена в целевых базах.
  4. Поддержка групповой разработки: В КД 3.1 реализован механизм совместной работы над правилами обмена с возможностью захвата объектов и версионированием, аналогичный механизму Хранилища конфигурации. Это незаменимо при создании сложных обменов силами нескольких программистов.

Разберем по шагам: как настроить регистрацию изменений без «ломания» конфигурации

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

Шаг 1. Использование типовых планов обмена. В современных конфигурациях 1С уже присутствует предопределенный план обмена, предназначенный для синхронизации через универсальный формат (EnterpriseData). Нет никакой необходимости создавать новые планы обмена вручную и изменять структуру метаданных основной конфигурации.

Шаг 2. Разработка правил регистрации объектов (ПРО). Создавать логику отбора регистрируемых данных следует в КД 3.1. Вы определяете, при каких условиях объекты (например, документы определенного вида или контрагенты по определенным папкам) должны попадать в обмен. Пример программного условия в правилах регистрации может выглядеть так:


// Пример условия регистрации документа в правилах регистрации объектов (ПРО)
Отказ = Истина;
Если Источник.Проведен Тогда
    // Регистрируем только проведенные документы текущего года
    Если Источник.Дата >= НачалоГода(ТекущаяДата()) Тогда
        Отказ = Ложь;
    КонецЕсли;
КонецЕсли;

Шаг 3. Использование расширений конфигурации. Если вам все же требуется кастомизировать логику планов обмена или добавить свои реквизиты, используйте механизм расширений. План обмена можно добавить в расширение и настроить состав отправляемых данных без изменения основной конфигурации, оставив ее на полной поддержке.

Шаг 4. Подгрузка правил через режим «1С:Предприятие». Готовые правила конвертации и правила регистрации не нужно внедрять в код конфигурации. В режиме «1С:Предприятие» в справочнике «Настройки синхронизации данных» предусмотрена стандартная возможность загрузки внешних правил из файлов. Вы просто загружаете подготовленные в КД файлы правил, и система начинает работать по вашим алгоритмам.

Рекомендация для разработчика

Если перед вами стоит задача реализовать сложный обмен между современными релизами конфигураций 1С, соглашаться на проект определенно стоит. Однако забудьте про использование устаревшей версии КД 3.0.5.3. Разверните актуальную версию «Конвертация данных 3.1». Это избавит вас от необходимости дорабатывать напильником старые выгрузки метаданных, позволит использовать все преимущества современных механизмов интеграции и обеспечит стабильную работу обмена данными без снятия конфигураций с поддержки.

← На главную