Почему документ Поступление загружается пустым или без организации в 1С:Бухгалтерию 3.0 при обмене через КД 2.1?

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

При сопровождении типовых обменов на базе Конвертации данных 2.1 специалисты часто сталкиваются с ситуацией, когда после очередного обновления конфигурации-приемника (чаще всего это 1С:Бухгалтерия предприятия 3.0) отлаженный годами обмен начинает давать сбои. Типичный симптом: документ (например, Поступление (акт, накладная, УПД)) создается в базе, но выглядит совершенно пустым, либо в нем отсутствует Организация, хотя в файле выгрузки данные присутствуют. Рассмотрим подробно, почему это происходит и как исправить правила конвертации.

Анализируем причину пустого объекта при загрузке по ссылке

Проанализируем ситуацию: часто загрузка документа инициируется не напрямую, а «по ссылке». Например, сначала загружается Счет-фактура полученный, который содержит ссылку на Документ-основание (наше Поступление). Механизм Конвертации данных видит ссылку, ищет соответствующее Правило конвертации объекта (ПКО) и начинает загрузку документа.

Если в процессе заполнения реквизитов объекта происходит критическая ошибка (несоответствие типов данных или неудачная попытка записи зависимого справочника), платформа может создать «пустую болванку» объекта. Выясним причину, по которой стандартные механизмы заполнения 1С не срабатывают в этот момент. При загрузке через КД 2.1 всегда устанавливается признак DataExchange.Load = True. Это отключает большинство проверок и стандартный обработчик ОбработкаЗаполнения. Рассмотрим фрагмент кода, который часто пытаются использовать для отладки в модуле объекта:


Если ЕстьРеквизитОрганизация И НЕ ЗначениеЗаполнено(ДокументОбъект.Организация) Тогда
    ОсновнаяОрганизация = БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация");
    Справочники.Организации.ПроверитьНаличиеОрганизацииПриОднофирменномУчете(ОсновнаяОрганизация);
    ДокументОбъект.Организация = ОсновнаяОрганизация;
КонецЕсли;

Этот код не сработает автоматически при загрузке, так как событие заполнения игнорируется. Если Организация не пришла из файла или не была найдена по полям поиска, она останется пустой.

Главная причина: смена типов перечислений Ставки НДС

Разберем основной «подводный камень» последних релизов 1С:Бухгалтерия предприятия 3.0. Фирма «1С» провела рефакторинг метаданных в части учета НДС. Ранее во всех объектах использовалось перечисление СтавкиНДС. В новых версиях в справочнике Номенклатура реквизит СтавкаНДС теперь ссылается на новое перечисление — ВидыСтавокНДС.

В то же время, в табличных частях документов реквизиты могут по-прежнему использовать старое перечисление СтавкиНДС. Рассмотрим, как это ломает обмен:

  1. При загрузке документа Поступление система начинает заполнять табличную часть Товары.
  2. Для каждой строки ищется или создается объект Номенклатура.
  3. Если в Правилах конвертации свойств (ПКС) для номенклатуры указано старое соответствие (из СтавкиНДС в СтавкиНДС), то при попытке записать значение в поле, которое теперь ожидает тип ВидыСтавокНДС, происходит тихая ошибка или подстановка пустого значения.
  4. В некоторых случаях это приводит к тому, что весь родительский объект (документ) не может быть корректно записан или заполнен, и мы получаем «битую» ссылку или пустой документ.

Шаг за шагом: исправляем правила конвертации (ПКО)

Для решения проблемы нам необходимо внести изменения в настройки ПКС в конфигурации Конвертация данных 2.1. Выполним следующие действия:

  1. Перейдем в ПКО для справочника Номенклатура.
  2. Найдем свойство СтавкаНДС.
  3. Проанализируем тип приемника. Если в приемнике (БП 3.0) это поле теперь имеет тип ПеречислениеСсылка.ВидыСтавокНДС, нам нужно создать новое ПКО для этого перечисления.
  4. Создадим ПКО для перечислений: Источник — СтавкиНДС, Приемник — ВидыСтавокНДС. Настроим соответствие значений (например, «18%» -> «НДС18», «20%» -> «НДС20» и так далее).
  5. В ПКС номенклатуры укажем это новое правило конвертации.

Важный момент: не путайте ставку в справочнике и ставку в документе. В табличной части документа (например, Поступление.Товары.СтавкаНДС) тип может оставаться прежним. Проверьте это в конфигураторе приемника перед правкой правил.

Дополнительные настройки для гарантированного заполнения Организации

Если после исправления ставок НДС организация всё равно не заполняется, проанализируем порядок следования свойств в ПКС. В КД 2.1 свойства заполняются строго сверху вниз.

Посмотрим на пример настройки свойств документа:

  1. Дата
  2. Номер
  3. Организация (должна быть в начале, так как от нее зависят другие реквизиты)
  4. Склад
  5. ДоговорКонтрагента (зависит от организации, поэтому должен стоять ниже)

Если ДоговорКонтрагента загружается раньше Организации, и в ПКО договора настроен поиск, это может вызвать коллизии. Рекомендуем переместить Организацию выше в списке свойств. Также убедитесь, что в ПКО Организации включены флаги «Поиск по коду» или «Поиск по ИНН/КПП», и эти данные идентичны в обеих базах.

Проверка результата

После внесения изменений выполним следующие шаги для проверки:

  1. Сохраним правила в файл XML.
  2. Загрузим обновленные правила в обработку Универсальный обмен данными в формате XML (или в соответствующий узел обмена).
  3. Попробуем выгрузить один проблемный документ из источника и загрузить в приемник.
  4. Проверим, заполнилась ли Организация и корректно ли установилась СтавкаНДС в карточке Номенклатуры.

Таким образом, внимательный анализ метаданных обновленной конфигурации и своевременная коррекция типов перечислений в правилах КД 2.1 позволяют быстро восстановить работоспособность обмена без перехода на сложные механизмы EnterpriseData.

← На главную