0
timurhv
26.08.14
✎
20:29
|
Здравствуйте,
Ситуация следующая: в одной базе ведутся данные по 12 организациям.
При расчете заработной платы у других сотрудников, которые производят расчет по другому учреждению выходят ошибки блокировки данных регистра расчета "ОсновныеНачисленияРаботниковОрганизаций".
Пример (общий модуль ЗаполнениеДокументовДополнительный.ВыполнитьАвтозаполнение):
НачатьТранзакцию();
НаборЗаписейДляПроверки.ОбменДанными.Загрузка = Истина;
НаборЗаписейДляПроверки.Записать(Истина, Ложь, Истина, Ложь);
....
НаборЗаписейДляПроверки.Очистить();
НаборЗаписейДляПроверки.Записать(Истина, Ложь, Истина, Ложь);
ЗафиксироватьТранзакцию();
После того как производится "НаборЗаписейДляПроверки.Записать", то по другим учреждениям уже не могут производить перерасчет, пока у первого не зафиксируется транзакция.
Таких мест в общих модулях и документах (начало транзакции, создание движений и последующая их очистка) - достаточно много.
Режим блокировки у конфигурации - управляемый, у документа и регистров - автоматический.
Конфигурация типовая, стоит MSSQL 2008, RLS включен - под полными правами аналогичная ситуация, платформа 8.3.5.1098, версия конфигурации 1.0.73.2.
Смотрел в сторону ЗУП и "Зарплата и кадры государственного учреждения 8" - там аналогичная ситуация с блокировками.
Пробовал установить блокировку на регистр расчета по учреждению - не срабатывает:
УчБлокировка = Новый БлокировкаДанных;
тзбБлокировка = УчБлокировка.Добавить("РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций");
тзбБлокировка.УстановитьЗначение("Организация", ДокументОбъект.Организация);
тзбБлокировка.Режим = РежимБлокировкиДанных.Исключительный;
НачатьТранзакцию();
УчБлокировка.Заблокировать();
...
Если убрать транзакции - все работает на ура.
Как можно решить ситуацию, кроме разделения базы по учреждениям и не убирая транзакции?
P.S: с блокировками сталкиваюсь впервые.
|
|