Здравствуйте. Пиши правила конвертации данных для перехода с Розницы на УНФ.
На данный момент застрял на попытке переноса регистра сведений КомплектующиеНоменклатуры в справочник Спецификации.
Номенклатуру планирую переносить во Владельца, далее наполнять табличную часть справочника 3 полями (Комплектующая, Количество, ДоляСтоимости).
Поискав по просторам интернета пришел к решению, что нужно писать правило выгрузки данных, далее в правилах конвертации свойств устанавливать галочку "Получить значение из входящих данных"
Итого создал ПВД. В обработчик "Перед выгрузкой" внес код:
Запрос = Новый Запрос("
|ВЫБРАТЬ
| КомплектующиеНоменклатуры.Комплектующая,
| КомплектующиеНоменклатуры.Количество,
| КомплектующиеНоменклатуры.ДоляСтоимости,
|ИЗ
| РегистрСведений.КомплектующиеНоменклатуры КАК КомплектующиеНоменклатуры
|ГДЕ
| КомплектующиеНоменклатуры.Номенклатура = &Номен");
Запрос.УстановитьПараметр("Номен", Объект.Номенклатура);
Выборка = Запрос.Выполнить().Выбрать();
ТабЧасть = Новый ТаблицаЗначений;
//ТабЧасть.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура")));
//ТабЧасть.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15, 3)));
//ТабЧасть.Колонки.Добавить("ДоляСтоимости", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15, 2)));
ТабЧасть.Колонки.Добавить("Номенклатура");
ТабЧасть.Колонки.Добавить("Количество");
ТабЧасть.Колонки.Добавить("ДоляСтоимости");
Пока Выборка.Следующий() Цикл
СтрокаТЧ = ТабЧасть.Добавить();
СтрокаТЧ.Номенклатура = Выборка.Комплектующая;
СтрокаТЧ.Количество = Выборка.Количество;
СтрокаТЧ.ДоляСтоимости = Выборка.ДоляСтоимости;
КонецЦикла;
ВходящиеДанные = Новый Структура("Владелец,Состав");
ВходящиеДанные.Владелец = Объект.Номенклатура;
ВходящиеДанные.Состав = ТабЧасть;
ВыгрузитьПоПравилу( , , ВходящиеДанные, , "Комплектующие_Спецификации");
Показать
Далее создал Правило Конвертации Значений и в нем Правила Конвертации Свойства.
При попытке выгрузить выдает ошибку
Параллельно пытаюсь отладиться.
Уже несколько раз правил код, обнаружив различные ошибки. Вот очередной затык.
ИМХО
Состав - это должна быть ПКГС, внутри состава должны быть поля, которые также требуют указания правил конвертации.
Флаг "Получить значение из входящих данных" нужно указывать только для ПКГС, для полей - не нужно.
Если для ПВД не нужно выполнять стандартной обработки, то нужно установить Отказ = Истина;
В ПВД для регистра сведений, как правило, передается набор записей, поэтому конструкция Объект.Номенклатура не работает, необходимо указывать, что-то типа Объект.Отбор.Номенклатура.Значение, если номенклатура в отборе, или перебирать записи
(2) Спасибо большое за совет. В следующий раз учту его.
В итоге решил, что слишком много времени потратил на попытки подстроить правила обмена для данной задачи. Вытащил необходимые данные через запрос, а затем через обработку из *.xl закинул в приемник.
А что такое ПКГС? Знаю Правила Конвертации Свойств, а вот ПКГС не знакомо мне.
ПКГС - правило конвертации группы свойств. Выглядит как "папка"/группа, необходима для
1. описания конвертации коллекций типа Табличная часть - это можно увидеть если сформировать синхронизацию в конвертации для объектов с табличными частями
2. группировки свойств. Чаще всего используют для иерархических справочников, где часть реквизитов элементов не присутствует в группах. Такие реквизиты объединяют в ПКГС, и в ней прописывают Отказ = Источник.ЭтоГруппа - таким образом реквизиты не обрабатываются. Правда сейчас конвертация вроде бы корректно отрабатывает и без такого финта.