1sjourn ошибка обращения к данным при транзакции

v7: Ошибка обращения к данным при транзакиции, выполняемой другим пользователем. ☑ 0

Воин 1С

17.08.06

14:46

Последние несколько дней база стала давать предупреждение:При выполенении произошла ошибка! Таблица 1SJourn Ошибка обращения к данным при транзакиции, выполняемой другим пользователем.Повторить попытку? [Да Нет].Появляется при проведении доков, выполнении отчетов. Если кто встречал такую фичу, подскажите как лечить

1

AeDen

17.08.06

14:47

Ошибка обращения к данным при транзакиции, выполняемой другим пользователем.

2

zbv

17.08.06

14:47

В поиске смотрел?

3

Воин 1С

17.08.06

14:49

(1) Спасибо а то я думаю и что это значит…

4

Воин 1С

17.08.06

14:49

(2) Не пока ща гляну

5

Воин 1С

17.08.06

14:51

В поиске ничего подходящего нету;(

6

AeDen

17.08.06

14:51

(3) Ну, думай дальше. Кто мешает?

7

Воин 1С

17.08.06

14:59

Ну что, неужели никто не встречал ничего похожего?

8

GenV

17.08.06

15:03

(5) Плохо смотрел. Ищи: Ошибка обращения к данным при транзакции 1С

9

Воин 1С

17.08.06

15:07

(8) Спасиб, я глянул. Насколько понял, коллизия призаписи доков в табицу, используемую для УРБД. Но, почему она стала появляться? Раньше ведь не было..

10

GenV

17.08.06

15:19

(9) См.(1) Ошибка <одновременного> обращения к <различным> данным при транзакиции, выполняемой другим пользователем. Темерь понятно?

11

ламеры спрашивают

17.08.06

15:48

(10) Почему «к <различным>». Наверное хотел сказать «к одним и тем же»?

12

Воин 1С

17.08.06

15:52

(10)Нет, поясни плиз

13

GenV

17.08.06

15:52

(11) различным — значит не только к таблицам УРБД :)

14

Воин 1С

17.08.06

15:54

(13) В 1SJORn хранятся записи используемые урбд.Непонятно почему это появилось и что с ним делать;)

15

GenV

17.08.06

15:56

(14) … Да тех, кто в бронепоезде: несколько пользователей хотят одновременно получить одни данные. Возникает транзакция (блокировка данных). Теперь-то понятно?

16

ламеры спрашивают

17.08.06

15:57

(13) ОК

17

AeDen

17.08.06

15:57

(15) Rnj-nj gsnftncz ljcnexfnmcz lj lfyys[? rjnjhst ,kjrbhjdfys nhfypfrwbtq/

18

Воин 1С

17.08.06

15:57

От тех, кто в бронепоезде: Почему этой ошибки раньше не было?

19

Воин 1С

17.08.06

15:58

Сейчас она постоянно вылезает на экран

20

GenV

17.08.06

15:59

(19) Сейчас только один пользователь или кто-то что-то проводит?

21

zalex

17.08.06

15:59

(14) В 1SJORN хранятся журналы, все.

(18) Наиболее вероятно, что в одной из обработок проведения ты впендюрил Вопрос() или Предупреждение(). Обработка это транзакция, и она не закончится, пока пользователь не закроет окошко вызванное одной из этих функций. Пока один пользователь не закончит транзакцию, никто другой не может ее начать.

22

Воин 1С

17.08.06

16:01

(21) Ничего я не впиндюривал, я конфу сам полностью писал.

23

zalex

17.08.06

16:02

(22) Во-от… :)

24

AeDen

17.08.06

16:02

+(17) Разные пользователи пытаются обратиться к одним и тем-же данным, которые блокированы кем-то в транзакции.

25

Воин 1С

17.08.06

16:04

епрст, пользователей сколько было, столько и осталось, раньше этого предупреждения не было, а сейчас све юзеры ко мне бегут дружной толпой и жалуются

26

GenV

17.08.06

16:05

(25) Попрубуй оставить одного и проверь.

27

zalex

17.08.06

16:07

(25) Объясняю на пальцах, пока один пользователь проводит документ, другие пользователи ничего провести не могут, если у тебя где-то в проведении неэффективный алгоритм, т.е. док проводится 2-3 то все будут эти 2-3 минуты наблюдать эту надпись. Такое бывает если ты неэффективно рассчитываешь остатки например, пока доков было немного проводилось быстро, чем дальше — тем хуже. Либо вариант (21). Просто бери копию базы и тупо проводи доки по очереди, наблюдай который проводится слишком долго, или задает вопросы в процессе проведения.

28

zalex

17.08.06

16:09

+(27) Проводи по сетке, зачастую локально у тебя все летает, а по сети тормозит (если, например, запрос в цикл засунул — локально будет пару секунд проводится, а по сетке пару минут)

29

Воин 1С

17.08.06

16:12

(27) Кстати очень может быть, у меня в одном регистре висят огромные непроходящие минуса, из-за этого все доки долго черепятся

30

zalex

17.08.06

16:15

(29) Даже наверняка… Еще сделай нехитрую вешь —  поиск по всем текстам «НачатьТранзакцию», если какой-нить тяжелый отчет целиком в транзакцию сунул, те несколько минут пока он формируется все будут наблюдать эту же ошибку.

31

zalex

17.08.06

16:16

+(30) Короче с такой надписью всех блокирует кусок

НачатьТранзакцию();



ЗафиксироватьТранзакцию();

либо ОбработкаПроведения() — это такая же транзакция, только явно не написано.

32

Воин 1С

17.08.06

16:17

НачатьТранзакцию нигде нет, скорее всего обработка проведения подвешивает все..

33

zalex

17.08.06

16:19

(32) Осталось только оптимизировать, где-то многократные запросы, либо вместо итогов по движениям шаришься, чем больше движений — тем дольше проводится. Думай как сделать лучше.

34

zalex

17.08.06

16:22

Как вариант можно их в терминал загнать — проведение ускорится в разы, но код свой анализировать все же надо, где-то косяк.

http://www.mista.ru/articles1c/terminal.htm

35

Воин 1С

17.08.06

16:24

Спасиб , буду думать;)

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

Новая тема

Ответить

sahzavod

Дата регистрации: 05.09.2003
Сообщений: 2

От чего может возникнуть «Ошибка времени выполнения» при работе транзакции в конфигурации ЗиК.<br><br>Конкретнее:<br><br>Таблица: 1SJOURN Ошибка обращения к данным при транзакции, выполняемой другим пользователем.<br><br>И как востановить потеряные данные?<br><br>Заранее спасибо :)

Кот, который гуляет сам по себе

Дата регистрации: 29.10.2001
Сообщений: 882

Возникновение такой ошибки как правило связано с перегруженностью<br><br>сети. Эта ошибка происходит в том случае, когда программа<br><br>в течение продолжительного периода времени пытается захватить<br><br>некоторый файл (на очень непродолжительное время), а у нее не<br><br>получается. После повторения попыток в течение 60 сек. возникает<br><br>такая ошибка.<br><br> Как показывает опыт, причиной практически во всех случаях<br><br>является недостаточная производительность сети или сервера.<br><br>В частности такая ситуация имеет место быть при использовании<br><br>невыделенных или сильно нагруженных другими задачами серверов<br><br>со стороны значительного числа клиентов.<br><br>

vela

Дата регистрации: 18.08.2003
Сообщений: 20

Если дело в этом, то можно попробовать увеличить время ожидания захвата таблиц Базы Данных, к примеру до 90 сек. От многого уберегает, может и здесь поможет.

qwer007.070

Дата регистрации: 21.08.2007
Сообщений: 1

Как можно устранить ошибку при транзакций?

Alexandr VA

Дата регистрации: 07.01.2007
Сообщений: 1666

> Как можно устранить ошибку при транзакций? <br>Способов много, пробуйте:<br>Увеличить время ожидания захвата таблиц. <br>Сжать ДБФные таблицы, выполнить дефрагментацию диска с базами.<br>Повысить производительность сервера и сети.<br>Очистить журнал регистрации (сначала сархивируйте)<br>Перейти в терминалы<br>Перейти на SQL <br><br>

Татьянаааа

Дата регистрации: 07.08.2007
Сообщений: 86

Меню СЕРВИС -> ПАРАМЕТРЫ -> (Закладка ОБЩИЕ) Время ожидания захвата таблицы поставьте 40-60

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

Читают тему:

Содержание:

1.       Причина ошибки в 1С Предприятие 8.3

2.       Почему ошибку «В данной транзакции уже происходили ошибки» надо устранить

3.       Как устранить ошибку в программе 1С Предприятие 8

Довольно часто пользователи программы 1С Предприятие 8 сталкиваются с ошибкой «В данной транзакции уже происходили ошибки».

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

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

Документ не записывается, а понять, в чем причина невозможно, т.к. текст сообщения об ошибке ни чего конкретного не сообщает.

Давайте разберемся в чем причина.  

1.    Причина ошибки в 1С Предприятие 8.3

С технической точки зрения эта ошибка в 1С:Предприятие 8.3 возникает в транзакции в момент первого обращения к базе данных после обработки исключительной ситуации операторами (Попытка-Исключение).

Ниже на рисунке продемонстрирован пример, когда при записи объекта «Объект_1» вызывается исключительная ситуация, при этом ошибка возникает в строке «Ссылка_2.Наименование», т.к. осуществляется запрос к базе данных в объектной модели данных. И не важно, запись это или чтение.

Возникновение ошибки в 1С Предприятие 8.3 при записи объекта

Возникновение ошибки в 1С Предприятие 8.3 при записи объекта

Причем в попытке-исключении обрабатываться операция, которая также выполняется в транзакции. Чаще всего это сочетание явных и неявных транзакций, т.е. транзакций, вызванных оператором НачатьТранзакцию явно и транзакций, вызванных платформой неявно (например, при записи объекта).

Как известно, система 1С:Предприятие 8.3 не поддерживает вложенных транзакций, но допускает организацию вложенной конструкции нескольких транзакций. В нашем примере явный вызов транзакции оператором НачатьТранзакцию – транзакция 1 уровня, а неявная транзакция записи – транзакция 2 уровня и т.д. Возникновение ошибки на нижних уровнях запрещает успешное завершение транзакции 1 уровня. Другими словами, откатывается все «дерево транзакций».

В чем же здесь проблема?  

2.    Почему ошибку «В данной транзакции уже происходили ошибки» надо устранить

Во-первых, пользователь никогда не поймет в чем причина, т.к. формулировка сообщения об ошибке для него не информативна.

Во-вторых, воспроизведение ошибки и ее отладка администратором тоже будет не простым занятием. Дело в том, что ошибка возникает в момент первого обращения к базе данных, т.е. в журнале регистрации будет зафиксирована именно эта строка. Хотя сама причина этой ошибки находиться в коде на самом нижнем уровне. В нашем примере «Объект_1» может содержать различные проверки перед записью, «завернутые» в конструкцию «Попытка-Исключение», которые, в свою очередь, могут также иметь глубокую иерархию вызовов процедур и функций. Попробуй разберись.

В-третьих, суть этой ошибки – некорректный код. А если быть более точным – несоблюдение требований к написанию кода с использованием транзакций.

Как решить эту проблему в 1С:Предприятие?  

3.    Как устранить ошибку в программе 1С Предприятие 8

Основным требованием к написанию кода с использованием транзакций, непосредственно связанным с ошибкой «В данной транзакции уже происходили ошибки» в 1С:Предприятие, являются правила использования обработки исключения:

1. Метод НачатьТранзакцию должен находиться за пределами блока Попытка-Исключение;

2. Все действия, выполняемые после вызова метода НачатьТранзакцию, должны находиться в одном блоке Попытка, в том числе чтение, блокировка и обработка данных;

3. Метод ЗафиксироватьТранзакцию должен идти последним в блоке Попытка перед оператором Исключение;

4. В блоке Исключение нужно сначала вызвать метод ОтменитьТранзакцию, а затем выполнять другие действия;

5. При использовании вложенных транзакций в конце блока Исключение рекомендуется добавить оператор ВызватьИсключение. Это позволит перенаправить исключение выше по стеку. В этом случае в журнале регистрации мы получим именно ту строку, которая привела к ошибке;

6. В блоке исключения рекомендуется сделать запись об ошибке средствами встроенного языка.

Общая схема во вложенной транзакции:

Схема вложенной транзакции в системе 1С:Предприятие 8.3

Пример:

Пример вложенной транзакции для решения ошибки «В данной транзакции уже происходили ошибки»

Пример вложенной транзакции для решения ошибки «В данной транзакции уже происходили ошибки»

Не следует использовать метод НачатьТранзакцию внутри неявной транзакции, вызванной платформой. В этом нет никакого смысла. Не стоит также «оборачивать» в явную транзакцию операцию записи коллекции объектов, которые не требуют согласованной записи. Если в блоке исключения, вложенной транзакции не используется оператор ВызватьИсключение, а используется, например, сообщение или запись в журнал регистрации, то нужно избегать явного или неявного обращения к базе данных после обработки исключения в конфигурациях 1С Предприятие 8.

Специалист компании «Кодерлайн»

Игорь Торба

Привет.
Имеется база (1.5 Гб, ДБФ, в день забивают около 1200 документов), находится на сервере (Ксеон 2-х процессорный по 4 ядра, 6 Гб ОЗУ,

Рейд массив). База более менне работает при 5 пользователях, которые усердно забиват заявки, накладные и прочие документы. Когда

начинают входить еще пользователи, то база начинает ТОРМОЗИТЬ, и некоторые пользователи начинают ВЫЛИТАТЬ с документов (при

открытии, проведении и т.д.). В журнале регистраций пишется, пример:

УстановитьНовыйНомер(«А-«); : {Документ.СчетФактураВыданный.Форма.Модуль(449)}: Таблица: 1SJOURN Ошибка обращения к данным при

транзакции, выполняемой другим пользователем

притом все работаю со своими документами.
НО НО НО, если в данной ИБ работают скажем 5 пользователей, и пару человек заходят в другие ИБ (не большие), начинаются такие же

глюки.

Пробовал переводить на SQL, знаю, что она не кретична к пользователям, НО раз в неделю делается восстановление последовательности,

на SQL она делается в 2 раза дольше, и за выходные обработка может не успеть выполниться.

Вопрос: что делать???
может попробовать не проводить восстановление последовательности, а сделать перепроводку документов, при это сделать оптимизацию

при проведении (основные тормоза при проведении документа — расчет временных итогов) — использовать ТЗ или ДБФ файл для хранения

итогово (увеличение производительности при массовом проведении в РАЗЫ)???

Понравилась статья? Поделить с друзьями:

Интересное по теме:

  • 1sbkttl dbf код 4 невосстановимая ошибка
  • 1с значениеизфайла ошибка преобразования
  • 1с зарегистрированные ошибки платформы
  • 1с запрос выбрать ошибка чтения значения
  • 1с заказы ошибка soap сервера

  • Добавить комментарий

    ;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: