При обновлении конфигураций 1С:Предприятие до актуальных версий пользователи и разработчики часто сталкиваются с тем, что привычные механизмы обмена данными начинают давать сбои. Особенно остро это проявляется в связке 1С:Бухгалтерия предприятия 3.0 (БП 3.0) и 1С:ERP Управление предприятием. Рассмотрим подробнее, почему возникают ошибки при выгрузке, как проанализировать состояние метаданных и какие шаги предпринять для восстановления корректной работы обмена.
Первое, на что нам необходимо обратить внимание — это используемая технология обмена. В современных релизах БП 3.0 (начиная с 3.0.70 и выше) произошел окончательный переход на формат EnterpriseData (версия правил КД 3.0). Если вы продолжаете использовать старую внешнюю обработку «Универсальный обмен данными в формате XML» и файлы правил, созданные в Конвертации данных 2.0, велика вероятность возникновения конфликтов.
Проанализируем ситуацию: старые правила могут обращаться к свойствам объектов, которые в новых релизах были переименованы, удалены или вынесены в отдельные табличные части. Разберем по шагам, как локализовать проблему, если типовая выгрузка «спотыкается» на данных.
Одной из наиболее частых точек отказа является справочник ДенежныеДокументы. В конфигурации БП 3.0 этот справочник имеет синоним «Номенклатура денежных документов». Проблема может заключаться в следующем:
ВидДокумента (ссылка на перечисление ВидыДенежныхДокументов) и Стоимость. Если в базе есть элементы с незаполненными значениями, выгрузка может прерваться с ошибкой обращения к свойству.Хотя визуально справочник «Валюты» может выглядеть исправным, для механизмов обмена критически важны технические параметры. Выясним, все ли в порядке с вашими данными:
Для быстрой проверки параметров валют можно воспользоваться небольшим фрагментом кода в консоли кода:
Выборка = Справочники.Валюты.Выбрать();
Пока Выборка.Следующий() Цикл
Если ПустаяСтрока(Выборка.Код) Или ПустаяСтрока(Выборка.ПараметрыПрописиНаРусском) Тогда
Сообщить("Проблема в валюте: " + Выборка.Наименование);
КонецЕсли;
КонецЦикла;
Если выгрузка из демонстрационной базы проходит успешно, а из рабочей — нет, значит, проблема однозначно в данных. Рассмотрим, как найти «виновника»:
Если вы вынуждены использовать внешнюю обработку выгрузки, убедитесь, что её версия соответствует версии вашей БСП (Библиотеки стандартных подсистем). В сообщении форума упоминалось, что обработка может быть слишком старой для релиза 3.0.70.41.
Проанализируем программный код обработки (если есть доступ). Часто ошибка возникает в обработчике ПередВыгрузкойОбъекта, когда код пытается обратиться к реквизиту, которого больше нет в метаданных. Пример типичной проверки, которую стоит внедрить в правила для стабильности:
// В правилах обмена (КД 2.0) в обработчике объекта
Если НЕ Объект.Метаданные().Реквизиты.Найти("НужныйРеквизит") = Неопределено Тогда
Значение = Объект.НужныйРеквизит;
Иначе
Значение = Справочники.Валюты.ПустаяСсылка();
КонецЕсли;
Важный момент: если вы обнаружили, что в вашей базе БП 3.0 есть добавленные вручную объекты (как упоминалось в теме — один новый справочник), убедитесь, что он не включен в состав плана обмена без соответствующих правил в ERP. Даже если справочник «простой», отсутствие правил сопоставления для него в приемнике может привести к аварийному завершению сессии обмена.
Подводя итог, можно сказать, что решение подобных проблем всегда лежит на стыке проверки чистоты данных и актуальности инструментов обмена. Мы рекомендуем отказаться от использования устаревших обработок КД 2.0 в пользу встроенной синхронизации. Если же это невозможно — проведите тщательную ревизию справочников Валюты и ДенежныеДокументы на предмет битых ссылок и незаполненных обязательных полей, которые стали критичными в новых релизах платформы 8.3.