Как в Конвертации данных 2 настроить перенос из справочника в документ и перечисление?

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

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

1. Настройка прямого правила конвертации: Справочник в Документ

В КД 2.1 нет строгого ограничения на совпадение типов метаданных источника и приемника. Вы можете напрямую создать Правило конвертации объектов (ПКО), где источником выступает справочник, а приемником — документ.

Рассмотрим ключевые особенности такой настройки:

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

2. Автоматическое проведение документов при загрузке

По умолчанию загруженные документы просто записываются в базу. Если вам необходимо, чтобы после переноса документы сразу проводились в «1С:Бухгалтерии 3.0», откройте ПКО документа и в обработчике «После загрузки» укажите следующий код:

РежимЗаписи = "Проведение";

Также можно воспользоваться стандартным флагом отложенного проведения непосредственно в обработке «Универсальный обмен данными в формате XML» на стороне базы-приемника.

3. Формирование документа через ПВД с произвольным алгоритмом

Если один документ в приемнике должен формироваться на основании сложной выборки или нескольких элементов справочника, прямое ПКО не подойдет. В этом случае создадим Правило выгрузки данных (ПВД) с типом выгрузки «Произвольный алгоритм».

Посмотрим на пример кода в обработчике ПВД:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |   Ссылка,
    |   Наименование,
    |   Сумма
    |ИЗ
    |   Справочник.СамописныеОперации КАК Операции";

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    СтруктураДанных = Новый Структура;
    СтруктураДанных.Вставить("Дата", ТекущаяДата());
    СтруктураДанных.Вставить("Комментарий", Выборка.Наименование);
    СтруктураДанных.Вставить("СуммаДокумента", Выборка.Сумма);
    
    ВыгрузитьПоПравилу(СтруктураДанных, , , , "ПКО_СамописнаяОперация_В_ОперацияБух");
КонецЦикла;

В самом ПКО для реквизитов документа необходимо отметить флаг «Получить из входящих данных».

4. Конвертация «Справочник -> Перечисление»

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

Способ 1. Создание отдельного ПКО (Справочник -> Перечисление)

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


Если Источник.Наименование = "Основная ставка" Тогда
    Значение = "НДС20";
ИначеЕсли Источник.Наименование = "Без налога" Тогда
    Значение = "БезНДС";
Иначе
    Значение = "НДС0";
КонецЕсли;

Способ 2. Заполнение значения напрямую в ПКС

Если создавать отдельное правило избыточно, сопоставление можно выполнить прямо в ПКС того реквизита, который принимает значение перечисления. Поле «Источник» оставляем пустым, а в обработчике «Перед выгрузкой» ПКС пишем:


Если Источник.РеквизитСправочник.Код = "001" Тогда
    Значение = "ЗначениеПеречисления1";
Иначе
    Значение = "ЗначениеПеречисления2";
КонецЕсли;

5. Особенности загрузки в «Бухгалтерию предприятия 3.0»

В конфигурации «Бухгалтерия предприятия 3.0» активно используются механизмы БСП и подписки на события, проверяющие корректность заполнения реквизитов (организация, счета учета, договоры). Если источник не содержит этих данных, инициализируйте их значениями по умолчанию в ПКО в обработчике «После загрузки» или «Перед записью».

Чтобы типовые подписки не вызывали исключений при загрузке неполных данных, в обработчике ПКО «Перед записью объекта» можно передать признак обмена:

Объект.ДополнительныеСвойства.Вставить("ПереносДанных", Истина);

← На главную