Имя: Пароль:
1C
1С v8
ЗарегистрироватьИзменения для нового элемента
,
0 motkot
 
28.08.13
16:19
Всем доброго дня!
Читал, читал, читал, но однозначного ответа на свой вопрос не нашел. Может кто сталкивался?
В общем, есть УТ 11, не типовая. Есть платформа 8.2.17.143
В конфе есть два справочника "Номенклатура" и "ХарактеристикиНоменклатуры" (подчинен номенклатуре). Так же добавлен некий план обмена, в котором есть оба справочника, авторегистрация вЫключена.
Вопрос, почему в событии "ПередЗаписью" нового элемента справочника "ХарактеристикиНоменклатуры" метод ПланыОбмена.ЗарегистрироватьИзменения(Получатели, Данные) дает ошибку "Недопустимое значение параметра (параметр номер '2')"? В аналогичной ситуации со справочником "Номеклатура" ошибок нет. Параметр "Данные" имеет тип "СправочникОбъект". Если же элемент справочника есть уже в базе, то все ОК.
Так же было замечено, что проблема возникает на справочниках, где нет реквизита "код", т.е. длина кода в метаданных установлена = 0 (эти справочники у нас регистрируются в событии "ПослеЗаписи". Но в данной ситуации и у "Характеристик", и у "Номенклатур" реквизит "код" есть (точно не уверен, что он оказывает прямое влияние).
Перевести регистрацию справочника "ХарактеристикНоменклатуры" в событие "ПослеЗаписи" можно без проблем, но хотелось бы вникнуть в ситуацию, почему все же у одного справочника регистрируются элементы, а у другого нет?
1 Maxus43
 
28.08.13
16:25
в Получатели - точно только тот узел плана, куда включена характеристика?
2 motkot
 
28.08.13
16:37
(1) 147%
3 Maxus43
 
28.08.13
16:38
>>"ПередЗаписью" нового элемента справочника "ХарактеристикиНоменклатуры" метод ПланыОбмена.ЗарегистрироватьИзменения(Получатели, Данные) дает ошибку

Почему вообще Перед Записью анализируешь? ПриЗаписи
4 motkot
 
28.08.13
16:41
(3) Я понимаю, но вопрос же - почему один справочник нормально проходит, другой нет?
5 motkot
 
28.08.13
16:42
(0) ошибся, читать "ПослеЗаписи" как "ПриЗаписи"
6 motkot
 
28.08.13
16:45
(3) да и нигде в документации вроде как не запрещено использовать "Перед записью"
7 Maxus43
 
28.08.13
16:52
(6) Незаписанный элемент нельзя зарегистрировать. Перед Записью - объекта ещё нет в БД
8 motkot
 
28.08.13
16:54
(7) почему объект "Номенклатура" регистрируется? его так же нет в БД
9 Maxus43
 
28.08.13
16:55
не, вру, можно
10 motkot
 
28.08.13
17:01
сравнил объекты, "типовые" реквизиты одинаковые, что в одно спр-нике, что в другом.
11 motkot
 
28.08.13
17:28
Хотелось бы все же докопаться до истины, пихать в "При записи" всегда успею
12 motkot
 
28.08.13
22:11
В общем решается через "Ссылку нового"
13 Fragster
 
модератор
28.08.13
23:00
Зачем ЗарегистрироватьИзменения, когда проще ОбменДанными.Получатели.Добавить?
14 motkot
 
29.08.13
09:31
(13) а если "получатели" это уже готовый массив? заново его перебирать?
15 Fragster
 
модератор
29.08.13
09:31
(14) если готовый - то все само на регистрацию встанет
16 motkot
 
29.08.13
09:36
(15) массив получателей получен совершенно в другом куске кода. что значит "само собой"?
17 motkot
 
29.08.13
09:37
(13) и чем проще использовать?
18 Fragster
 
модератор
29.08.13
09:38
(17) ну, например, не надо парится над тем, что ты сделал ПолучитьСсылкуНового, а кто-то в другой подписке сделал "установитьСсылкуНового" с другой ссылкой...
19 Maxus43
 
29.08.13
09:38
это кстати да, чото я затупил.
Нигде никогда не используется принудлительная регистрация объекта записываемого, это стандартный механизм обменов, регистрации происходит по окончании записи элемента.

ЗарегистрироватьИзменения - используется для регистрации ссылок массово например, чотобы не перезаписывать объекты
20 motkot
 
29.08.13
09:43
(18) получается если есть готовый массив с ссылками на планы обмена, то его нужно перебрать и выполнить ОбменДанными.Получатели.Добавить?
21 Fragster
 
модератор
29.08.13
09:44
(16)(18) да. а можно передать в то место, в котором массив формируется массив получателей - он там сразу и заполнится...
22 motkot
 
29.08.13
09:45
(19)(21) спасибо за разъяснения.
23 Fragster
 
модератор
29.08.13
09:45
(16)(20) я про "готовый массив" подума, что ты в обменданнымии.получатели заглянул и увидел свой список узлов
24 motkot
 
29.08.13
09:45
(23) если бы было бы так :)
25 Maxus43
 
29.08.13
09:48
Это делается в подписках обычно, у источника заполняются получатели, чтобы не плодить код непонятно где
26 motkot
 
29.08.13
09:49
(25) да я не против же.
27 motkot
 
29.08.13
09:50
а снять регистрацию (уже зарегистрированного), кроме как "УдалитьРегистрациюИзменений" можно как то?
28 Fragster
 
модератор
29.08.13
09:52
(27) тут да. но не при записи же это делать :)
29 motkot
 
29.08.13
09:55
всем спасибо за участие!
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn