Конфликт блокировок при выполнении транзакции 1С 8.3: как исправить
Иногда при работе в 1С может возникнуть ошибка «Конфликт блокировок при выполнении транзакции: превышено максимальное время ожидания предоставления блокировки». Рассмотрим как исправить данную ошибку.
Конфликт блокировок при выполнении транзакции в 1С: причины и пути их устранения
Причина 1. Одновременная работа пользователей с большим объемом данных
При одновременной работе нескольких пользователей с одной и той же информационной базой могут возникнуть ситуации, когда несколько пользователей пытаются внести в данные какие-то изменения. И в таких случаях, если не предусмотреть возможности подключения специальных механизмов системы, могут возникнуть проблемы с информационной базой, ее целостностью. При обращении нескольких сеансов к одним и тем же данным одновременно используются механизмы блокировок и транзакций.
Блокировка — это информация о том, что данный объект занят пользователем для выполнения какого-то действия. Смысл блокировки в запрете определенных действий над объектом на ограниченное время. Благодаря этим запретам сохраняется целостность и непротиворечивость информационной базы, предсказуемость работы пользователей.
Механизм объектных блокировок — обеспечивает конкурентный доступ пользователей к данным 1С, как правило, это работа пользователей в формах — создание новых объектов, их редактирование, удаление и др.
Для согласованного изменения данных в 1С применяется механизм транзакций, а для конкурентного доступа к данным — механизм транзакционных блокировок. Если транзакции нужно получить доступ к элементу, то она блокирует элемент и продолжает удерживать блокировку элемента до тех пор, пока не освободит элемент. Это происходит либо в ходе выполнения транзакции, либо по ее окончании как успешном, так и не успешном.
Поэтому, при одновременном чтении и изменении одних и тех же данных могут возникнуть проблемы одновременного доступа, о чем программа 1С и сообщает в ошибке. Это временная ошибка и когда другой пользователь завершит работу с этим объектом, ошибка не будет появляться.
Причина 2. Зависшие блокировки в 1С
Иногда возникают такие ситуации, что пользователь уже давно закрыл документ, вышел из программы, а его сеанс по-прежнему остается в системе. Т.е. какой-то сеанс поставил блокировку и не убрал ее. Такие ситуации чаще встречаются при использовании сетевых ключей защиты.
Оптимальный вариант решения проблемы — это найти и завершить сеанс, заблокировавший необходимые данные. В этом нам помочь может раздел Администрирование — Обслуживание , где можем посмотреть активных пользователей и при необходимости заблокировать их работу, т.е. отключить.
При большом количестве компьютеров, проблему можно решить завершив подобный сеанс через консоль администратора. С ее помощью можно управлять подключенными сеансами определенной информационной базы, управлять блокировками. В консоли администрирования можно посмотреть такие зависшие сеансы и удалить их. Эта утилита входит в состав 1С Предприятия.
Запустить ее можно из папки common — 1CV8Servers.
Причина 3. Ошибка в конфигурации
Конфигурации, разработанные фирмой 1С, учитывают все рекомендации по улучшению производительности. Но в программах сторонних разработчиков могут быть ошибки производительности в коде конфигурации, порождающие избыточные блокировки. Это является самой распространенной причиной ошибок конфликта блокировок, которые могут нарушить работу всех пользователей, постоянно блокируя нормальную работу в системе.
Если такого рода ошибки появляются часто, то разобравшись в причине, из-за которой возникает конфликт блокировок в 1С, необходимо их ликвидировать — определить уязвимые места в системе, оптимизировать конфигурацию, а также работу пользователей.
- Недостаточно памяти 1С: как исправить
- Неверный формат хранилища данных 1С 8.3: как исправить
- Ошибка формата потока 1С 8.3: как исправить
- Ошибка СУБД: файл базы данных поврежден в 1С 8.3
- Не найден файл внешней компоненты в 1С 8.3: как исправить
Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Конфликт блокировок при выполнении транзакции в 1С 8.3 и 8.2
Не редко при работе в 1С возникает ошибка «Конфликт блокировок при выполнении транзакций: Превышено максимальное время ожидания предоставления блокировки». Суть ее кроется в том, что несколько сеансов пытаются одновременно выполнить похожие действия, затрагивая один и тот же ресурс. Сегодня мы разберемся как исправить данную ошибку
Причины и способы решения проблемы
Большое количество выполняемых операций
Первым делом при поиске причин следует уточнить, сколько же одновременно работающих пользователей находится в той информационной базе, в которой выдается подобная ошибка. Как мы знаем, максимальное их количество может быть довольно большим. Это и тысяча, и пять тысяч.
Механизм блокировок и транзакций описан в руководстве разработчика. Их используют при обращении нескольких сеансов к одним и тем же данным одновременно. Логично, что одни и те же данные не могут изменяться разными пользователями в один и тот же момент.
Так же следует проверить, не запущено ли у кого-то из пользователей обработки по массовому изменению данных. Это может быть как групповое проведение документов, закрытие месяца и тому подобное. В таком случае после окончания работы обработки ошибка пропадет сама по себе.
Регламентные задания
Не редки случаи, когда причина ошибки кроется в регламентном задании, которое обрабатывает большое количеств данных. Рекомендуется подобные вещи делать ночью. Задайте расписание выполнение таких регламентных заданий во внерабочее время.
Таким образом, и пользователи будут работать в стабильной системе, и сами регламентные задания будут завершаться успешно, так как снизится вероятность возникновения конфликтов с пользовательскими сеансами.
«Зависшие сеансы»
Проблема «зависших сеансов» пользователей знакома практически каждому, кто сталкивался с обслуживанием 1С. Пользователь мог уже давно выйти из программы, или закрыть какой-либо документ, но его сеанс по-прежнему остается в системе. Проблема чаще всего единичная и достаточно завершить подобный сеанс через консоль администратора. Такие же проблемы могут возникнуть и с фоновыми заданиями.
По многочисленным комментариям на просторах интернета подобные ситуации чаще встречаются при использовании сетевых ключей защиты. Если ситуация с «зависающими сеансами» повторяется систематически, это причина произвести тщательную проверку и обслуживание системы и серверов (если база клиент-серверная).
Ошибки при написании конфигурации
Все типовые конфигурации разработаны квалифицированными специалистами и экспертами. Каждая система тщательно тестируется и оптимизируется для более быстрой и корректной работы в ней.
Получите понятные самоучители по 1С бесплатно:
В связи с этим причина ошибки может крыться в неоптимальном коде, написанном сторонним разработчиком. Это может быть «тяжелый» запрос, который будет блокировать данные на длительный промежуток времени. Так же нередки случаи построения алгоритмов с низкой производительностью и нарушением логики.
Большая вероятность, что конфликт блокировки возник именно из-за ошибок разработчика, если он возник после обновления программы. Для проверки можно просто «откатить» доработки, либо произвести рефакторинг кода.
Конфликт блокировок при выполнении транзакции 1С 8.3 как исправить?
1С – крайне сложная система, имеющая в распоряжении большое количество самых разных настроек, нюансов и особенностей функционирования. И многие знают, что сложность системы прямо пропорциональна количеству всевозможных ошибок и проблем, которые должны решать программисты, техники, кассиры, бухгалтеры и иные должностные лица, чья работа связана с 1С.
Хорошо, если в организации, использующей систему 1С, есть собственный IT-отдел, ведь в таком случае программисту достаточно лишь перейти в нужный кабинет или этаж, чтобы исправить ситуацию. А если его нет, то как решить проблему с, к примеру, конфликтом блокировок при совершении транзакции?
Из-за чего появляется конфликт
Помимо того, что сложность системы прямо пропорциональна количеству ошибок, количество и сложность ошибок напрямую зависит от того, сколько именно пользователей работает в системе. Чем чаще и больше работников юридического лица обращается к одному на всех серверу 1С по работе, тем больше система должна выполнить операций, что и влияет на частоту и сложность ошибок.
Если дело касается серверной 1С версии в большой организации, в ней могут одновременно работать несколько десятков или сотен человек, причем иногда могут быть ситуации, при которых двое или большее количество работников обращаются к одному и тому же документу. К примеру, один сотрудник начисляет работникам зарплату, второй высчитывает налоги, третий занимается расчетом больничного. Для правильности подобных вычислений система 1С позволяет работать с документами (или одним документом) в разное время даже при одновременном выполнении операций.
Если говорить проще, то в рамках рассматриваемой ситуации первый работник начисляет зарплату и после этого проводит документ. Пока система 1С не определит это, документ, с которым работает следующий сотрудник (это тот, который занимается высчитыванием налогов), не будет проводиться внутри системы и будет стоять в очереди (сама система при этом временного его заблокирует). И третий работник, который выплачивает больничные, также будет находиться в очереди.
В том случае, если таких очередей и связанных с ними блокировок очень много, время блокировки каждого последующего документа будет увеличиваться до совсем астрономических показателей. И как раз в таком случае система 1С будет выдавать ошибку конфликта блокировок при совершении транзакции. Однако появление такого конфликта в системе может быть связано и с другими причинами.
Конфликт блокировок при проведении транзакции
Распространенные причины конфликта блокировки в 1С
Среди основных причин можно выделить:
- Слишком большое количество одновременного выполняемых операций. Помимо основной причины, описанной выше, проблема может касаться и запущенного у кого-то из работников процесса обработки данных по массовому изменению. Может быть, кто-то запустил групповое проведение документов, закрытие месяца и иные процедуры. Если причина кроется в этом, то проблема разрешится сама по себе – сразу после того, как групповое проведение данных закончится.
- Регламентные задания. Также частой причиной появления конфликта является появление регламентное задание, в рамках которого обрабатывается очень много самых разных информационных данных. Для того, чтобы подобных проблем в течение рабочего дня не было, стоит выполнять регламентные задания ночью.
- Зависший сеанс. Не менее распространенная проблема «зависших сеансов» пользователей известна практически любой компании, работающей в 1С. Суть ее кроется в том, что пользователь мог уже давным-давно выйти из программы или же завершить работу с каким-либо документом, но сама система все равно не отключает его и думает, что он все еще находится внутри системы. Подобная проблема носит единичный характер и может быть разрешена с помощью администраторской консоли. Также та же проблема может появится при выполнении фоновых заданий. Еще, согласно комментариям, ситуации с зависшим сеансом встречаются при применении сетевых защитных ключей. Если «зависание» повторяется время от времени, необходимо проверить обслуживание серверов и системы.
Перечисленные причины и основные методы их решения являются самыми распространенными.
Неверно написанная конфигурация
Различные типовые конфигурации создаются экспертами и специалистами с соответствующей классификацией. При этом каждая созданная система тестируется и оптимизируется для достижения максимально быстрой и корректной работы.
Но нельзя отменять и человеческий фактор, поэтому иногда проблема может заключаться в неправильном, неоптимизированном или просто забагованном коде, в особенности если его написал неопытный или сторонний разработчик.
Ошибка может крыться в тяжелом запросе, который при активации будет «тормозить» или вовсе блокировать данные на некоторое время. Также частым являются случаи формирования алгоритмов с недостаточной производительностью или с нарушением компьютерной логики.
Один из факторов того, что проблема кроется именно в неправильном коде – это то, что программа перестала работать как надо не спонтанно, а после одного из обновлений. В качестве средства проверки в таком случае можно откатить версию или заняться рефакторингом кода.
Ручное управление блокировками
При желании пользователь (лучше, чтобы это был администратор) может отключить в системе 1С функцию включения блокировок рабочих документов даже в том случае, если этими документами пользуется одновременно 2 или большее количество сотрудников. В таком случае проблем, связанных с конфликтом блокировок, не будет.
Однако не стоит торопиться и сразу отключать функцию блокирования, ведь существует и активна данная функция не просто так. Она существует и активна по умолчанию для того, чтобы программа успевала выполнять вычисления любых документов и гарантировала корректный результат этих вычислений. Поэтому функцию блокирования стоит отключать лишь в том случае, если сотрудники, работающие с финансовой документацией, подойдут к работе ответственно и будут осознавать возможные риски появления неправильных вычислений.
Методика ручного отключения блокировки подойдет в том случае, если обработать документ и решить проблему необходимо максимально оперативно, а вероятность того, что что-то пойдет не так, или вычисления будут неверными, снижена до минимальной. В таком случае можно, к примеру попросить всех работников, использующих 1С, временно перестать им пользоваться. А еще можно отключить их на время.
Отключение пользователей
Как и было отмечено выше, конфликт блокировки при совершении транзакции может быть вызван тем, что один и тот же документ обрабатывается несколькими пользователями. А это значит, что если отключить всех пользователей от системы или документа на некоторое время, один из пользователей сможет быстро провести документ. Правда, это может сделать только тот пользователь, у которого в 1С есть право на просмотр всех тех пользователей, которые на данный момент работают с определенным документом, а также право на завершение сеансов таких пользователей.
Однако и здесь есть риск (пускай и небольшой) того, что проблема снова появится. Появиться она может в том случае, если хотя бы один пользователь на момент его временного отключения от документа выполнял какие-либо важные операции и вычисления в финансовом документе.
Можно ли быстро разрешить конфликт блокирования
Если посмотреть на анализируемую проблему со стороны разработчика или сисадмины, стоит отметить, что всегда и на любом предприятии может произойти ситуация, при которой практически нет времени на проверку появляющейся ошибки и на поиски проблем. К примеру, если нужно «здесь и сейчас» сдать какой-нибудь отчет в бухгалтерию или подать какие-либо данные к определенному часу. В таком случае можно воспользоваться быстрым решением.
Для того, чтобы быстро разрешить конфликт, связанный с блокированием 1С, можно пойти по одному из двух путей:
- Отыскать и принудительно завершить все те сеансы (или один сеанс), из-за которого необходимые документы и данные блокируются. В маленьких организациях, где суммарное количество сотрудников, работающих с 1С, не превышает 1-2 десятков граждан, завершение сеанса является оптимальным вариантом.
- Если есть доступ к системе и ее контролю, а в самой компании работает несколько сотен человек, решение проблемы может затянуться на несколько часов или, в худшем случае, на несколько дней. В такой ситуации оптимальным вариантом будет перезагрузка аппаратного обеспечения и серверного оборудования.
Однако оба решения являются радикальными и могут помочь только при быстром решении проблему (если это необходимо), ведь при их использовании часть данных документа, из-за которого произошел конфликт, может быть утеряна. Поэтому на постоянной основе такие меры лучше не использовать. Лучше вместо этого попробовать найти первопричину появления конфликта и устранить ее.
Заключение
Конфликт блокировок – достаточно распространенная проблема при выполнении работы с 1С, в особенности если речь идет о большой компании. Существует множество способов решения проблемы – как эффективных, так и экстренных. Оптимальный и правильный вариант действий при любой проблеме с 1С – обратиться к специалисту.
Ошибка загрузки информационной базы. Конфликт блокировок при выполнении транзакции.
Столкнулся с проблемой:
После перехода на платформу 8.3.19.1723:
1) выгружаю dt-шник из файловой базы.
2) гружу его в серверную базу (MS SQL)
получаю ошибку:
Ошибка загрузки информационной базы. В информационную базу загружены не все данные
по причине:
Конфликт блокировок при выполнении транзакции:
Microsoft SQL Native Client: Lock request time out period exceeded.
HRESULT=80004005, SQLSrvr: SQLSTATE=HYT00, state=38, Severity=10, native=1222, line=1
3) гружу dt-шник в файловую базу на другой машине — все замечательно, все грузится.
Вопрос: 1) Это особенность платформы?
2) Это особенность SQL — он у нас старый — 2005.
3) Не правильно настроены параметры базы — тайминги и прочая.
При попытке запустить базу после загрузки выдает сообщение:
>> Авторизация не выполнена. Работа системы будет завершена.
Не удалось выполнить автоматическую регистрацию администратора в списке по причине:
"Значение не является значением объектного типа (Получить)".
Для ведения списка и настройки прав пользователей предназначен список Пользователи,
режим конфигурирования 1С:Предприятия для этого использовать не следует.
(3) Накатывал базу из архива (выгружен с сервера) средствами SQL — все работает.
гружу туда нужный dt — не грузится.
Дело в том, что бухи подготовили на файловой копии данные, и поступило распоряжение распространить эти данные на всех бухгалтеров.
завел на сервере новую базу и попытался загрузить туда dt-шник из файловой копии — и тут началось .
2(6)
4.3.7.1. Параметр /IBName
Параметр /IBName позволяет указать наименование запускаемой информационной базы. В этом случае программа запуска (или исполняемый файл конкретного клиента) выполнит поиск указанной информационной базы в списке информационных баз.
Если баз с указанным именем более одной, запуск будет прекращен с выдачей сообщения об ошибке.
Если база будет обнаружена, произойдет попытка запуска этой информационной базы в соответствии с параметрами и выбранной программой запуска (или исполняемым файлом конкретного клиента).
Примечание. Если в наименовании информационной базы есть кавычки, они должны быть удвоены при указании имени в параметре: База ""СтройТоргВсе"".