Как исправить ошибку "Значение не является значением объектного типа (ДанныеВыгружены)" при синхронизации 1С?

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

При настройке новой синхронизации данных между конфигурациями 1С, например, между «Управление торговлей» (УТ) и «Бухгалтерия предприятия» (БП), пользователи и разработчики часто сталкиваются с прерыванием процесса. Синхронизация может доходить до 100%, но на этапе завершения начальной выгрузки данных система выдает критическую ошибку: «Значение не является значением объектного типа (ДанныеВыгружены)». Давайте подробно разберем эту ситуацию, выясним причину сбоя и рассмотрим эффективные методы решения.

Техническая суть ошибки

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

Обычно такой код выглядит примерно следующим образом:


// Пример проблемного участка кода в типовых модулях
Если Результат.ДанныеВыгружены Тогда
    ЗафиксироватьУспешнуюВыгрузку();
КонецЕсли;

Почему переменная оказывается пустой? Это происходит, когда предшествующая процедура выгрузки завершается нестандартно или возвращает пустой результат из-за скрытой ошибки, но система не перехватывает это исключение корректно и пытается прочитать статус завершения. Встречается это в процедурах наподобие ПриЗавершенииВыгрузкиДанных.

Способ 1. Проверка блокировки регламентных заданий

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

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

  1. Откройте консоль администрирования кластера серверов 1С.
  2. Найдите вашу тестовую информационную базу.
  3. Откройте ее свойства.
  4. Проверьте наличие галочки Блокировка регламентных заданий включена.
  5. Если галочка стоит — снимите ее, сохраните настройки и повторите синхронизацию.

Способ 2. Решение проблемы с разными версиями форматов (EnterpriseData)

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

Разберем алгоритм настройки для баз с большой разницей в релизах:

  1. Перейдите в настройки подключения синхронизации данных.
  2. Попробуйте вручную понизить версию формата обмена (EnterpriseData) до более ранней (например, с версии 1.8 до 1.6 или 1.5), которая 100% поддерживается обеими конфигурациями.
  3. Если прямой обмен через COM-соединение или веб-сервис постоянно падает с ошибкой, настройте первичный обмен через каталог (файл обмена).
  4. Запустите первую выгрузку в виде файла. Часто это позволяет обойти сбой инициализации прямого подключения. После успешного завершения файлового обмена можно переключить узел обратно на прямое соединение.

Способ 3. Отладка фоновых заданий

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

Посмотрим, как правильно подключить отладку для поиска причины:

  1. Для начала откройте Журнал регистрации и посмотрите, не было ли других ошибок непосредственно перед сообщением «Значение не является значением...». Часто там фиксируется реальная причина сбоя по конкретному справочнику или документу.
  2. Откройте конфигуратор базы-источника (например, УТ).
  3. В меню отладки включите параметр Отладка фоновых заданий.
  4. Найдите общий модуль, отвечающий за выгрузку. Обычно это МенеджерОбменаЧерезУниверсальныйФормат (или аналогичный модуль с указанием версии формата, например МенеджерОбменаЧерезУниверсальныйФормат13).
  5. Установите точку останова в процедуре ПриЗавершенииВыгрузкиДанных или в функциях выгрузки объектов.
  6. Запустите синхронизацию и отладчиком отследите, на каком именно объекте или реквизите система спотыкается, и почему переменная Результат возвращается со значением Неопределено.

Способ 4. Профилактика: кэш и целостность данных

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

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

← На главную