Имя: Пароль:
1C
1С v8
Запись в попытке
0 Aston
 
17.09.12
14:10
Добрый день.

v. 8.1.15.14.

Получаю СправочникОбъект в базе_Com. Если не найден в базе, из который подключаюсь - пытаюсь записать. Выдает "Код не уникален". Меняю код. Выдает "Ошибка при установке значения атрибута контекста (Код)"... Если же я до первой попытки записи меняю код - без проблем, записывает... что я делаю не так?

Примеры кодов:
Попытка
 СправочникОбъек​т.Записать();
Исключение
 Попытка
   СправочникОбъек​т.Код = "3452фыуе3";
   СправочникОбъек​т.Записать();
 Исключение
 КонецПопытки
КонецПопытки // Выдается ошибка. Если целиком меняю на

Попытка
 СправочникОбъек​т.Код = "3452фыуе3";
 СправочникОбъек​т.Записать();
Исключение
КонецПопытки //Работает без проблем

Что не так? и как реализовать попытку записи с существующим кодом, в случае ошибки - установить новый код?
1 Maxus43
 
17.09.12
14:15
сомневаюсь что вложенные попытки поддерживает
2 Aston
 
17.09.12
14:18
(1) пробовал вывести из попытки - то же самое.. т.е. писал так
Попытка
 СправочникОбъек​т.Записать();

Исключение
 НеЗаписали = Истина;
КонецПопытки

Если НеЗаписали Тогда
 Попытка
   СправочникОбъек​т.Код = "3452фыуе3";
   СправочникОбъек​т.Записать();
 Исключение
 КонецПопытки
КонецЕсли;

Результат тот же... Ошибка..
3 МишКа
 
17.09.12
14:19
Какая ошибка?
4 Kreont
 
17.09.12
14:20
А между этими первыми строками:
Попытка
 СправочникОбъек​т.Записать();


Исключение


Нету еще чего-то, что влияет на заполнение, создание элемента справочника?
5 МишКа
 
17.09.12
14:21
И где инициализация переменной "НеЗаписали"?
6 vde69
 
17.09.12
14:22
(1) вложеные попытки поддерживаются, только вот КОМ обьект не умеет работать с ошибками,

по этому в КОМ соединении для обработку ошибки на удаленной стороне можно сделать только в удаленной процедуре.

(0) такое поведение обусловлено тем, что при генерации ошибки в первом исключении 1с получат не ошибку записи а ошибку метода КОМ обьекта, и у всего КОМ обекта устанавливается флаг необработаной ошибки...

если ты эту конструкцию внешешь в код удаленной базы и будешь вызывать эту процедуру - все прокатит
7 Maxus43
 
17.09.12
14:23
(6) ыть, не знал :)
8 Aston
 
17.09.12
14:23
(6) - да спасибо - только что пробовал.. действительно так... странно, но...
9 vde69
 
17.09.12
14:27
(8)(7) вообщето в сабже должна быть ошибка "в данной транзакии уже были ошибки",

собственно это по тому что первая ошибка обработана для КОМ и НЕ обработана для обьекта.