Имя: Пароль:
1C
1С v8
В данной транзакции уже происходили ошибки!
0 clarion
 
13.03.08
13:18
Хотелось бы услышать грамотное описание причин возникновения такой ошибки (где можно почитать?). Или кусочек кода эмулирующий такую ошибку...
Ситуация: есть простенький запросик, при выполнении котрого иногда возникает такая ошибка.
Выборка=Запрос.Выполнить().Выбрать();
Ошибка выполнения запроса "В данной транзакции уже происходили ошибки!"
Что это? Конфликт блокировок в запросе? Примечательно, что явно транзакция в этот момент не активна, да и не явной транзакции вроде бы взяться не откуда, это происходит не при записи/проведении...
1 Bahmet
 
13.03.08
13:21
ну у меня это возникало при срабатывание второго исклюения при Попытке
2 clarion
 
13.03.08
13:25
(1) Т.е.
НачатьТранзакцию();
Для н=1 По 2 Цикл
Попытка
а=1/0;
Исключение
КонецПопытки;
КонецЦикла;
ЗафиксироватьТранзакцию();
3 clarion
 
13.03.08
13:29
+(2) примерчик-то работает, без проблем :)
У меня запрос выполняется НЕ в конструкции Попытка...
4 Freeman391
 
13.03.08
13:30
В УПП 1.2.14 был такой косяк в модуле ОбщегоНазначения в процедуре СоздатьКЭШУчетнойПолитики

Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ РАЗРЕШЕННЫЕ
|    УчетнаяПолитикаБухгалтерскийУчет.Организация,
|    УчетнаяПолитикаБухгалтерскийУчет.Период // Для механизма RLS
|ИЗ
|    РегистрСведений.УчетнаяПолитикаБухгалтерскийУчет КАК УчетнаяПолитикаБухгалтерскийУчет";
Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Организация");

Вызывало сообщение "В данной транзакции уже происходили ошибки! "

Cрабатывал свой механизм RLS (нестандартный)!
5 clarion
 
13.03.08
13:34
(4) У меня и запрос-то без РЛС...
Где бы узнать, что в теории означает такая ошибка?... Мож в "Проф. разработке" на эту тему что есть?...
6 clarion
 
13.03.08
13:48
Примерчик кода бы создающий эту ошибку, для наглядности...
7 clarion
 
13.03.08
14:23
И ещё интересная ситуация, в 8.1, в отличии от 8.0 происходит откат транзакции даже при востановимой ошибке, т.е. в примере из (2) транзакция не будет зафиксированна.
8 clarion
 
13.03.08
14:26
(7) а нет, не совсем так зависит всё-таки от характера ошибки...
9 clarion
 
13.03.08
14:37
Кто-то же должен знать внятную причину возникновения ошибки...
10 hhhh
 
13.03.08
14:40
(9) обратись к экстрасенсу.
11 Рэйв
 
13.03.08
14:42
(9)Я знаю:-)

Попытка при сваливании в исключение так отрабатывает в транзакции.

Убирай или попытку или транзакцию.
12 clarion
 
13.03.08
14:46
(11) Хорошо. Тогда простенький пример кода, типа (2) который вызовет эту ошибку, можно?
Проблема тут ещё в том, что Попытки у меня нет 100%, а транзакция возможна только не явная, хотя ещё раз подчеркну, не вижу причин для начала неявной транзакции именно в этот момент.
13 clarion
 
13.03.08
14:59
И ещё, хотелось бы понять откуда может взяться неявная транзакция? Я знаю что все события модуля типа ПриЗаписи(), происходят в неявной транзакции, возможно она распространяется на весь код внутри модуля объекта?...
14 Zlodey1С
 
13.03.08
15:08
(13) Да пакажи ты свой код где общипка
15 clarion
 
13.03.08
15:13
(14) да богсним, с кодом :) Меня интересует чисто теоритическая сторона вопроса, пока... Похоже ошибка действительно связана с Попыткой внутри транзакции, но почему тогда не удается воспроизвести ошибку каким-нибудь простеньким кодом?...
16 clarion
 
13.03.08
15:30
ап!
17 clarion
 
13.03.08
15:42
ап
18 clarion
 
13.03.08
16:02
вверх
19 clarion
 
13.03.08
16:16
up
20 clarion
 
14.03.08
14:52
Всё-таки хотелось бы выяснить для себя причину возникновения ошибки. Пока понятно только то, что ошибка происходит если в Попытке были какие-то не корректные изменения данных в ИБ, например:
НачатьТранзакцию();
Для н=1 По 3 Цикл
   Попытка
       Нов=Справочники.Товары.СоздатьЭлемент();
       Нов.Код="1";
       Нов.Записать();
   Исключение
       Сообщить(ОписаниеОшибки());    
   КонецПопытки;
КонецЦикла;
ЗафиксироватьТранзакцию();
НО, хоть сообщение и выдается "В этой транзакции...", Попытка корректно обрабатывает ошибку. Мне же интересно в каком случае 1С-ка валится совсем с модальным окном и "завершить работу"?
21 Zlodey1С
 
14.03.08
14:54
Попробуё так, запишется или нет?

//НачатьТранзакцию();
Для н=1 По 3 Цикл
   Попытка
       Нов=Справочники.Товары.СоздатьЭлемент();
       Нов.Код="1";
       Нов.Записать();
   Исключение
       Сообщить(ОписаниеОшибки());    
   КонецПопытки;
КонецЦикла;
//ЗафиксироватьТранзакцию();
22 France
 
14.03.08
14:56
объяснение элементарное:
Если идут вложенные транзакции, и хотя бы в одном из вложенных транзакций будет ошибка, самая первая транзакция всегда завершается с ошибкой "В данной транзакции уже происходили ошибки".
23 clarion
 
14.03.08
15:00
(22) Можно пример кода который вызовет ошибку именно с модальным окошком?...
24 France
 
14.03.08
15:04
(23) открой модальное окно в НачатьТранзакцию,  и подожди некоторое время, чтоб транзакция по таймауту отвалилась, затем закрой модальное - должен получить ошибку.
25 iSeRG
 
14.03.08
15:21
(24) транзакция может по таймауту отвалится?
26 iSeRG
 
14.03.08
15:24
(4) какой еще "свой механизм RLS?"
там вообще RLS не срабатывал, т.к. из РС выбиралась только Организация, которая явл измерением, а при выборки только змерений RLS платформа не добавляет. Вот и была ошибка, когда в результат запроса попадали не доступные пользователю записи
27 France
 
14.03.08
15:38
(25) ну да..почему бы и не нет?
28 France
 
14.03.08
15:42
27 + подробности нужны?
29 rivan
 
30.04.08
16:35
Аналогичная проблема в УПП 1.2.12 пл 8.1.11.67
Бухи начали перепроводить задним числом документы реализации и некоторые документы стали выдавать эту ошибку.
Простое копирование документа в тотже момент времени проходит нормально
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой