Как определить выполняется ли транзакция другим пользователем? #326865


#0 by дущ
Проблема возникает при закрытии смены. Сразу 2 кассира начинают закрытие смены в один момент времени, первый ставит транзакцию (операция закрытия смены у нас очень длительная ~40сек). В этот момент второй нарывается на его транзакцию. Программа ждёт положенные 15 сек., после этого выдаёт сообщение об ошибке захвата таблицы. Код оптимизирован максимально, быстрее просто не получается (большой объём данных), скуль не предлагать, увеличивать время ожидания тоже неохото. Пришла в голову мысль, ждать пока другой кассир, начавший транзакцию не закроет смену, и лишь после этого начинать свою. Отсюда вопрос, как узнать выполняется ли транзакция другим пользователем? Может можно попробовать получить доступ к файлу 1Ssystem? Если доступ есть - значит транзакции нет?
#1 by FN
Можно попробовать сделать служебную константу - ИдетТранзакция и перед началом закрытия смены ее выставлять в "1" после транзакции в "0".
#2 by zenik
А не проще при начале транзакции создать файл-флаг, по нему и определять? Или мы не ищем легких путей?
#3 by zenik
2 к 0
#4 by FN
+ Но возможны глюки (вылет 1С например...)
#5 by zenik
Блокируй файл... И пытайся его удалять. Если удалил, значит прога вылетела, если нет, значит работает
#6 by dk
ищи в каталоге ИБ файлик типа 1sjournal.$lk хотя ...
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С