[УТ10 Файловая] Конфликт блокировок, как найти виновника?
Есть 10 пользователей в переделаной УТ 10.3, 8.2.19.130, файловая, сервер терминалов(rdp).
Иногда на кассах при пробитии чека вылазит ошибка:
Получается если один кассир закрывает смену - остальные не могут работать. Согласен, что нужно переходить на ms sql. Но.
Как узнать кто именно заблокировал таблицу? Кого выгонять?
Иногда на кассах при пробитии чека вылазит ошибка:
Конфликт блокировок при выполнении транзакции:
Не удалось заблокировать таблицу '_DOCUMENT158'
по причине:
Не удалось заблокировать таблицу '_DOCUMENT158'
Получается если один кассир закрывает смену - остальные не могут работать. Согласен, что нужно переходить на ms sql. Но.
Как узнать кто именно заблокировал таблицу? Кого выгонять?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Вот только вряд ли это удастся сделать, пока у него не завершится транзакция.
А если серьезно, то в случае конфликта блокировок именно при выполнении какой-то обработки, можно в ее начало вставить строчку создания в папке базы текстового файла с определенным именем, содержащего в себе имя пользователя, запускающего обработку.
Или даже называть его именем пользователя, выделяя расширением, например, "Иванов.flg". А чтобы не было разночтений, перед созданием проверять его наличие и если уже есть (остался с прошлого раза), то удалять.
А в конце обработки - удалять файлик по-любому.
Правда, польза от этой затеи сомнительна, см. выше.
Как узнать кто именно заблокировал таблицу? Кого выгонять?
Элементарно! Того, кто закрывает смену. :)
Вот только вряд ли это удастся сделать, пока у него не завершится транзакция.
А если серьезно, то в случае конфликта блокировок именно при выполнении какой-то обработки, можно в ее начало вставить строчку создания в папке базы текстового файла с определенным именем, содержащего в себе имя пользователя, запускающего обработку.
Или даже называть его именем пользователя, выделяя расширением, например, "Иванов.flg". А чтобы не было разночтений, перед созданием проверять его наличие и если уже есть (остался с прошлого раза), то удалять.
А в конце обработки - удалять файлик по-любому.
Правда, польза от этой затеи сомнительна, см. выше.
Как узнать кто именно заблокировал таблицу? Кого выгонять?
в УТ точно не скажу, но в БП можно включить версионирование документа например...
либо писать в своем модуле в ЖР на регистрацию изменения объектов,реквизитов и т.п.
в УТ точно не скажу, но в БП можно включить версионирование документа например...
либо писать в своем модуле в ЖР на регистрацию изменения объектов,реквизитов и т.п.
(0) А зачем кого-то выгонять? Кассир выполняет свои прямые обязанности.
Наверное дело в другом, как сделать так, что бы проведение ОРП не мешало другим?
А тут уже может помочь программист изменив логику закрытия кассовой смены.
Например, кассир только как-то помечает чеки, и создает ОРП.
А ночной робот удаляет чеки и проводит ОРП.
Наверное дело в другом, как сделать так, что бы проведение ОРП не мешало другим?
А тут уже может помочь программист изменив логику закрытия кассовой смены.
Например, кассир только как-то помечает чеки, и создает ОРП.
А ночной робот удаляет чеки и проводит ОРП.
Идите следующим путем - добавьте в УТ подписку на событие, отдельный общий модуль и уже в транзации делайте проверку, при блокировке (или превышении ожидания блокировки) отмена транзакции.
Посмотрите как в какой момент делаются движения по закрытию, чтобы до этого события сделать проверку на блокировку и откатить транзакцию.
Посмотрите как в какой момент делаются движения по закрытию, чтобы до этого события сделать проверку на блокировку и откатить транзакцию.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот