Ошибка при расчёте зарплаты: Конфликт блокировок при выполнении транзакции:
Здравствуйте.
исходные данные:
1С 8.2 ЗКБУ
база была сформирована из 1с ЗиК 7.7
конфигурация типовая
пробовались разные типы баз - файловая, терминал и sql (windows server 2008. sql server 2008.)
размер базы - 800Мб
платформа и конфигурация обновляются регулярно.
С базой работают 2 расчётчика
Проблема в следующем:
При одновременном расчёте заработной платы разным сотрудникам, у одного из расчётчиков(рандомно) возникает следующая ошибка:
Ошибка:
{ОбщийМодуль.ПроведениеРасчетовПереопределяемый.Модуль(4887)}: Ошибка при вызове метода контекста (Записать)
НаборЗаписейРегистра.Записать(Истина, ТолькоЗапись, Истина, Ложь);
по причине:
Конфликт блокировок при выполнении транзакции:
Microsoft SQL Server Native Client 10.0: Превышено время ожидания запроса на блокировку.
HRESULT=80040E31, SQLSrvr: SQLSTATE=HYT00, state=2D, Severity=10, native=1222, line=1
В конфигураторе ссылается на следующую строку:
// записываем набор перед расчетом каждой категории начислений
Если ИмяРегистра = "ОсновныеНачисленияРаботниковОрганизаций" Тогда
НаборЗаписейРегистра.Записать(Истина, ТолькоЗапись, Истина, Ложь);
Иначе
НаборЗаписейРегистра.Записать(Истина, ТолькоЗапись);
КонецЕсли;
ТолькоЗапись = Истина;
Данная проблема возникает не только у нас. Фирма, которая осуществляет сопровождение сначала причиной называло медленный компьютер на котором стоит база (файловый вариант) или линии ЛВС(исключили эту причину сразу), базу перенесли на терминальный сервер - та же ошибка, на SQL то же самое.
ЕСТЬ ли решение этой проблеме?
исходные данные:
1С 8.2 ЗКБУ
база была сформирована из 1с ЗиК 7.7
конфигурация типовая
пробовались разные типы баз - файловая, терминал и sql (windows server 2008. sql server 2008.)
размер базы - 800Мб
платформа и конфигурация обновляются регулярно.
С базой работают 2 расчётчика
Проблема в следующем:
При одновременном расчёте заработной платы разным сотрудникам, у одного из расчётчиков(рандомно) возникает следующая ошибка:
Ошибка:
{ОбщийМодуль.ПроведениеРасчетовПереопределяемый.Модуль(4887)}: Ошибка при вызове метода контекста (Записать)
НаборЗаписейРегистра.Записать(Истина, ТолькоЗапись, Истина, Ложь);
по причине:
Конфликт блокировок при выполнении транзакции:
Microsoft SQL Server Native Client 10.0: Превышено время ожидания запроса на блокировку.
HRESULT=80040E31, SQLSrvr: SQLSTATE=HYT00, state=2D, Severity=10, native=1222, line=1
В конфигураторе ссылается на следующую строку:
// записываем набор перед расчетом каждой категории начислений
Если ИмяРегистра = "ОсновныеНачисленияРаботниковОрганизаций" Тогда
НаборЗаписейРегистра.Записать(Истина, ТолькоЗапись, Истина, Ложь);
Иначе
НаборЗаписейРегистра.Записать(Истина, ТолькоЗапись);
КонецЕсли;
ТолькоЗапись = Истина;
Данная проблема возникает не только у нас. Фирма, которая осуществляет сопровождение сначала причиной называло медленный компьютер на котором стоит база (файловый вариант) или линии ЛВС(исключили эту причину сразу), базу перенесли на терминальный сервер - та же ошибка, на SQL то же самое.
ЕСТЬ ли решение этой проблеме?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Nik4Ever, судя по всему ошибка возникает из-за занятости одной из таблиц каким тользователем либо фоновым заданием.
ПОглядите какие опрерации выполняются при этом в базе. Можно скачать в интеренет или на диске ИТС обработку, которая показывает регламентные задания.
Очень может быть что в этот момент выполняется регламентное задание.
Так же можно для эксперимента зайти в консоль кластера серверов 1С Предприятия, и в свойстве базы запретить регламентные задания.
ПОглядите какие опрерации выполняются при этом в базе. Можно скачать в интеренет или на диске ИТС обработку, которая показывает регламентные задания.
Очень может быть что в этот момент выполняется регламентное задание.
Так же можно для эксперимента зайти в консоль кластера серверов 1С Предприятия, и в свойстве базы запретить регламентные задания.
(2) регламентные задания в этот момент не выполняются.
(3) файловая база стоит на рабочем ПК (Dual-Core E5200, (2.50/800/2Mb); 2GB DDRII-800; Seagate (320 Gb/ 7200/8Mb/ SATA ).
терминальный и sql сервер ещё на более древнем компе(P4-3Ггц/1 гб ОЗУ/ 80гб винт)
(5) количество секунд ожидания блокировки в Конфигураторе я проставил 90 сек и блокировка возникает намного реже на SQL сервере, в файловом варианте на сервере терминала (90сек не помогли) блокировка так же возникает.
Вообще пока один расчетчик проводит начисление зарплаты, второй не сможет этого сделать... А насколько долго он не сможет этого сделать, уже зависит от сервера.
логично. на днях пробую поставить на виртуалку sql на более мощный комп и проверим.
Многие люди пишут, что проблема апгредом железа решается, но временно, до определённого роста базы.
P.S. почему в 1с у типовой конфы не реализован хотя бы принцип того, что если 1 пользователь рассчитывает кого либо и таблица естественно блокируется, 2 пользователь при попытке записи в это же время, в ту же таблицу не встаёт, допустим в ожидание-очередь? Или это реализовывается только "оптимизацией кода"?
(3) файловая база стоит на рабочем ПК (Dual-Core E5200, (2.50/800/2Mb); 2GB DDRII-800; Seagate (320 Gb/ 7200/8Mb/ SATA ).
терминальный и sql сервер ещё на более древнем компе(P4-3Ггц/1 гб ОЗУ/ 80гб винт)
(5) количество секунд ожидания блокировки в Конфигураторе я проставил 90 сек и блокировка возникает намного реже на SQL сервере, в файловом варианте на сервере терминала (90сек не помогли) блокировка так же возникает.
Вообще пока один расчетчик проводит начисление зарплаты, второй не сможет этого сделать... А насколько долго он не сможет этого сделать, уже зависит от сервера.
логично. на днях пробую поставить на виртуалку sql на более мощный комп и проверим.
Многие люди пишут, что проблема апгредом железа решается, но временно, до определённого роста базы.
P.S. почему в 1с у типовой конфы не реализован хотя бы принцип того, что если 1 пользователь рассчитывает кого либо и таблица естественно блокируется, 2 пользователь при попытке записи в это же время, в ту же таблицу не встаёт, допустим в ожидание-очередь? Или это реализовывается только "оптимизацией кода"?
(1) Nik4Ever, а сколько у Вас стоит количество секунд ожидания блокировки в Конфигураторе-Администрирование-Параметры информационной базы? Может увеличить?
Вообще пока один расчетчик проводит начисление зарплаты, второй не сможет этого сделать... А насколько долго он не сможет этого сделать, уже зависит от сервера.
Вообще пока один расчетчик проводит начисление зарплаты, второй не сможет этого сделать... А насколько долго он не сможет этого сделать, уже зависит от сервера.
(7) какое железо у вас стоит?
какая сеть 100/1000Мбит?
одновременно 2-3 человека рассчётчитывать ЗП сотрудникам 1 подразделения пробовали?
P.S. у нас блокировка возникает, даже если считаешь зп сотрудникам разных подразделений, спотыкается на {Документ.НачислениеЗарплатыРаботникамОрганизаций.МодульОбъекта(1233)}: Ошибка при вызове метода контекста (Записать). в sql немного реже блокировки стали из за изменения в конфигураторе режима блокировок на управляемые и увеличения времени ожидания блокировки с 20 сек до 90 сек.
какая сеть 100/1000Мбит?
одновременно 2-3 человека рассчётчитывать ЗП сотрудникам 1 подразделения пробовали?
P.S. у нас блокировка возникает, даже если считаешь зп сотрудникам разных подразделений, спотыкается на {Документ.НачислениеЗарплатыРаботникамОрганизаций.МодульОбъекта(1233)}: Ошибка при вызове метода контекста (Записать). в sql немного реже блокировки стали из за изменения в конфигураторе режима блокировок на управляемые и увеличения времени ожидания блокировки с 20 сек до 90 сек.
Железо Xenon E5607 X2 ОЗУ 32Гб. RAID SAS
Но на этом компе все: Терминал+Сервер 1С+SQl.
Сеть в данном случае значения не имеет.
Одновременно по одному подразделению не считали.
У нас многофирменный учет, каждый бухгалтер свои учреждения считает.
Но все в одной ИБ.
Но на этом компе все: Терминал+Сервер 1С+SQl.
Сеть в данном случае значения не имеет.
Одновременно по одному подразделению не считали.
У нас многофирменный учет, каждый бухгалтер свои учреждения считает.
Но все в одной ИБ.
короче если вкратце - ничего тут не сделать, косяк майкрософта
нельзя апдейтить таблицу с ноулок- слетит индекс
соответственно ждать пока майкрософт исправит ошибку, а 1С после этого сделает обновление платформы
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот