Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Прочее]

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

Klyacksa
читатель
офлайн
Дата регистрации: 04.05.2009
Сообщений: 20
Пост №1
 
16.06.2009 12:02

Доброго времени суток!<br><br>Вопрос в следующем:<br>При выполнении регламентного задания (в клиент-серверной версии базы, выполнение на сервере) возникла ошибка "В данной транзакции уже происходили ошибки!", и, естественно, при каждом последующем запуске оно вылетает на эту же ошибку, даже не пытаясь ничего реально запускать. <br><br>Я сталкивалась с подобной ошибкой при выполнении кода на клиенте, и в этом случае спасало просто перезайти в базу - дальше все работало. А если на стороне сервера возникает эта ошибка? Каждый раз перезагружать сервер никто не даст. <br><br>Как сбросить эту ошибку, чтобы продолжить функционирование регламентного задания, почему ошибка могла возникнуть и как избежать ее повторения?

BelikovS
читатель
офлайн
Дата регистрации: 05.03.2007
Сообщений: 1701
Пост №2
 
16.06.2009 12:29

В основном такая штука случается, когда внутри одной транзакции оказывается другая, в которой собственно и присходит ошибка. Самый простой способ её увидеть:<br> Открываем транзакцию, начинаем проводить документы, причем проведение стоит в Попытка-Исключение, чтобы программа не вываливалась. Какой-то докумен не может быть проведен и выкидывает ошибку, после этого Зафиксировать транзакцию уже нельзя.<br><br>Вывод - либо отказаться от транзакции, либо от обработки ошибок. Я выбрал отказ от транзакции в таких случаях или закрываю транзакцию до записи объектов (особенно если они типовые).<br><br>> продолжить функционирование регламентного задания<br>Продолжить никак. Лучше всего его полностью остановить и запустить снова.<br>

Klyacksa
читатель
офлайн
Дата регистрации: 04.05.2009
Сообщений: 20
Пост №3
 
16.06.2009 12:32

"Продолжить - я имела ввиду не текущее выполнение регламентного задания, а работу рег.задания при последующих запусках. Кого остановить? Рег.задание?<br><br>Поясните, пожалуйста, подробней.<br>Почему нельзя Зафиксировать транзакцию, если, к примеру, используется конструкция:<br><br>НачатьТранзакцию();<br> Попытка<br>      // проводим докумены<br> Исключение<br>      // обработка исключения<br> КонецПопытки;<br>ЗафиксироватьТранзакцию();<br><br>И что значит "отказаться от отработки ошибок"? То есть, убрать из этой конструкции Попытку-Исключение?"

BelikovS
читатель
офлайн
Дата регистрации: 05.03.2007
Сообщений: 1701
Пост №4
 
16.06.2009 13:28

"> Поясните, пожалуйста, подробней.<br>> Почему нельзя Зафиксировать транзакцию, если, к примеру, используется конструкция:<br>> <br>> НачатьТранзакцию();<br>> Попытка<br>>       // проводим докумены<br>> Исключение<br>>       // обработка исключения<br>> КонецПопытки;<br>> ЗафиксироватьТранзакцию();<br>> <br>> И что значит "отказаться от отработки ошибок"? То есть, убрать из этой конструкции Попытку-Исключение?<br><br>Представть, что ваша конструкция теперь выглядит так (просто есть кусок которого вы не видите - не вы его писали):<br><br>НачатьТранзакцию();<br> Попытка<br>       //Вот этот код где-то там - далеко в каком-нибудь модуле, да и 1С, что-то такое ведет в случае проведения<br>       НачатьТранзакцию();<br>       Попытка<br>            //Здесь возникает ошибка<br>       Исключение<br>       ОтменитьТранзакцию();<br>       КонецПопытки;<br>       ЗафиксироватьТранзакцию();<br> Исключение<br>       // обработка исключения<br> КонецПопытки;<br>ЗафиксироватьТранзакцию();<br><br>Так вот, если я правильно понимаю, то если вложенная транзакция закрывается, то транзакция верхнего уровня это видит и отказывается закрываться (возможно она уже тоже закрытая). В общем - кроме отмены транзакции уже ничего не сделать.<br><br>Вот и получается, что несмотря на обработку ошибки (исключения) - ошибка уже была и ничего с этим не сделать. Значит надо от чего-то отказаться. Или увидеть ошибку или убрать транзакцию.<br>"

BelikovS
читатель
офлайн
Дата регистрации: 05.03.2007
Сообщений: 1701
Пост №5
 
16.06.2009 13:29

> Кого остановить? Рег.задание?<br>А что у вас показывает "Консоль Заданий " по поводу вашего зависшего задания?

Klyacksa
читатель
офлайн
Дата регистрации: 04.05.2009
Сообщений: 20
Пост №6
 
16.06.2009 14:02

"1> НачатьТранзакцию();<br>2>      Попытка<br>3>       //Вот этот код где-то там - далеко в каком-нибудь модуле, да и 1С, что-то такое ведет в случае проведения<br>4>       НачатьТранзакцию();<br>5>       Попытка<br>6>             //Здесь возникает ошибка<br>7>       Исключение<br>8>       ОтменитьТранзакцию();<br>9>       КонецПопытки;<br>10>       ЗафиксироватьТранзакцию();<br>11>      Исключение<br>12>       // обработка исключения<br>13>      КонецПопытки;<br>14> ЗафиксироватьТранзакцию();<br><br>В этой последовательности получается, что если мы попадаем на отмену транзакции в строке 8, то потом в строке 10 закрывается не внутренняя транзакция, а внешняя, и при закрытии ее повторно в 14 появляется ошибка. В данном случае, я бы предложила фиксацию внутренней транзакции перенести во внутреннюю попытку (в самый конец). Но это уже так, отступление. <br><br>Ок, в этой последовательности понятно, спасибо. Только будет очень трудно найти, где же оно в реальном коде ломается. <br><br>>> Кого остановить? Рег.задание?<br>>А что у вас показывает "Консоль Заданий " по поводу вашего зависшего задания? <br><br>Вот "КонсольЗаданий" как раз и показывала в графе Ошибка "В данной транзакции уже происходили ошибки!". Правда, потом убрали Использование Рег.задания, а сегодня опять его запустили - ошибка прошла. Но есть вероятность, что сервер перезагружали, узнать пока точно не могу - это сервер нашего филиала в другом городе. "

Klyacksa
читатель
офлайн
Дата регистрации: 04.05.2009
Сообщений: 20
Пост №7
 
16.06.2009 14:07

Попробовала на тестовой клиент-серверной базе реализовать описанный выше механизм - возникает ошибка "Ошибка при вызове метода контекста (ЗафиксироватьТранзакцию): Транзакция не активна"<br><br>Может, все-таки ошибка "В данной транзакции уже происходили ошибки" возникает наоборот от незакрытой (и не отмененной) транзакции, когда она остается висеть в базе?

BelikovS
читатель
офлайн
Дата регистрации: 05.03.2007
Сообщений: 1701
Пост №8
 
16.06.2009 14:46

> Попробовала на тестовой клиент-серверной базе реализовать описанный выше механизм - возникает ошибка "Ошибка при вызове метода контекста (ЗафиксироватьТранзакцию): Транзакция не активна"<br><br>Правильно, я вспомнил, она действительно так пишет.<br><br>> Может, все-таки ошибка "В данной транзакции уже происходили ошибки" возникает наоборот от незакрытой (и не отмененной) транзакции, когда она остается висеть в базе?<br><br>Так транзакция уже закрыта (что вам и было сообщено выще). А это сообщение в таком случае наоборот от того, что вы пытаетесь Отменить уже Закрытую транзакцию.<br><br><br>

Klyacksa
читатель
офлайн
Дата регистрации: 04.05.2009
Сообщений: 20
Пост №9
 
16.06.2009 14:51

Неа, при отмене закрытой (или отмененной) транзакции тоже пишется сообщение про то, что транзакция не активна. То же самое, что и при попытке закрыть закрытую (или отмененную) транзакцию :)<br><br>И еще сопутствующий вопрос: просмотрела весь код регламентного задания, все транзакции закрыты грамотно. В чем может быть проблема в этом случае? Может, могут быть грабли с встроенными транзакциями (которые мы сами не вызываем, которые сопутствуют записи объектов, к примеру)?

BelikovS
читатель
офлайн
Дата регистрации: 05.03.2007
Сообщений: 1701
Пост №10
 
16.06.2009 15:30

"Погонял я транзакции.<br>Результат такой: Это сообщение возникает в случае, когда:<br>1. Была ошибка<br>2. Транзакция еще не закрыта<br>3. Происходит операция с базой.<br>Например:<br>НачатьТранзакцию ();<br>Попытка<br> Объект = Ссылка.ПолучитьОбъект();<br> Объект.Код = "00000008476"; //Заведомо существующий<br> Объект.Записать();<br> ЗафиксироватьТранзакцию();<br>Исключение<br> Объект = Ссылка.ПолучитьОбъект();<br> Сообщить ("Не Изменил" + Строка(Объект.Код));<br> ОтменитьТранзакцию();<br>КонецПопытки;"

Показывать по 10 20 40 сообщений

Читают тему:

Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация