ЗарегистрироватьИзменения для нового элемента #678696


#0 by motkot
Всем доброго дня! Читал, читал, читал, но однозначного ответа на свой вопрос не нашел. Может кто сталкивался? В общем, есть УТ 11, не типовая. Есть платформа 8.2.17.143 В конфе есть два справочника "Номенклатура" и "ХарактеристикиНоменклатуры" (подчинен номенклатуре). Так же добавлен некий план обмена, в котором есть оба справочника, авторегистрация вЫключена. Вопрос, почему в событии "ПередЗаписью" нового элемента справочника "ХарактеристикиНоменклатуры" метод ПланыОбмена.ЗарегистрироватьИзменения(Получатели, Данные) дает ошибку "Недопустимое значение параметра (параметр номер '2')"? В аналогичной ситуации со справочником "Номеклатура" ошибок нет. Параметр "Данные" имеет тип "СправочникОбъект". Если же элемент справочника есть уже в базе, то все ОК. Так же было замечено, что проблема возникает на справочниках, где нет реквизита "код", т.е. длина кода в метаданных установлена = 0 (эти справочники у нас регистрируются в событии "ПослеЗаписи". Но в данной ситуации и у "Характеристик", и у "Номенклатур" реквизит "код" есть (точно не уверен, что он оказывает прямое влияние). Перевести регистрацию справочника "ХарактеристикНоменклатуры" в событие "ПослеЗаписи" можно без проблем, но хотелось бы вникнуть в ситуацию, почему все же у одного справочника регистрируются элементы, а у другого нет?
#1 by Maxus43
в Получатели - точно только тот узел плана, куда включена характеристика?
#2 by motkot
147%
#3 by Maxus43
>>"ПередЗаписью" нового элемента справочника "ХарактеристикиНоменклатуры" метод ПланыОбмена.ЗарегистрироватьИзменения(Получатели, Данные) дает ошибку Почему вообще Перед Записью анализируешь? ПриЗаписи
#4 by motkot
Я понимаю, но вопрос же - почему один справочник нормально проходит, другой нет?
#5 by motkot
ошибся, читать "ПослеЗаписи" как "ПриЗаписи"
#6 by motkot
да и нигде в документации вроде как не запрещено использовать "Перед записью"
#7 by Maxus43
Незаписанный элемент нельзя зарегистрировать. Перед Записью - объекта ещё нет в БД
#8 by motkot
почему объект "Номенклатура" регистрируется? его так же нет в БД
#9 by Maxus43
не, вру, можно
#10 by motkot
сравнил объекты, "типовые" реквизиты одинаковые, что в одно спр-нике, что в другом.
#11 by motkot
Хотелось бы все же докопаться до истины, пихать в "При записи" всегда успею
#12 by motkot
В общем решается через "Ссылку нового"
#13 by Fragster
Зачем ЗарегистрироватьИзменения, когда проще ОбменДанными.Получатели.Добавить?
#14 by motkot
а если "получатели" это уже готовый массив? заново его перебирать?
#15 by Fragster
если готовый - то все само на регистрацию встанет
#16 by motkot
массив получателей получен совершенно в другом куске кода. что значит "само собой"?
#17 by motkot
и чем проще использовать?
#18 by Fragster
ну, например, не надо парится над тем, что ты сделал ПолучитьСсылкуНового, а кто-то в другой подписке сделал "установитьСсылкуНового" с другой ссылкой...
#19 by Maxus43
это кстати да, чото я затупил. Нигде никогда не используется принудлительная регистрация объекта записываемого, это стандартный механизм обменов, регистрации происходит по окончании записи элемента. ЗарегистрироватьИзменения - используется для регистрации ссылок массово например, чотобы не перезаписывать объекты
#20 by motkot
получается если есть готовый массив с ссылками на планы обмена, то его нужно перебрать и выполнить ОбменДанными.Получатели.Добавить?
#21 by Fragster
да. а можно передать в то место, в котором массив формируется массив получателей - он там сразу и заполнится...
#22 by motkot
спасибо за разъяснения.
#23 by Fragster
я про "готовый массив" подума, что ты в обменданнымии.получатели заглянул и увидел свой список узлов
#24 by motkot
если бы было бы так :)
#25 by Maxus43
Это делается в подписках обычно, у источника заполняются получатели, чтобы не плодить код непонятно где
#26 by motkot
да я не против же.
#27 by motkot
а снять регистрацию (уже зарегистрированного), кроме как "УдалитьРегистрациюИзменений" можно как то?
#28 by Fragster
тут да. но не при записи же это делать :)
#29 by motkot
всем спасибо за участие!
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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