Конвертация данных. ВыгрузитьПоПравилу #772256


#0 by Wefast
Есть ПКО Сотрудник(Спр.Сотрудники => Спр.ФизическиеЛица) Мне нужно помимо выгрузки сотрудников сделать запись в регистр сведений В обработчике приВыгрузке пишу Создаю ПКО РолиФизическихЛиц Делаю ПКС ФизическоеЛицо, ставлю получать из входящих данных. ПКО указываю СОтрудник. ПКС Роль. Приемник имеет тип перечисления. Пишу Значение = "МоеПеречисление" ПКС Организация. Пишу Значение = Константа.НазваниеОрганизации Мало того что ничего не работает кроме роли. Т.е. в регистре появляется запись где заполнена только Роль после чего вылетает с ошибкой. Так мне еще интересно как отрабатывает ПКС ФизическоеЛИцо если ПКО в нем указано то собственно откуда  я все и вызвал. Разве это не рекурсия?
#1 by takefive
Константа.НазваниеОрганизации.Получить это строка или ссылка?
#2 by Генератор
может если пко называется из сотрудника в физлицо, то в СЗ надо все-таки сотрудника передавать а не физ лицо
#3 by GANR
Рекомендую подглядеть в типовые правила конвертации. К примеру БП 1.0 -> БП 2.0. Там же переносится контактная информация по физ. лицам, а это регистр сведений.
#4 by Franchiser
ключ выгружаемых данных определил?
#5 by Franchiser
и еще если пишешь Значение = "МоеПеречисление"  то не нужно указывать ПКО иначе оно будет по нему сконвентрировано
#6 by Franchiser
в качестве ключа можно указать сотрудника переданного через вх. данные
#7 by Wefast
строка. как же я его передам, если в источнике нет физ лица, там сотрудник можно подробнее? Не сталкивался
#8 by AneJIbcuH
Я так понял, после того, как ты выгрузил Сотрудника в ФизЛицо, в конечной базе тебе ещё необходимо создать запись в Регистре сведений. По идее самый простой (может не самый производительный), это в обработчике "ПослеЗагрузки" определить программный текст создания записи в регистре сведений (Менеджером записи). А если хочешь записать один раз набором записи, например, то можно попробовать такую фишку использовать (предполагаю, не пробовал :) ): - В обработчике Конвертации: "Перед загрузкой данных", т.е. в самом начале загрузки в приемнике, определить Параметр: "Параметры.Вставить("СписокФизическихЛиц", Новый ТаблицаЗначений); Параметры.СписокФизическихЛиц.Колонки.Добавить("ФизическоеЛицо");" - В обработчике Правила конвертации объекта (Наверное у тебя "Сотрудник") - "После загрузки объекта", заполнять ТЗ Физ лиц: "НайденнаяСтрока = Параметры.СписокФизическихЛиц.Найти(Объект);     НоваяСтрока.ФизическоеЛицо = Объект; КонецЕсли;" Где Объект - Это загруженное физ лицо в конечную базу. - Итогом, В обработчике Конвертации "После загрузки данных" написать программный код формирования набора записей, где в Параметры.СписокФизическихЛиц у тебя будет ТЗ со всеми загруженными физ. лицами.
#9 by Wefast
пишу послезагрузки Выдает ошибку: Ошибка при загрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1258)}: Ошибка в обработчике события ПослеЗагрузкиОбъекта     ТипОбъекта             =  Физическое лицо     Объект                 =  Иванова ТАТЬЯНА Ивановна     Обработчик             =  ПослеЗагрузкиОбъекта     ОписаниеОшибки         =  Ошибка при вызове метода контекста (Записать): Запись не верна! Значение поля не соответствует установленному отбору: РолиФизическихЛиц: Иванова ТАТЬЯНА Ивановна, ОАО "Организация", Акционер, 3cca921d-35d9-4e25-946f-f5c1af11cedc (Регистр сведений: Роли физических лиц; Поле: ИдентификаторЗаписи)     ПозицияМодуля          =       КодСообщения           =  21
#10 by Wefast
Все равно не помогло.
#11 by AneJIbcuH
Тут где-то ошибка в подстановке данных в самом уже коде. Сделай простенькую обработку, которая будет по выбранным данным делать запись в рег. сведений и отладь код в ней уже.
#12 by Wefast
Я так и не понял что не так. Но при записи через набор записей все работает
#13 by Wefast
Хотя конечно хотелось бы понять что не так с ВыгрузитьПоПравилу т.к. дальше много работы по переносы между 7 и 8
#14 by alkov
А почему бы в ПВД не написать ВыгрузитьПоПравилу(Объект,,,,"РолиФизическихЛиц");
#15 by alkov
Хреновое предложение. В ПослеЗагрузки объект в базе ещё не записан, если он новый, поэтому отбора в РС по нему не будет. Используйте обработчики в ПВД
#16 by AneJIbcuH
Мы легко его можем записать. Объект.Записать.
#17 by AneJIbcuH
А если объект тянется по ссылке?
#18 by Wefast
не вышло же у меня по ВыгрузитьПоПравилу. Там что то еще сделать нужно, кажется что то связанное с КлючВыгружаемыхДанных, но что именно я не разобрался. Я написал Тогда ссылка есть. не очень понял, что имеется ввиду.
#19 by AneJIbcuH
Да это вопрос к уважаемому alkov, он предлагает через ПВД. Так вот если сотрудник, например, передается в конечную базу по ссылке, ПВД не срабатывает.
#20 by Franchiser
Сделай еще одно ПКО Сотрудники2 из ПКО Сотрудники и поставь галочку НеЗапоминатьВыгруженные так тебе проще.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С