ОБМЕН Регистр сведений -> Справочник с табличной частью

1. Тимур Пуляевский (tigcorp) 21.12.16 13:02 Сейчас в теме
Здравствуйте. Пиши правила конвертации данных для перехода с Розницы на УНФ.

На данный момент застрял на попытке переноса регистра сведений КомплектующиеНоменклатуры в справочник Спецификации.

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

Итого создал ПВД. В обработчик "Перед выгрузкой" внес код:
Запрос = Новый Запрос("
|ВЫБРАТЬ
|	КомплектующиеНоменклатуры.Комплектующая,
|	КомплектующиеНоменклатуры.Количество,
|	КомплектующиеНоменклатуры.ДоляСтоимости,
|ИЗ
|	РегистрСведений.КомплектующиеНоменклатуры КАК КомплектующиеНоменклатуры
|ГДЕ
|	КомплектующиеНоменклатуры.Номенклатура = &Номен");
Запрос.УстановитьПараметр("Номен", Объект.Номенклатура); 
Выборка = Запрос.Выполнить().Выбрать();

ТабЧасть = Новый ТаблицаЗначений;
//ТабЧасть.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура")));
//ТабЧасть.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15, 3)));
//ТабЧасть.Колонки.Добавить("ДоляСтоимости", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15, 2)));

ТабЧасть.Колонки.Добавить("Номенклатура");
ТабЧасть.Колонки.Добавить("Количество");
ТабЧасть.Колонки.Добавить("ДоляСтоимости");

Пока Выборка.Следующий() Цикл
	
	СтрокаТЧ = ТабЧасть.Добавить();
	СтрокаТЧ.Номенклатура = Выборка.Комплектующая;
	СтрокаТЧ.Количество = Выборка.Количество;
	СтрокаТЧ.ДоляСтоимости = Выборка.ДоляСтоимости;
	
КонецЦикла;

ВходящиеДанные                          = Новый Структура("Владелец,Состав");
ВходящиеДанные.Владелец = Объект.Номенклатура;
ВходящиеДанные.Состав = ТабЧасть;


ВыгрузитьПоПравилу( , , ВходящиеДанные, , "Комплектующие_Спецификации"); 
...Показать Скрыть


Далее создал Правило Конвертации Значений и в нем Правила Конвертации Свойства.



При попытке выгрузить выдает ошибку



Параллельно пытаюсь отладиться.

Уже несколько раз правил код, обнаружив различные ошибки. Вот очередной затык.

Может, изначально что не так делаю?
Ответы
2. Евгений (jobtorn) 25.12.16 00:04 Сейчас в теме
ИМХО
Состав - это должна быть ПКГС, внутри состава должны быть поля, которые также требуют указания правил конвертации.
Флаг "Получить значение из входящих данных" нужно указывать только для ПКГС, для полей - не нужно.
Если для ПВД не нужно выполнять стандартной обработки, то нужно установить Отказ = Истина;
В ПВД для регистра сведений, как правило, передается набор записей, поэтому конструкция Объект.Номенклатура не работает, необходимо указывать, что-то типа Объект.Отбор.Номенклатура.Значение, если номенклатура в отборе, или перебирать записи
3. Тимур Пуляевский (tigcorp) 25.12.16 17:44 Сейчас в теме
(2) Спасибо большое за совет. В следующий раз учту его.
В итоге решил, что слишком много времени потратил на попытки подстроить правила обмена для данной задачи. Вытащил необходимые данные через запрос, а затем через обработку из *.xl закинул в приемник.

А что такое ПКГС? Знаю Правила Конвертации Свойств, а вот ПКГС не знакомо мне.
4. Евгений (jobtorn) 25.12.16 19:32 Сейчас в теме
ПКГС - правило конвертации группы свойств. Выглядит как "папка"/группа, необходима для
1. описания конвертации коллекций типа Табличная часть - это можно увидеть если сформировать синхронизацию в конвертации для объектов с табличными частями
2. группировки свойств. Чаще всего используют для иерархических справочников, где часть реквизитов элементов не присутствует в группах. Такие реквизиты объединяют в ПКГС, и в ней прописывают Отказ = Источник.ЭтоГруппа - таким образом реквизиты не обрабатываются. Правда сейчас конвертация вроде бы корректно отрабатывает и без такого финта.
Оставьте свое сообщение