Перейти к содержанию

Блокировки документов

Общие сведения

В программе «М-АПТЕКА плюс» возможны ситуации, когда требуется одновременный доступ к одному и тому же документу на запись. Это возможно в следующих случаях:

  • При работе одного пользователя в то время, когда работают некоторые автозадачи, изменяющие документы.

  • При одновременной работе нескольких пользователей с одной базой данных. В этом случае предыдущая ситуация тоже возможна для каждого пользователя.

    Примечание

    При попытке открыть документ, редактируемый другим пользователем, появляется сообщение о том, что документ занят и указывается ФИО пользователя.

При возникновении подобных ситуаций документ «захватывается» тем программным процессом, которому удалось обратиться к нему первым (абсолютно одновременное обращение технически невозможно). Для всех остальных процессов документ оказывается «заблокирован» до тех пор, пока его не «закроет» предыдущий процесс.

В программе различаются блокировки документов трёх вариантов:

1. Документы, не меняющие товарные остатки

При обработке одного такого документа, блокируется только он один, таким образом, одновременно с обработкой документов, не меняющих товарные остатки, можно обрабатывать любые документы, меняющие остатки. Обратное тоже верно.

2. Документы, меняющие товарные остатки в подразделении

Такая блокировка бывает в следующих случаях:

  • при добавлении товара в чек;

  • при пробитии чека;

  • при записи расходного или приходного документа или документа перемещения;

  • при импорте накладных («приходование» товара);

  • в некоторых других случаях.

При обработке хотя бы одного документа, относящегося к варианту №2, блокируются все такие документы этого подразделения (то есть запрещается любое другое изменение остатков в этом подразделении), таким образом одновременно с обработкой документов, меняющих товарные остатки в одном подразделении, можно обрабатывать документы, меняющие остатки в другом подразделении.

Примечание

Для ситуаций, когда в офисе должны одновременно обрабатываться документы сразу нескольких подчинённых подразделений (аптек), возможны превышения возможностей СУБД Cache по блокировке данных. Во избежание рекомендуется в настройках Cache увеличить размер таблицы блокировок до 15-20 млн. байт. Подробнее см. Дополнительная настройка Cache.

3. Документы следующих типов

Для документов, перечисленных в варианте №3 типов, блокируется поставщик. Таким образом, если из разных процессов одновременно записывать документы указанных типов по одному и тому же поставщику (независимо от подразделения для приходования товара), то один из процессов будет ждать окончания записи документа в другом процессе.

Проблема с блокировками

Если с одной и той же базой данных одновременно работают в нескольких сеансах несколько пользователей, то иногда (очень редко) могут возникать ситуации неустранимой блокировки. При попытке редактирования документа или строки документа, программа сообщает, что с документами уже ведётся работа, но не позволяет отказаться от уже начатой попытки редактирования (не удаётся выйти из режима редактирования и покинуть документ).

Из ситуации можно выйти двумя путями:

  • Подождать до тех пор, пока в соседнем сеансе завершится работа с документами, и повторить попытку отказа от редактирования (или продолжить редактирование документа, если это необходимо). Этот путь рекомендуется, так как он не создаёт никаких рисков для данных в базе данных.

  • Если ждать никак нельзя, и можно обойтись без редактирования заблокированного документа, то можно открыть новый сеанс работы с программой, в котором выполнить срочные действия.

В оставшемся сеансе нужно время от времени выполнять проверку: можно ли уже покинуть заблокированный документ. Если блокировка уже закончилась, сеанс работы можно или завершить или продолжить (в зависимости от текущей потребности).

Примечание

Данный путь может быть рискованным, так как «брошенный» сеанс может быть доступен для работников, которым не должна быть разрешена работа в системе.