Конвертация ставок НДС: из Перечисления в Справочник (правила обмена в конвертации 2.0)






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

В Конвертации 2.0 создаем правило обмена Ставок НДС.

Тип значения в конфигурации-источнике: Перечисление.СтавкиНДС
Тип значения в конфигурации-источнике: Справочник.СтавкиНДС

Создаем ПКО и в нем 4 ПКС для каждого реквизита справочника "Ставки НДС":

 

    Для каждого реквизита прописываем получение значения из перечисления в обработчике "перед выгрузкой":

    Вид ставки:

 

Если Источник = Перечисления.СтавкиНДС.НДС20 ИЛИ Источник = Перечисления.СтавкиНДС.НДС18 Тогда
Значение = "Общая";
ИначеЕсли Источник = Перечисления.СтавкиНДС.НДС20_120 ИЛИ Источник = Перечисления.СтавкиНДС.НДС18_118 Тогда
Значение = "ОбщаяРасчетная";
ИначеЕсли Источник = Перечисления.СтавкиНДС.НДС10  Тогда
Значение = "Пониженная";
ИначеЕсли Источник = Перечисления.СтавкиНДС.НДС10_110  Тогда
Значение = "ПониженнаяРасчетная";
ИначеЕсли Источник = Перечисления.СтавкиНДС.НДС0  Тогда
Значение = "Нулевая";
ИначеЕсли Источник = Перечисления.СтавкиНДС.БезНДС  Тогда
Значение = "БезНДС";
КонецЕсли;

 

Не облагается:

 

Если Источник = Перечисления.СтавкиНДС.БезНДС  Тогда
Значение = Истина;
Иначе
Значение = Ложь;
КонецЕсли;

 

Расчетная:

 

Если Источник = Перечисления.СтавкиНДС.НДС20_120
ИЛИ Источник = Перечисления.СтавкиНДС.НДС18_118
ИЛИ Источник = Перечисления.СтавкиНДС.НДС10_110 Тогда
Значение = Истина;
Иначе
Значение = Ложь;
КонецЕсли;

 

Ставка:

 

Если Источник = Перечисления.СтавкиНДС.НДС20 ИЛИ Источник = Перечисления.СтавкиНДС.НДС20_120  Тогда
Значение = 20;
ИначеЕсли Источник = Перечисления.СтавкиНДС.НДС18 ИЛИ Источник = Перечисления.СтавкиНДС.НДС18_118 Тогда
Значение = 18;
ИначеЕсли Источник = Перечисления.СтавкиНДС.НДС10 или Источник = Перечисления.СтавкиНДС.НДС10_110 Тогда
Значение = 10;
ИначеЕсли Источник = Перечисления.СтавкиНДС.НДС0 или Источник = Перечисления.СтавкиНДС.БезНДС  Тогда
Значение = 0;
КонецЕсли;

 

    Готово. Теперь можно указывать это ПКО, например, для реквизита табличной части документа:

1 Comment

  1. PLAstic

    А почему бы в обработчике перед выгрузкой не сделать один раз соответствие структур и просто по исходному значению не выбирать из него нужную структуру, которую передавать как Источник? Ещё можно поставить галку «Использовать быстрый поиск».

    Типа того:

    СоответствиеОбъектов = Новый Соответствие();
    СоответствиеОбъектов.Вставить(ПредопределенноеЗначение(Перечисление.СтавкиНДС.БезНДС), Новый Структура(«Всякие, Значения, Справочника», Всякие, Значения, Справочника));
    …
    …
    

    Соответственно, перед выгрузкой надо будет вставить похожее:

    Источник = СоответствиеОбъектов[Источник];

    *Весь код написан по памяти и может содержать ошибки.

    **И проверь ещё, что в целевом справочнике нет предопределённых элементов.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *