Версия для печати темы (https://pro1c.org.ua/index.php?s=8c9b9daa11fc6f05711a3990faa4dfc5&showtopic=67264)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Помилка при обміні замовленнями із сайтом: У поточній транзакції вже відбувалися помилки!

Автор: yaroslav_29 04.06.23, 21:38

1С:Підприємство 8.3 (8.3.18.1289) BAS Управління торгівлею, редакція 3.2 (3.2.14.8)

При виконанні обміну замовленнями із сайтом виникають такі помилки:

{ОбщийМодуль.ОбменССайтом.Модуль(4340)}: Помилка при виклику методу контексту (Записать)
            ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
через:
Не вдалося провести: "Замовлення клієнта"!
{ОбщийМодуль.ОбменССайтом.Модуль(4344)}: Помилка при виклику методу контексту (Записать)
            ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
через:
У поточній транзакції вже відбувалися помилки!


Помилки виникають при спробі провести документ, так як немає потрібної кількості а відбувається резервування, але ж мало б дальше просто записати замовлення без проведення
Процедура ЗаписатьДокумент(ДокументОбъект)
    
    Если НЕ ЗначениеЗаполнено(ДокументОбъект.Номер) Тогда
        ДокументОбъект.УстановитьНовыйНомер();
    КонецЕсли;
    
    Если ДокументОбъект.ЭтоНовый() Или ДокументОбъект.Проведен Тогда
        Попытка
            ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);            
        Исключение
            ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
        КонецПопытки;
    Иначе
        ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
    КонецЕсли;
    
КонецПроцедуры


Чи я не правильно розумію код? І які можливі варіанти виходу із такої ситуації?

Автор: zay 05.06.23, 9:42

yaroslav_29 @ Вчера, 22:38 * ,
Попытка ... Исключение - це неявна транзакція
Помилка "У поточній транзакції вже відбувалися помилки" відбувається коли розпочата транзакція потрапила у Попытка ... Исключение (тобто ще раз розпочалась транзакція) і там відбулося виключення. І це викликає відкат усієї транзакції
В результаті видається неінформативне повідомлення про помилку, з якого не можливо зрозуміти що стало причиною

Що робити. Для того щоб знайти справжнє місце помилки, у конфігураторі треба ввімкнути "Зупинка при помилці". Так можна знайти де вона вперше виникає і з'ясувати причину помилки (у мене такі помилки найчастіше пов'язані з правами доступу користувача)

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua