[УТ10 Файловая] Конфликт блокировок, как найти виновника?

1. kuzyara 1914 02.08.17 05:19 Сейчас в теме
Есть 10 пользователей в переделаной УТ 10.3, 8.2.19.130, файловая, сервер терминалов(rdp).

Иногда на кассах при пробитии чека вылазит ошибка:
Конфликт блокировок при выполнении транзакции:
Не удалось заблокировать таблицу '_DOCUMENT158'
по причине:
Не удалось заблокировать таблицу '_DOCUMENT158'


Получается если один кассир закрывает смену - остальные не могут работать. Согласен, что нужно переходить на ms sql. Но.

Как узнать кто именно заблокировал таблицу? Кого выгонять?
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. Cooler 22 02.08.17 09:00 Сейчас в теме
(1)
Как узнать кто именно заблокировал таблицу? Кого выгонять?
Элементарно! Того, кто закрывает смену. :)

Вот только вряд ли это удастся сделать, пока у него не завершится транзакция.

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

Или даже называть его именем пользователя, выделяя расширением, например, "Иванов.flg". А чтобы не было разночтений, перед созданием проверять его наличие и если уже есть (остался с прошлого раза), то удалять.

А в конце обработки - удалять файлик по-любому.

Правда, польза от этой затеи сомнительна, см. выше.
8. alxarz 31 05.08.17 09:52 Сейчас в теме
(1) Администрирование - параметры инф базы - время ожидания блокировки данных - поставьте сколько уходит на закрытие смены обычно. Но если хотите чтобы в это время всё же кассиры продолжали работать - меняйте логику работы.
2. ben19791010 02.08.17 06:31 Сейчас в теме
в антивир исключение добавьте, а то ну есть конечно верятность, что кроме кассира кто то прям лазиет в доках кассовых, но имхо она не велика...
3. ben19791010 02.08.17 06:38 Сейчас в теме
Как узнать кто именно заблокировал таблицу? Кого выгонять?
в УТ точно не скажу, но в БП можно включить версионирование документа например...
либо писать в своем модуле в ЖР на регистрацию изменения объектов,реквизитов и т.п.
4. dmt 66 02.08.17 07:42 Сейчас в теме
(0) А зачем кого-то выгонять? Кассир выполняет свои прямые обязанности.

Наверное дело в другом, как сделать так, что бы проведение ОРП не мешало другим?
А тут уже может помочь программист изменив логику закрытия кассовой смены.
Например, кассир только как-то помечает чеки, и создает ОРП.
А ночной робот удаляет чеки и проводит ОРП.
6. timeforlive 15 03.08.17 07:44 Сейчас в теме
Идите следующим путем - добавьте в УТ подписку на событие, отдельный общий модуль и уже в транзации делайте проверку, при блокировке (или превышении ожидания блокировки) отмена транзакции.

Посмотрите как в какой момент делаются движения по закрытию, чтобы до этого события сделать проверку на блокировку и откатить транзакцию.
7. alex.msk 34 03.08.17 09:06 Сейчас в теме
В описании ошибки есть упоминание пользователя.

Попытка
	Заблокировать();
Исключение
	Сообщить(ОписаниеОшибки());
	//Запретить редактировать.
КонецПопытки;


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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот