Конвертация данных (КД). ВходящиеДанные видны в ПКО, но не видны в ПКС-ах Хелп #716402


#0 by goodluckman
Доброго дня всем! Друзья, нужна ваша помощь, 2 дня копаюсь в пустую. Создаю правила обмена нетиповой конфы с бухой 2.0. В нашей нетиповой конфе у банковских счетов не всегда заполнен реквизит "валюта", есть необходимость протягивать валюту из платежного документа в ПКО "БанковскиеСчета", а точнее в его ПКС "ВалютаДенежныхСредств", для корректной конвертации валюты. У документа есть реквизит "БанковскийСчет", для него существует ПКО "БанковскиеСчета". В ПКС-е реквизита документа "БанковскийСчет" инициализирую "ИсходящиеДанные", куда передаю валюту из платежного документа:   Эта валюта прекрасно видна в ПКО "БанковскиеСчета" как "ВходящиеДанные", но вот дальше, при конвертации свойств (реквизитов) банковского счета, по документации и здравому смыслу, в подчиненных ПКС-ах "Банковского счета" валюта так же должна быть видна в переменной "ВходящиеДанные", но там пусто! точнее Неопределено(( Подскажите плизз, куда копать?
#1 by Timon1405
В ПКО добавить "ИсходящиеДанные=ВходящиеДанные"
#2 by goodluckman
я пробовал похожий вариант в процессе танцев с бубном , - в ПКО справочника "банковские счета" повторно определял как новую структуру и ВходящиеДанные и ИсходящиеДанные и мониторил, что имею в этих переменных, уже в подчиненных ПКС-ах (реквизитов справочника), как я и писал выше в них было Неопределено...
#3 by МимохожийОднако
Если Банковские счета, подчиненный справочник, то надо убрать ПВД по банковским счетам. Если Валюта не заполнена, то проще указывать валюту по умолчанию какую надо. ИМХО, информации недостаточно.
#4 by goodluckman
МимохожийОднако, спасибо за совет. Попробовал убрать из ПВД справочник "банк. счета", - не помогло...( попробую лаконично и структурно описать ситуацию: 1)Есть документ "ПоступлениеНаРасчетныйСчет" у него есть свое ПКО и свое ПВД. 2)У документа есть ссылочный реквизит "БанковскийСчет". для справочника "БанковскиеСчета" есть тоже свое ПКО, которое указано в документе, точнее в ПКС-е реквизита документа "Банк. счет". 3)У некоторых элементов справочника "БанковскиеСчета", не выбрана "ВалютаДенежныхСредств", что препятствует корректной конвертации элементов справочника "БанковскиеСчета", поэтому валюту необходимо протягивать из реквизита самого документа "ПоступлениеНаРасчетныйСчет". 4) Для чего, в ПКС-е реквизита документа "БанковскийСчет" я инициализирую переменную "ИсходящиеДанные" в которые помещаю валюту документа. 5) При конвертации данного свойства документа(ревизита) вызывается ПКО "БанковскиеСчета", в обработчике которого "ПередВыгрузкой" протягиваемая валюта видна в переменной "ВходящиеДанные", что соответсвует документации! 6) Затем, как я понимаю, происходит конвертация свойств, элемента справочника "Банк. счета" по своим ПКО. 7)Одно из этих свойств называется "ВалютаДенежныхСредств", тип "СправочникСсылка.Валюты", в этом ПКС-е я пытаюсь получить валюту переданную выше, что ее подменить: но Валюта не видна во "ВходящиеДанные" как об этом повествует документация (ПВД.ИсходящиеДанные -> ПКО.ВходящиеДанные ПКО.ВходящиеДанные -> ПКС.ВходящиеДанные В этом и есть суть проблемы... Укажите, что я не так в данном случае делаю ?
#5 by zmaximka
а что значит Валюта не видна во "ВходящиеДанные" ?
#6 by МимохожийОднако
Валюту в исходящие данные надо помещать через структуру
#7 by goodluckman
zmaximka, это значит, что в ПКО банковского счета, в событии "ПередВыгрузкой" я вижу переданную валюту через: ВходящиеДанные.ВалютаНов, то есть я могу прочитать это значение. А в подчиненном данному ПКО ПКС-е для валюты, в переменной ВходящиеДанные лежит неопределено... МимохожийОднако, я так и делаю, о чем и написал в самом первом посте:
#8 by vicof
ничего не настораживает в коде?
#9 by goodluckman
Можно конкретно? Если имеешь ввиду условие "Если" То я его обрабатываю во всех местах. Если имя ключа, в одном месте я пишу "ВалютаДенежныхСредств", в другом "ВалютаНов", то это тоже для примера, и в реальном коде у меня все корректно! Люди помогите, плииииз.
#10 by goodluckman
Я провел некоторое исследование, напихал в обработчики событий "ПередВыгрузкой" в используемые ПКО и ПКС конструкции Сообщить; Получил логи в следующем порядке: (черточкой обозначен вызов какого-либо правила) -ПКО Документа ПоступлениеНаРасчетныйСчет -ПКО справочника "БанковскиеСчета" Наименование банк. счета: Основной -ПКС Реквизита справочника "ВалютаДенежныхСредств" ВходящиеДанные = Неопределено   -ПКС реквизита документа БанковскийСчетКонтрагента. Наименование счета: Основной !Валюта которую хотим передать: руб. -ПКО справочника "БанковскиеСчета" Наименование банк. счета: Основной Наблюдения и мысли: Вызов правила конвертации (ПКС) для реквизита документа происходит в самом конце, после чего вызывается ПКО справочника "Банк.Счета", но после этого почему то не происходит вызова ПКС-ов для свойств "Банковского счета", якобы свойства отконвертировались в самом начале... Почему то сначала выгружаются объекты свойств, на которые указывают ссылки в реквизитах документа, а в конце сам документ, но ведь "исходящие данные" определяются в при конвертации свойств документа (его реквизитов) и от туда данные должны попасть в ПКО и ПКС справочника, но все происходит наоборот, я не вижу логики и совсем запутался((
#11 by Naumov
1. у тебя тупо не отрабатывает условие Если Источник.Измерение1.ОсновнойБанковскийСчет.ВалютаДенежныхСредств.Пустая Тогда Поэтому ИсходящиеДанные не инициализированы. 2. Отладку давно пора врубить и найти где неправ.
#12 by GenAcid
Я чего-то не пойму, судя по ты пихаешь в исходящие данные в ПКО. Следом сам пишешь что по документации: Так откуда у тебя входящие заполнятся?
#13 by Naumov
А где ты видишь ПКО? Он инициализровать Исходящие данные должен при выгрузке свойства Банковский счет, т.е. в ПКС, т.е. тут передача управления
#14 by GenAcid
Да я уж перечитал, осознал.
#15 by goodluckman
отрабатывает корректно условие "Если"! я просто выдернул из контекста, считайте, что в обработчике "ПередВыгрузкой" нет этого условия, на него можно не обращать внимая, у себя в остальных обработчиках я обрабатываю корректно проверку на валюту, я же писал раньше, что в одном случае надо конвертировать валюту из банковского счета, а в другом протягивать валюту из документа, - ПКС реквизита документа (инициализируется ИсхДанны),  - затем ПКО справочника БанкСчета (в нем валюта видна во ВходДанных), - затем подчиненный ПКС для реквизита справочника БанкСчета, который называется "Валюта", в которором во входящихДанных уже пусто! Я все отладил, и описал ситтцацию уже после отладки!
#16 by GenAcid
А у тебя случаем ВыгрузитьПоПравилу нигде явно не вызывается?
#17 by goodluckman
Naumov, все верно передача управления: ПКС в этом случае принадлежит реквизиту документа "БанкСчет" ПКО принадлежит справочнику "БанковскиеСчета", у которого в обработчике события "ПередВыгрузкой" во ВходящиеДанные Валюта прекрасно себе лежит! Проблема, в том, почему далее по иерархии, при конвертации реквизитов справочника "БанкСчета", в ПКС-е для Валюты, во ВходящиеДанные - Пусто ?! Ведь в документации ясно сказано: ПКО.ВходящиеДанные -> ПКС.ВходящиеДанные Увы, GenAcid, нигде ВыгрузитьПоПравилу не испозьзую...
#18 by Naumov
А за чем дальше? в событии перед выгрузкой ПКС Валюта у банковского счета определи "Значение" в зависимости от заполненности валюты у источника.
#19 by Naumov
Можно еще для ПКО банк.счета перед выгрузкой всетаки написать ИсходящиеДанные = ВходящиеДанные. Кстати, глобальные обработчики ничего не переопределяют? А то в какой-то типовой конвертации принудительно инициализировались Входящие данные, соответственно все затиралось. Если не прокатывает, то режим отладки и смотрим. НА этом мой талант Ванги исчерпан.
#20 by goodluckman
Вот это и есть моя цель - в ПКС-е Валюты у банковского счета определить переменную "Значение". Вопрос чем определить! У источника (банковского счета) валюта иногда пустая, но в этом случае у него есть ВходящиеДанные с валютой, которую надо использовать. Но как ее дальше протянуть в ПКС Валюты, я не знаю, ничего не получается( для ПКО банк.счета перед выгрузкой определял ИсходящиеДанные = ВходящиеДанные, и заново определя ИсходящиеДанные как новую структуру - беспозезно, - в ПКС - тишина, точнее "Неопределено")) Если имеете ввиду "глобальные обработчики", принадлежащие ПВД, то для документа платежа и справочника банк. счета, там все чисто...
#21 by Naumov
глобальные обработчики у конвертации
#22 by Timon1405
а галка "получать из входящих данных" в пкс стоит?
#23 by Naumov
А не нужна она тут
#24 by goodluckman
Понял! В глобальных все чисто, туда я не залезал) Действительно она не нужна, но я и ее поведение обыгрывал для эксперимента, код подправлял, отлаживал, ошибка таже самая - в ПКС-е реквизита справочника "Банк. счета" во ВходДанных лежит "Неопределено", и заполнять источник нечем...   Товарищи, ну хотя бы скажите, логика моих рассуждений верна? Должна в таком примере происходить передача данных по принципу: ПКО.ВходящиеДанные -> ПКС.ВходящиеДанные ???
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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