![]() |
![]() |
|
В данной транзакции уже происходили ошибки! | ☑ | ||
---|---|---|---|---|
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
Бухи начали перепроводить задним числом документы реализации и некоторые документы стали выдавать эту ошибку. Простое копирование документа в тотже момент времени проходит нормально |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |