Как в Конвертации данных 2.1 установить вид операции документа в зависимости от заполнения табличных частей

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

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

Определение вида операции по условию табличной части

Разберем ситуацию: если в документе заполнена табличная часть «Услуги», то в приемнике должен установиться вид операции «Услуги». Если заполнена табличная часть «Товары», то вид операции должен быть «Товары». Проанализируем, где именно в КД 2.1 следует писать этот код.

Наиболее правильным местом для реализации такой логики является обработчик Перед выгрузкой в правиле конвертации свойства (ПКС) ВидОперации. Рассмотрим пример кода, который позволит нам это реализовать:


// Обработчик ПКС "ВидОперации" -> Перед выгрузкой
Если Источник.Услуги.Количество() > 0 И Источник.Товары.Количество() = 0 Тогда
    Значение = "Услуги";
ИначеЕсли Источник.Товары.Количество() > 0 И Источник.Услуги.Количество() = 0 Тогда
    Значение = "Товары";
Иначе
    Значение = "ТоварыУслугиКомиссия"; // Если заполнены обе ТЧ или другие случаи
КонецЕсли;

Важный нюанс: Если в конфигурации-источнике вообще нет перечисления ВидыОперацийПоступлениеТоваровУслуг, прямое обращение к метаданным Перечисления.ВидыОпераций... вызовет ошибку «Переменная не определена». В этом случае вместо прямой установки Значение следует использовать переменную Выражение, которая передает строку кода для выполнения уже на стороне приемника:


// Использование переменной Выражение, если метаданных нет в источнике
Если Источник.Услуги.Количество() > 0 Тогда
    Выражение = "Перечисления.ВидыОперацийПоступлениеТоваровУслуг.Услуги";
Иначе
    Выражение = "Перечисления.ВидыОперацийПоступлениеТоваровУслуг.Товары";
КонецЕсли;

Перенос вида номенклатуры при его отсутствии в источнике

Рассмотрим ситуацию, когда в источнике у номенклатуры нет реквизита ВидНоменклатуры, а в «Бухгалтерии предприятия 3.0» это обязательный справочник. Нам необходимо программно создать или найти нужный вид номенклатуры при загрузке.

Для решения этой задачи выполним следующие шаги:

  1. Создадим отдельное ПКО для справочника ВидыНоменклатуры. В качестве источника укажем Пусто.
  2. В этом ПКО добавим правило для реквизита Наименование. В обработчике Перед выгрузкой напишем: Значение = Источник;.
  3. В основном ПКО Номенклатура для свойства ВидНоменклатуры в обработчике Перед выгрузкой пропишем логику определения типа:

// ПКС ВидНоменклатуры в ПКО Номенклатура
Если Источник.Услуга = Истина Тогда
    ИмяПКО = "ВидыНоменклатуры";
    Значение = "Услуги";
Иначе
    ИмяПКО = "ВидыНоменклатуры";
    Значение = "Товары";
КонецЕсли;

Таким образом, в приемник будет передана строка («Услуги» или «Товары»), которая по правилу конвертации ВидыНоменклатуры будет сопоставлена по наименованию с существующим элементом справочника.

Настройка НДС и параметров цен в документах

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

Проанализируем ситуацию: если организация является неплательщиком НДС (ИП на патенте или УСН), в ПКС этих реквизитов необходимо принудительно установить значения в обработчике Перед выгрузкой:


// Для ПКС НДСНеВыделять
Значение = Истина;

// Для ПКС СуммаВключаетНДС
Значение = Истина;

// Для ПКС НДСВключенВСтоимость
Значение = Истина;

Полезный совет: Если даже после правильной установки реквизитов форма документа в приемнике выглядит не так, как ожидалось, проверьте настройки Учетной политики организации в базе-приемнике. Если в БП 3.0 организация настроена как плательщик НДС, система будет пытаться подставить счета НДС и выделить налог программно при открытии формы.

Проблема разницы в количестве выгруженных и загруженных объектов

Если вы видите сообщение «Выгружено 312, загружено 306», это не всегда означает ошибку. Разберем возможные причины:

Для детального анализа рекомендуется использовать Журнал регистрации в базе-приемнике и проверять сообщения, выводимые обработкой «Универсальный обмен данными в формате XML».

← На главную