|   |   | 
| 
 | ЗарегистрироватьИзменения для нового элемента | ☑ | ||
|---|---|---|---|---|
| 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 | 
        всем спасибо за участие!     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |