|   |   | 
| 
 | Запись новой номенклатуры. Помогите понять строчку кода | ☑ | ||
|---|---|---|---|---|
| 0
    
        shock3r 13.03.13✎ 12:49 | 
        НоваяНоменклатура = СтрНом.Номенклатура;
  НоваяНоменклатура.Код = ""; (**************) НоваяНоменклатура.Наименование = "Тест"; Попытка НоваяНоменклатура.Записать(); Исключение Предупреждение("Не удалось записать объект """ + НоваяНоменклатура + """! |" + ОписаниеОшибки(), 60); КонецПопытки; Разбираю обработку человека, который уволился, по причине того, что обработка начала ошибку выдавать, не могу понять какой смысл заложен в строку, помеченную звездочками... Если ее закоментить, то в чем принципиальное отличие будет? лог ошибки: {ВнешняяОбработка.ЗагрузкаДанныхИзРБ.МодульОбъекта(130)}: Ошибка при вызове метода контекста (Записать) НоваяНоменклатура.Записать(); по причине: Ошибка при попытке вставки записи с неуникальным значением ссылки. таблица Reference46. | |||
| 1
    
        НафНаф 13.03.13✎ 12:50 | 
        >>Разбираю обработку человека, который уволился, по причине того, что обработка начала ошибку выдавать
  сурово | |||
| 2
    
        shock3r 13.03.13✎ 12:50 | 
        try catch этот блок уже я добавил, его не было на момент записи лога     | |||
| 3
    
        forforumandspam 13.03.13✎ 12:51 | 
        :)     | |||
| 4
    
        shock3r 13.03.13✎ 12:51 | 
        (1) мой утрений баг, сорри))     | |||
| 5
    
        НафНаф 13.03.13✎ 12:51 | 
        что вот вот это?
  НоваяНоменклатура = СтрНом.Номенклатура; | |||
| 6
    
        forforumandspam 13.03.13✎ 12:52 | 
        НоваяНоменклатура - не "СправочникОбъект" ни разу.     | |||
| 7
    
        zak555 13.03.13✎ 12:52 | 
        НоваяНоменклатура = СтрНом.СоздатьЭлемент();
  где СтрНом = Справочники[ИмяСправочника] | |||
| 8
    
        andreymongol82 13.03.13✎ 12:52 | 
        Круто!
  Сделал пакость и смылся! | |||
| 9
    
        toxicoff 13.03.13✎ 12:52 | 
        угарел от причины уволнения :)
  Скорее всего он обнуляет код в надежде, что автонумерация отработает и выдаст новые код справочника. Там дальше объект.УстановитьКодНового() нету? | |||
| 10
    
        Reset 13.03.13✎ 12:52 | 
        (6) Откуда инфа? :)     | |||
| 11
    
        andreymongol82 13.03.13✎ 12:53 | 
        (10) СтрНом.Номенклатура
  Как правило это ссылка | |||
| 12
    
        shock3r 13.03.13✎ 12:54 | 
        (9) Там дальше объект.УстановитьКодНового() нету?     | |||
| 13
    
        Reset 13.03.13✎ 12:54 | 
        (11) Кто сказал?     | |||
| 14
    
        НафНаф 13.03.13✎ 12:54 | 
        наверняка записываете с тем же UUID     | |||
| 15
    
        shock3r 13.03.13✎ 12:54 | 
        (9) нету такого)     | |||
| 16
    
        Reset 13.03.13✎ 12:54 | 
        Ошибка в том, что такой элемент с такой ссылкой уже загружался     | |||
| 17
    
        Dolphinbet 13.03.13✎ 12:55 | 
        Причем здесь код, когда ссылка не уникальная? Скорее всего идет загрузка справочника Номенклатуры с установкой ссылки через УстановитьСсылкуНового()     | |||
| 18
    
        shock3r 13.03.13✎ 12:55 | 
        Ребята уточню: СтрНом.Номенклатура - эта данные которые берутся из xml файла, т.е. обработка выгружает номенклатуру из одной базы в другую.... в данном случае, этот блок уже запиливает в другую базу
  подскажите как обойти ошибку | |||
| 19
    
        АНДР 13.03.13✎ 12:55 | 
        Смотри что твориться в подписке на событие перед записью элемента справочника.
  Но судя по "НоваяНоменклатура.Наименование = "Тест";" фигня это всё. | |||
| 20
    
        zak555 13.03.13✎ 12:56 | 
        (18) в xml выгружен как ? как объект ?
  тогда в топку код -- грузи сразу весб объект | |||
| 21
    
        shock3r 13.03.13✎ 12:56 | 
        //Создаем номенклатуру
  Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка = &Ссылка | И Номенклатура.ЭтоГруппа = ЛОЖЬ"; Для Каждого СтрНом Из пТаблицаНоменклатуры Цикл Запрос.УстановитьПараметр("Ссылка",СтрНом.Номенклатура.Ссылка); Запрос.УстановитьПараметр("Родитель",Справочники.Номенклатура.НайтиПоНаименованию(СтрНом.ГруппаНоменклатуры)); РезЗапроса = Запрос.Выполнить().Выгрузить(); Если РезЗапроса.Количество() = 0 Тогда НоваяНоменклатура = СтрНом.Номенклатура; НоваяНоменклатура.Код = ""; НоваяНоменклатура.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("шт"); НоваяНоменклатура.НоменклатурнаяГруппа = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("Основная номенклатурная группа"); НоваяНоменклатура.Родитель = Справочники.Номенклатура.НайтиПоНаименованию(СтрНом.ГруппаНоменклатуры); НоваяНоменклатура.СтатьяЗатрат = Справочники.СтатьиЗатрат.НайтиПоНаименованию("Материальные расходы"); НоваяНоменклатура.СтранаПроисхождения = Справочники.КлассификаторСтранМира.НайтиПоКоду("112"); | |||
| 22
    
        shock3r 13.03.13✎ 12:57 | 
        вот весь кусок в котором ошибка вылетает     | |||
| 23
    
        Reset 13.03.13✎ 12:57 | 
        (21) Номенклатура.ЭтоГруппа = ЛОЖЬ
  Лишнее | |||
| 24
    
        andreymongol82 13.03.13✎ 12:58 | 
        (21) жесть     | |||
| 25
    
        cw014 13.03.13✎ 12:59 | 
        ИМХО г0вн0к0д     | |||
| 26
    
        shock3r 13.03.13✎ 13:00 | 
        (23) вообщем смысл в том, что, в теории, он смотрит чтобы в справонике не было такой номенклатуры, и только тогда ее записывает, почему могла возникнуть ситуация, мол ссылка не уникальная мне не понятно     | |||
| 27
    
        forforumandspam 13.03.13✎ 13:00 | 
        пТаблицаНоменклатуры - что такое? Откуда?     | |||
| 28
    
        shock3r 13.03.13✎ 13:01 | 
        (27) это выгруженная номенклатура из XML, которую нужно добавить в текущую базу     | |||
| 29
    
        forforumandspam 13.03.13✎ 13:02 | 
        Пора говн_окод на мисте отдельно как-то выделять. Коллекция гов_нокода будет.     | |||
| 30
    
        acsent 13.03.13✎ 13:02 | 
        скорее всего гдето устанавливяется ссылка нового - не уникальная     | |||
| 31
    
        АНДР 13.03.13✎ 13:02 | 
        Всё прозрачно до неприличия. Есть группа с таким UIDD.     | |||
| 32
    
        andreymongol82 13.03.13✎ 13:02 | 
        СтрНом.Номенклатура.Ссылка - значение какое в отладчике показывает?     | |||
| 33
    
        Reset 13.03.13✎ 13:02 | 
        (26) Я понимаю в чем смысл.
  Но если если такая ссылка уже есть, и она, по несчастью, является группой, то условие (23) пускает "алгоритм" (с позволения сказать) по неверному пути. | |||
| 34
    
        shock3r 13.03.13✎ 13:02 | 
        вообщем вопрос, из-за строчки НоваяНоменклатура.Код = ""; могла возникнуть ошибка? В чем отличие, если ее просто закоментить?     | |||
| 35
    
        Reset 13.03.13✎ 13:03 | 
        (34) Нет. Закментить строку (23)     | |||
| 36
    
        shock3r 13.03.13✎ 13:03 | 
        (31) Спасибо! вот это действительно интересная мысль!!!!     | |||
| 37
    
        andreymongol82 13.03.13✎ 13:03 | 
        (34) Могла, но другая. Заремарить     | |||
| 38
    
        Privalov 13.03.13✎ 13:03 | 
        (34)Нет.     | |||
| 39
    
        acsent 13.03.13✎ 13:03 | 
        Может есть группа с той же ссылкой?     | |||
| 40
    
        Reset 13.03.13✎ 13:04 | 
        (36) Пожалуйста.     | |||
| 41
    
        shock3r 13.03.13✎ 13:04 | 
        (35) спасибо, я понял косяк! уберу группа = ложь     | |||
| 42
    
        НафНаф 13.03.13✎ 13:04 | 
        надо проверять существование ссылки вот так ПолучитьСсылку
  безо всяких выкрутасов | |||
| 43
    
        Reset 13.03.13✎ 13:05 | 
        (42) Хм?     | |||
| 44
    
        НафНаф 13.03.13✎ 13:11 | 
        (43) брешу, но можно так получить ссылку, а потом запросом ее найти     | |||
| 45
    
        Reset 13.03.13✎ 13:15 | 
        (44) Да, для проверки существования "объекта по ссылке" нужен запрос в том или ином виде     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |