ВыполнитьВБезопасномРежиме теперь выполняет ОтменитьТранзакцию()

1. nickstrelets 11.12.24 19:17 Сейчас в теме
На релизе 1С:Бухгалтерии 3.0.165.21 неожиданно обнаружил, что перестала производиться запись в регистр сведений через процедуру БСП ОбщегоНазначения.ВыполнитьВБезопасномРежиме().
Полез разбираться, и обнаружил, что теперь код выполнения алгоритма выглядит так:
Выполнить Алгоритм;
ОтменитьТранзакцию();


Кто-нибудь еще сталкивался с тем, что теперь старый код не работает? Как поступали?

Полностью процедура:
Процедура ВыполнитьВБезопасномРежиме(Знач Алгоритм, Знач Параметры = Неопределено) Экспорт
    
    ПроверитьАлгоритм(Алгоритм);
    
    УстановитьБезопасныйРежим(Истина);
    
    Если ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда
        МодульРаботаВМоделиСервиса = ОбщийМодуль("РаботаВМоделиСервиса");
        МассивРазделителей = МодульРаботаВМоделиСервиса.РазделителиКонфигурации();
    Иначе
        МассивРазделителей = Новый Массив;
    КонецЕсли;
    
    Для Каждого ИмяРазделителя Из МассивРазделителей Цикл
        
        УстановитьБезопасныйРежимРазделенияДанных(ИмяРазделителя, Истина);
        
    КонецЦикла;
    
    Попытка
        Если ТранзакцияАктивна() Тогда
            Выполнить Алгоритм;
        Иначе
            НачатьТранзакцию();
            Попытка
                Выполнить Алгоритм;
                ОтменитьТранзакцию();
            Исключение
                ОтменитьТранзакцию();
                ВызватьИсключение;
            КонецПопытки;
        КонецЕсли;
    Исключение
        ИнформацияОбОшибке = ИнформацияОбОшибке();
        Уточнение = ОбщегоНазначенияКлиентСервер.УточнениеИсключения(ИнформацияОбОшибке);
        ВызватьИсключение(Уточнение.Текст, КатегорияОшибки.ОшибкаВнешнегоИсточникаДанных ,,, ИнформацияОбОшибке);
    КонецПопытки;
    
КонецПроцедуры
Показать
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1936660 11.12.24 20:59 Сейчас в теме
(1)
Как поступали?
Начинали стонать и поливать говном фирму 1С на форумах, конечно.

Фрагмент:
Если ТранзакцияАктивна() Тогда
    Выполнить Алгоритм;
Иначе
    НачатьТранзакцию();
    Попытка
        Выполнить Алгоритм;
        ОтменитьТранзакцию();
    Исключение
        ОтменитьТранзакцию();
        ВызватьИсключение;
    КонецПопытки;
КонецЕсли;
Показать
У тебя никаких мыслей не вызывает?
4. Sashares 33 12.12.24 13:10 Сейчас в теме
(2) Надо еще жирным выделить ЕСЛИ ТРАНЗАКЦИЯАКТИВНА() ТОГДА.
3. Boneman 302 12.12.24 12:31 Сейчас в теме
(1) видимо выполнение в безопасном режиме не предполагает изменение данных произвольным алгоритмом.
Думаю исходя из соображений безопасности это сделано.
Если у вас произвольным кодом меняются данные, что мешает менять данные без использования этой функции, либо вызывать это непосредственно внутри транзакции
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот