При переносе начальных остатков из Бухгалтерии 3.0 в Управление торговлей 11 пользователи часто сталкиваются с техническим сбоем при попытке системы записать данные во взаиморасчеты. Ошибка «Поле объекта не обнаружено: Валюта» сигнализирует о том, что механизм загрузки обращается к реквизиту, который отсутствует в текущей структуре документа Ввод остатков. Давайте подробно разберем, почему это происходит и как устранить проблему.
Суть проблемы заключается в несовпадении версий правил обмена или самой обработки с текущей структурой метаданных конфигурации УТ 11. Разработчики фирмы 1С регулярно меняют структуру документов для оптимизации учета. В частности, реквизит Валюта мог быть удален или переименован в актуальном релизе, в то время как старая обработка «по старинке» пытается передать в него данные. Поскольку такого поля в объекте больше нет, платформа выбрасывает исключение и прерывает процесс загрузки.
Прежде чем приступать к глубокому анализу кода, необходимо исключить базовые ошибки настройки констант. Убедитесь, что в целевой базе УТ 11 правильно настроена валютная политика:
НСИ и администрирование — Настройка НСИ и разделов — Предприятие.Использовать несколько валют.Валюта регламентированного учета — она должна быть однозначно определена (обычно это Рубль).Валюты нет дублей, так как наличие нескольких элементов с кодом 643 (рубль) может приводить к конфликтам при сопоставлении данных.Если настройки валют корректны, а ошибка повторяется, значит, проблема в самой обработке. Рассмотрим алгоритм действий по обновлению инструментария:
УТ 11. В папке с шаблоном всегда находится актуальная Обработка для переноса данных..xml, убедитесь, что вы выгружаете правила непосредственно из конфигурации-приемника. В УТ 11 правила можно получить через Сервис — Синхронизация данных — Выгрузить правила конвертации.УдалитьВалюта. Это верный признак того, что логика обработки устарела. В таких случаях единственным эффективным методом является использование актуального файла правил, где обращение к «удаленным» полям исключено из алгоритмов заполнения документов ввода остатков.Если обновление обработки не принесло результата, нам потребуется вмешательство в код. Для этого выполним следующие действия:
В Конфигураторе установите точку останова в модуле объекта обработки. Найдите процедуру ПриЗагрузкеОбъекта или аналогичный обработчик конвертации данных. Проанализируйте, в какой строке кода происходит обращение к полю Валюта. Если вы видите код, подобный:
// Пример фрагмента кода, вызывающего ошибку
Объект.Валюта = ВходящиеДанные.Валюта;
Нам необходимо модифицировать этот участок. Проверьте через Конфигуратор структуру документа Ввод остатков. Если реквизит Валюта отсутствует, замените его на актуальный реквизит, используемый для хранения валюты взаиморасчетов в текущей версии (например, ВалютаВзаиморасчетов или логику получения валюты через Договор). В случае работы с обменом через КД 2.0 (Конвертацию данных), исправьте соответствующее Правило конвертации свойств, удалив привязку к несуществующему полю.
При выполнении загрузки остатков всегда следуйте принципу «от частного к общему». Сначала попробуйте перенести небольшой сегмент данных (например, только документы по одному контрагенту). Если загрузка проходит успешно — проблема была в конкретных данных или настройках этого контрагента. Если ошибка сохраняется — дело однозначно в несоответствии версий метаданных. Не забывайте выполнять Тестирование и исправление информационной базы после подобных манипуляций, чтобы исключить ошибки ссылочной целостности.