Как исправить ошибку «СправочникСсылка.ДенежныеДокументы» при синхронизации УТ 11 и БП 3.0?

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

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

{ОбщийМодуль.МенеджерОбменаЧерезУниверсальныйФормат.Модуль(40987)}: Ошибка при вызове конструктора (ОписаниеТипов) ПолученныеДенежныеДокументы.Колонки.Добавить("ДенежныйДокумент", Новый ОписаниеТипов("СправочникСсылка.ДенежныеДокументы")); по причине: Недопустимое значение параметра (параметр номер '1') (СправочникСсылка.ДенежныеДокументы)

Рассмотрим причины возникновения этой проблемы и разберем практические способы ее решения.

Причина возникновения ошибки

Проанализируем техническую сторону проблемы. Общий модуль МенеджерОбменаЧерезУниверсальныйФормат содержит универсальные правила конвертации и алгоритмы обмена, общие для конфигураций-источников и конфигураций-приемников.

В коде модуля выполняется инициализация таблицы значений для хранения сведений о полученных денежных документах:


// Инициализация таблицы полученных денежных документов
ПолученныеДенежныеДокументы = Новый ТаблицаЗначений;
ПолученныеДенежныеДокументы.Колонки.Добавить("ДенежныйДокумент", Новый ОписаниеТипов("СправочникСсылка.ДенежныеДокументы"));
ПолученныеДенежныеДокументы.Колонки.Добавить("Валюта", Новый ОписаниеТипов("СправочникСсылка.Валюты"));
КомпонентыОбмена.ПараметрыКонвертации.ПолученныеДенежныеДокументы = ПолученныеДенежныеДокументы;

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

Ошибка была официально зарегистрирована фирмой 1С под номером 00-00137544.

Способ 1. Обновление конфигураций или установка патча (рекомендуемый)

Поскольку проблема является ошибкой типовых правил обмена, наиболее правильное решение — обновление конфигураций до актуальных релизов или установка оперативного исправления (патча):

  1. Обновите конфигурацию 1С:Управление торговлей 11 на релиз, в котором исправлена ошибка 00-00137544.
  2. Если возможности быстро обновить всю конфигурацию нет, скачайте патч (файл исправления .efd) с портала 1С:ИТС и установите его через раздел «Администрирование» — «Обслуживание» — «Обновление программы» — «Установка обновлений (патчей)».
  3. Также вы можете отдельно загрузить обновленные правила обмена (файл XML) в настройках синхронизации данных, не меняя релиз самой конфигурации.

Способ 2. Временная доработка через расширение конфигурации

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

В расширении можно переопределить логику инициализации таблицы или обернуть создание типов в безопасную проверку существования справочника в метаданных конфигурации:


// Безопасное формирование описания типов с проверкой метаданных
ПолученныеДенежныеДокументы = Новый ТаблицаЗначений;

Если Метаданные.Справочники.Найти("ДенежныеДокументы") <> Неопределено Тогда
    ТипДенежныйДокумент = Новый ОписаниеТипов("СправочникСсылка.ДенежныеДокументы");
Иначе
    ТипДенежныйДокумент = Новый ОписаниеТипов;
КонецЕсли;

ПолученныеДенежныеДокументы.Колонки.Добавить("ДенежныйДокумент", ТипДенежныйДокумент);
ПолученныеДенежныеДокументы.Колонки.Добавить("Валюта", Новый ОписаниеТипов("СправочникСсылка.Валюты"));
КомпонентыОбмена.ПараметрыКонвертации.ПолученныеДенежныеДокументы = ПолученныеДенежныеДокументы;

Метод Метаданные.Справочники.Найти() позволяет заранее убедиться, что соответствующий объект присутствует в текущей конфигурации, предупреждая падение платформы.

Способ 3. Добавление объекта в пустую доработанную конфигурацию

Для конфигураций, уже снятых с поддержки и находящихся на доработке, разработчики часто применяют временный вариант: добавляют пустышку справочника ДенежныеДокументы (а также реквизит Валюта) непосредственно в дерево метаданных УТ.

В этом случае конструктор Новый ОписаниеТипов("СправочникСсылка.ДенежныеДокументы") отрабатывает штатно, не вызывания сбоя. Однако помните, что после проведения официального обновления этот фиктивный объект необходимо аккуратно удалить из метаданных.

← На главную