|
Новая база Бухгалтерия для Украины | ☑ | ||
---|---|---|---|---|
0
satoru
14.02.17
✎
12:39
|
Платформа 8.3.6.2332.
Создаю новую базу Бухгалтерия для Украины (1.2.39.2) и при первоначальном заполнении Плана видов расчета Оклад по часам выдаёт ошибку: {Обработка.НачальноеЗаполнениеИОбновлениеОбъектов.МодульОбъекта(1386)}: Ошибка при вызове метода контекста (ПолучитьОбъект) ТекущаяЗапись = СсылкаНаЭлемент.ПолучитьОбъект(); по причине: В данной транзакции уже происходили ошибки! |
|||
1
Волшебник
модератор
14.02.17
✎
12:39
|
ошибка в строке 1386
|
|||
2
satoru
14.02.17
✎
12:46
|
(1) Если через отладчик, то он возвращает:
СсылкаНаЭлемент: Ошибка получения представления значения |
|||
3
Так мало знающий
14.02.17
✎
12:51
|
(2) Элемент не найден, а он еще и пытается получить его как Объект. Смотри почему не нашел.
|
|||
4
satoru
14.02.17
✎
13:03
|
(3) Он не может найти предопределенный объект "ОкладПоЧасам", который прописан в предопределенных элементах плана видов расчета "Основные начисления работников".
|
|||
5
satoru
14.02.17
✎
15:42
|
Теперь он не может найти предопределенный "Код01" в справочнике "Виды доходов НДФЛ".
|
|||
6
satoru
14.02.17
✎
17:55
|
up
|
|||
7
Волшебник
модератор
14.02.17
✎
17:58
|
(5) кто он?
|
|||
8
satoru
14.02.17
✎
17:59
|
(7) 1C
|
|||
9
sonsimo
14.02.17
✎
18:00
|
Это ошибка означает, что была открыта транзакция, в транзакции еще одна транзакция, а потом в этой транзакции произошло исключение, которое отловили, но транзакцию не откатили.
Что бы найти причину, нужно устанавливать остановку по ошибке и смотреть где исключение вызывается |
|||
10
satoru
14.02.17
✎
18:01
|
(9) Я так и сделал. И вычисление выражения показало: (2)
|
|||
11
sonsimo
14.02.17
✎
18:23
|
(10) останавливаться на ошибке типа "в транзакции уже происходили ошибки" поздно. Нужно искать предыдущую ошибку, даже если она заключена в попытку исключение.
После такой ошибки любое обращение к БД, даже из отладчика приводит к исключению. В том числе и получение предоставления ссылки. Вообще, такие ошибки отлавливать - это самое Галчонок, что есть. Если включить остановку по ошибке, то до этой ошибки никаких исключений нет? Если по ошибке не останавливается, то нужно искать ОтменитьТранзакцию, которая вызывается перед возникновением ошибки. |
|||
12
sonsimo
14.02.17
✎
18:26
|
(11) Т.е. план действий должен быть примерно такой:
1. Ищем, было ли какое то исключение до возникновения ошибки. Если было, нужно правильно откатывать транзакцию. 2. Если не было исключения, то останавливаемся по ошибке с "в этой транзакции..." и раскручиваем стек вызовов. В коде, который был до этого нужно найти откат транзакции. |
|||
13
sonsimo
14.02.17
✎
18:29
|
+ (12) ну и после нужно анализировать, почему такие вложенные транзакции возникают и нужны ли они вообще.
Ну и если есть откат транзакции, то вроде нужно откатить из все. |
|||
14
Волшебник
модератор
14.02.17
✎
18:30
|
вложенных транзакций не бывает
|
|||
15
sonsimo
14.02.17
✎
18:33
|
Вроде бывают.
Если несколько раз начинать транзакцию, но не фиксировать ее, то это именно они. Другой вопрос, что исключение весь стек транзакций отменяет. Т.е. нельзя открыть одну транзакцию, что то сделать с данными, потом открыть другую, что то сделать, потом вторую отменить, а первую закоммитить. Т.к. отмена второй отменит и первую вроде. Но такое поведение приводит к описанной ошибке. |
|||
16
lubitelxml
14.02.17
✎
18:38
|
(0) рассказывай как базу создавал. Cf в чистую грузил? Попробуй cf версией раньше, отпиши что получилось
|
|||
17
satoru
15.02.17
✎
08:58
|
(16) Загружал cf в чистую базу. На версии 1.2.38 данной ошибки нет и если её обновить до 1.2.39, то данной ошибки тоже нет.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |