Воин 1С
17.08.06
✎
14:46
Последние несколько дней база стала давать предупреждение:При выполенении произошла ошибка! Таблица 1SJourn Ошибка обращения к данным при транзакиции, выполняемой другим пользователем.Повторить попытку? [Да Нет].Появляется при проведении доков, выполнении отчетов. Если кто встречал такую фичу, подскажите как лечить
AeDen
17.08.06
✎
14:47
Ошибка обращения к данным при транзакиции, выполняемой другим пользователем.
zbv
17.08.06
✎
14:47
В поиске смотрел?
Воин 1С
17.08.06
✎
14:49
(1) Спасибо а то я думаю и что это значит…
Воин 1С
17.08.06
✎
14:49
(2) Не пока ща гляну
Воин 1С
17.08.06
✎
14:51
В поиске ничего подходящего нету;(
AeDen
17.08.06
✎
14:51
(3) Ну, думай дальше. Кто мешает?
Воин 1С
17.08.06
✎
14:59
Ну что, неужели никто не встречал ничего похожего?
GenV
17.08.06
✎
15:03
(5) Плохо смотрел. Ищи: Ошибка обращения к данным при транзакции 1С
Воин 1С
17.08.06
✎
15:07
(8) Спасиб, я глянул. Насколько понял, коллизия призаписи доков в табицу, используемую для УРБД. Но, почему она стала появляться? Раньше ведь не было..
GenV
17.08.06
✎
15:19
(9) См.(1) Ошибка <одновременного> обращения к <различным> данным при транзакиции, выполняемой другим пользователем. Темерь понятно?
ламеры спрашивают
17.08.06
✎
15:48
(10) Почему «к <различным>». Наверное хотел сказать «к одним и тем же»?
Воин 1С
17.08.06
✎
15:52
(10)Нет, поясни плиз
GenV
17.08.06
✎
15:52
(11) различным — значит не только к таблицам УРБД 
Воин 1С
17.08.06
✎
15:54
(13) В 1SJORn хранятся записи используемые урбд.Непонятно почему это появилось и что с ним делать;)
GenV
17.08.06
✎
15:56
(14) … Да тех, кто в бронепоезде: несколько пользователей хотят одновременно получить одни данные. Возникает транзакция (блокировка данных). Теперь-то понятно?
ламеры спрашивают
17.08.06
✎
15:57
(13) ОК
AeDen
17.08.06
✎
15:57
(15) Rnj-nj gsnftncz ljcnexfnmcz lj lfyys[? rjnjhst ,kjrbhjdfys nhfypfrwbtq/
Воин 1С
17.08.06
✎
15:57
От тех, кто в бронепоезде: Почему этой ошибки раньше не было?
Воин 1С
17.08.06
✎
15:58
Сейчас она постоянно вылезает на экран
GenV
17.08.06
✎
15:59
(19) Сейчас только один пользователь или кто-то что-то проводит?
zalex
17.08.06
✎
15:59
(14) В 1SJORN хранятся журналы, все.
(18) Наиболее вероятно, что в одной из обработок проведения ты впендюрил Вопрос() или Предупреждение(). Обработка это транзакция, и она не закончится, пока пользователь не закроет окошко вызванное одной из этих функций. Пока один пользователь не закончит транзакцию, никто другой не может ее начать.
Воин 1С
17.08.06
✎
16:01
(21) Ничего я не впиндюривал, я конфу сам полностью писал.
zalex
17.08.06
✎
16:02
(22) Во-от… 
AeDen
17.08.06
✎
16:02
+(17) Разные пользователи пытаются обратиться к одним и тем-же данным, которые блокированы кем-то в транзакции.
Воин 1С
17.08.06
✎
16:04
епрст, пользователей сколько было, столько и осталось, раньше этого предупреждения не было, а сейчас све юзеры ко мне бегут дружной толпой и жалуются
GenV
17.08.06
✎
16:05
(25) Попрубуй оставить одного и проверь.
zalex
17.08.06
✎
16:07
(25) Объясняю на пальцах, пока один пользователь проводит документ, другие пользователи ничего провести не могут, если у тебя где-то в проведении неэффективный алгоритм, т.е. док проводится 2-3 то все будут эти 2-3 минуты наблюдать эту надпись. Такое бывает если ты неэффективно рассчитываешь остатки например, пока доков было немного проводилось быстро, чем дальше — тем хуже. Либо вариант (21). Просто бери копию базы и тупо проводи доки по очереди, наблюдай который проводится слишком долго, или задает вопросы в процессе проведения.
zalex
17.08.06
✎
16:09
+(27) Проводи по сетке, зачастую локально у тебя все летает, а по сети тормозит (если, например, запрос в цикл засунул — локально будет пару секунд проводится, а по сетке пару минут)
Воин 1С
17.08.06
✎
16:12
(27) Кстати очень может быть, у меня в одном регистре висят огромные непроходящие минуса, из-за этого все доки долго черепятся
zalex
17.08.06
✎
16:15
(29) Даже наверняка… Еще сделай нехитрую вешь — поиск по всем текстам «НачатьТранзакцию», если какой-нить тяжелый отчет целиком в транзакцию сунул, те несколько минут пока он формируется все будут наблюдать эту же ошибку.
zalex
17.08.06
✎
16:16
+(30) Короче с такой надписью всех блокирует кусок
НачатьТранзакцию();
…
ЗафиксироватьТранзакцию();
либо ОбработкаПроведения() — это такая же транзакция, только явно не написано.
Воин 1С
17.08.06
✎
16:17
НачатьТранзакцию нигде нет, скорее всего обработка проведения подвешивает все..
zalex
17.08.06
✎
16:19
(32) Осталось только оптимизировать, где-то многократные запросы, либо вместо итогов по движениям шаришься, чем больше движений — тем дольше проводится. Думай как сделать лучше.
zalex
17.08.06
✎
16:22
Как вариант можно их в терминал загнать — проведение ускорится в разы, но код свой анализировать все же надо, где-то косяк.
http://www.mista.ru/articles1c/terminal.htm
Воин 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 уровня, а неявная транзакция записи – транзакция 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 раза дольше, и за выходные обработка может не успеть выполниться.
Вопрос: что делать???
может попробовать не проводить восстановление последовательности, а сделать перепроводку документов, при это сделать оптимизацию
при проведении (основные тормоза при проведении документа — расчет временных итогов) — использовать ТЗ или ДБФ файл для хранения
итогово (увеличение производительности при массовом проведении в РАЗЫ)???
