Получаю СправочникОбъект в базе_Com. Если не найден в базе, из который подключаюсь - пытаюсь записать. Выдает "Код не уникален". Меняю код. Выдает "Ошибка при установке значения атрибута контекста (Код)"... Если же я до первой попытки записи меняю код - без проблем, записывает... что я делаю не так?
Примеры кодов:
Попытка
СправочникОбъек​т.Записать();
Исключение
Попытка
СправочникОбъек​т.Код = "3452фыуе3";
СправочникОбъек​т.Записать();
Исключение
КонецПопытки
КонецПопытки // Выдается ошибка. Если целиком меняю на
Попытка
СправочникОбъек​т.Код = "3452фыуе3";
СправочникОбъек​т.Записать();
Исключение
КонецПопытки //Работает без проблем
Что не так? и как реализовать попытку записи с существующим кодом, в случае ошибки - установить новый код?
(1) вложеные попытки поддерживаются, только вот КОМ обьект не умеет работать с ошибками,
по этому в КОМ соединении для обработку ошибки на удаленной стороне можно сделать только в удаленной процедуре.
(0) такое поведение обусловлено тем, что при генерации ошибки в первом исключении 1с получат не ошибку записи а ошибку метода КОМ обьекта, и у всего КОМ обекта устанавливается флаг необработаной ошибки...
если ты эту конструкцию внешешь в код удаленной базы и будешь вызывать эту процедуру - все прокатит
(8)(7) вообщето в сабже должна быть ошибка "в данной транзакии уже были ошибки",
собственно это по тому что первая ошибка обработана для КОМ и НЕ обработана для обьекта.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс