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

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

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

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

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

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

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

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

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


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


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



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



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

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

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

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот