|
Запись новой номенклатуры. Помогите понять строчку кода | ☑ | ||
---|---|---|---|---|
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) Да, для проверки существования "объекта по ссылке" нужен запрос в том или ином виде
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |