Коллеги, прошу совета по Конвертации Данных. Переходим на ERP 2.5, стало быть там изменился тип реквизита СтавкаНДС во всех объектах. Теперь это Справочник.СтавкиНДС. Поломались обмены с УПП. Ума не приложу как доработать правила обмена, чтобы при выгрузке Номенклатуры где СтавкаНДС стала справочником на реквизит приемник Перечисление.СтавкаНДС происходило автоматическое преобразование. Что сделать удалось - вытащить реквизит у элемента справочника "ПеречислениеСтавкаНДС", но как дальше его сконвертировать с учетом настроенного ПКС "Перечисление.СтавкиНДС -> Перечисление.СтавкиНДС", если это ПКС не применяется, т.к. у меня теперь настройки "СправочникСсылка.СтавкиНДС -> Перечисление.СтавкиНДС". Вызывать каким-то образом ВыгрузитьПоПравилу() с указанием готового ПКС для перечислений?
(2) Насколько я помню, если "Значение" меняется в обработчике, то выбранное ПКС не срабатывает. Да его и выбрать то невозможно, т.к. типы источника и приемника не совпадают, т.ч. ПКС для сопоставления предопределенных значений перечислений НДС просто валяется безхозным.
(1)Справочник в перечисление конвертировать просто.
В ПКС - примерно так:
Если Объект.СтавкаНДС = <Тут ссылка на элемент справочника> Тогда
Значение = <Тут имя значения перечисления>
КонецЕсли;
Ну или по коду справочника, или по наименованию сделать условие, чтобы его можно было идентифицировать однозначно и сопоставить со значением перечисления.
(3) Больше похоже на костыль чем на решение. Ссылки на все элементы справочника придется где-то хранить, т.к. у справочника НДС всего лишь одно предопределенное значение - "БезНДС".
(5)В любом случае вы должны знать какой элемент справочника с каким элементом перечисления сопоставлять на этапе разработки правил. Какое условие делать, это дело десятое.
(6) Смотрите, у нас есть 3 сущности:
1. Ссылка на Справочник НДС (Источник)
2. Перечисление полученное из ссылки (Источник)
3. Перечисление Ставка НДС (Приемник).
Я хочу сделать сопоставление предопределенных на основании настроенного ПКС двух перечислений, а не прописывать имена перечислений в коде через "Если".
(7)Чем вам так не нравятся условия в конвертации?
В преобразовании Ссылка на Справочник НДС (Источник) в Перечисление полученное из ссылки (Источник) вам все равно придется прописывать условия, зачем тогда что-то городить. Добавлять дополнительный объект только ради обмена?
(3) Именно по этой публикации и пытался сделать - не работает. Выгружается пустая ставка НДС. И свойства "УзелСсылки" не существует в обработчике "При выгрузке". Еще смущает то, что в качестве имя перечисления в узел приемник передается синоним из базы источника, они ведь могут и не совпадать, требуется сопоставление.
Первую задачу решил достаточно просто. Взял ПКС ПеречислениеСсылка.СтавкаНДС->ПеречислениеСсылка.СтавкаНДС, стер Источник, добавил в событие ПередВыгрузкой код типа Значение = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Источник.СтавкаНДС, "ПеречислениеСтавкаНДС");
Правило ПКС оставил как Перечисление в Перечисление. Все работает.
А теперь нужно решить задачку как в ТЧ Товары поместить СправочникСсылка.СтавкаНДС по приходящему Перечислению.СтавкаНДС.
Вторую задачу тоже решил через параметры табличной части. Пропускаю реквизит строки через ПКС ПеречислениеСтавкаНДС, а потом в обработчике После Загрузки пробегаюсь по строкам табличной части извлекая параметр строки и конвертирую через общие модули в ссылку на элемент справочника НДС.