При стандартном обмене данными между конфигурациями 1С:Управление торговлей 11 и 1С:Бухгалтерия предприятия 3.0 пользователи часто сталкиваются с ошибками валидации XDTO-пакета. Одна из самых распространенных проблем — отсутствие обязательных реквизитов у объектов, которые участвуют в обмене. Рассмотрим детально, почему возникает ошибка Не установлено значение одного из следующих свойств: ЕдиницаИзмерения и как её исправить без обновления конфигурации.
Для начала проанализируем текст ошибки, который фиксируется в Журнале регистрации на стороне отправителя (УТ 11). Ошибка возникает в общем модуле ОбменДаннымиXDTOСервер при вызове метода ОбъектXDTO.Проверить(). Система сообщает, что структура объекта Справочник.Номенклатура не соответствует требованиям схемы EnterpriseData версии 1.5.
Важно понимать, что формат EnterpriseData — это жестко описанный стандарт. Если в схеме указано, что свойство ЕдиницаИзмерения является обязательным, то при попытке выгрузить объект с пустым значением этого поля система выдаст исключение и прекратит выгрузку всего пакета. Это происходит на этапе формирования XML-файла, когда 1С проверяет, соответствует ли созданный объект правилам обмена.
В ходе обсуждения проблемы выяснилось, что обмен по одной организации проходит успешно, а по другой — падает с ошибкой. Проанализируем эту ситуацию. Это происходит потому, что синхронизация данных работает по принципу регистрации изменений. Если в «проблемной» организации в документах, зарегистрированных к обмену (например, в Реализациях товаров и услуг), используется номенклатура с незаполненными реквизитами, обмен прерывается.
В «хорошей» организации такие позиции номенклатуры просто не используются в текущем периоде выгрузки, поэтому валидатор XDTO не сталкивается с дефектными объектами. В тексте ошибки часто прямо указывается ссылка на объект. В нашем примере это Инженерное обслуживание (e1cib/data/Справочник.Номенклатура?ref=...). Это и есть та самая «виновная» позиция.
Разберем типичное заблуждение: многие пользователи считают, что если номенклатура имеет тип Услуга, то единица измерения ей не нужна. Однако для целей бухгалтерского учета и корректной работы формата EnterpriseData единица измерения обязательна для всех типов номенклатуры без исключения. Даже если вы продаете услугу, у неё должна быть базовая единица измерения (например, «шт» или «час»).
Чтобы не открывать каждую карточку вручную, мы можем воспользоваться консолью запросов. Это позволит быстро найти всю номенклатуру, которая «тормозит» обмен. Нам нужно проверить два ключевых реквизита: ЕдиницаИзмерения (в УТ 11 это обычно ЕдиницаХранения) и СтавкаНДС.
Рассмотрим пример запроса, который поможет выявить пустые значения:
ВЫБРАТЬ
Номенклатура.Ссылка КАК Ссылка,
Номенклатура.Наименование КАК Наименование,
Номенклатура.ТипНоменклатуры КАК Тип
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
(Номенклатура.ЕдиницаИзмерения = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
ИЛИ Номенклатура.ЕдиницаИзмерения ЕСТЬ NULL)
И НЕ Номенклатура.ЭтоГруппа
Если запрос возвращает строки, значит, именно эти элементы справочника блокируют синхронизацию. Также рекомендуем проверить наличие «битых» ссылок — когда в поле визуально что-то написано, но при попытке открыть это значение система выдает «Объект не найден».
Если проблемных позиций много, воспользуемся стандартной обработкой Групповое изменение реквизитов. Разберем шаги:
Номенклатура.Единица измерения (или Единица хранения) равно Пустая ссылка.После этого изменения необходимо повторно запустить синхронизацию. Система увидит, что объекты были изменены, и заново попытается их выгрузить.
Иногда бывает так, что номенклатура заполнена верно, но ошибка сохраняется. Это может быть связано с тем, что в очереди на выгрузку «зависла» старая версия объекта. Проанализируем состав отправляемых данных:
Номенклатура.Выясним причину, почему ошибка может появиться внезапно, если «два месяца назад всё работало». Основные причины:
ЕдиницаИзмерения мог остаться пустым, так как программная запись объекта часто обходит проверки формы.Важный момент: В тексте ошибки упоминается СтавкаНДС. В схеме XDTO проверка идет последовательно. Отсутствие единицы измерения часто является «критическим» для схемы, так как это свойство является обязательным элементом структуры. Пока вы не устраните пустое значение в ЕдиницаИзмерения, валидатор может указывать на соседние поля в структуре XML.
Подведем итог: обновление конфигурации (УТ или БП) часто помогает, так как разработчики 1С смягчают правила валидации в новых версиях схем EnterpriseData или добавляют автоматическое заполнение пустых значений при выгрузке. Однако, если обновление невозможно из-за доработок, единственным надежным способом является обеспечение чистоты данных. У каждого элемента номенклатуры, который участвует в обмене, должны быть заполнены код, наименование, единица измерения и ставка НДС. Проверьте эти поля, исправьте их через групповую обработку, и обмен заработает в штатном режиме.