Как настроить общую кассу на нескольких бухгалтеров в 1С:Бухгалтерия 3.0, если список доступа блокирует кассиров?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При организации рабочего места с фискальным регистратором нередко возникает ситуация, когда одну онлайн-кассу (ККТ) необходимо использовать нескольким сотрудникам — например, двум кассирам или бухгалтерам. В современных версиях программы «1С:Бухгалтерия предприятия 3.0» предусмотрен механизм касс с общим доступом, однако при попытке ограничить круг допущенных лиц администраторы и специалисты сталкиваются с нелогичным поведением: после внесения кассиров в список программа выдает ошибку о том, что у них нет доступа к оборудованию, а при очистке списка — касса начинает работать.

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

Анализ проблемы: почему разрешающий список работает как запрещающий

Проанализируем механику работы подключаемого оборудования. По задумке разработчиков подсистемы Библиотеки подключаемого оборудования (БПО), оборудование с общим доступом должно поддерживать разграничение прав: администратор указывает конкретных пользователей, которым разрешено выполнять фискальные операции на данном экземпляре ККТ («белый список»).

Однако в определенных релизах конфигурации «Бухгалтерия предприятия» и БПО встречается ошибка инверсии условия в программном коде. В процедуре проверки прав вхождение текущего пользователя информационной базы в табличную часть ограничений трактуется с обратным знаком:

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

Посмотрим, какими методами можно быстро и корректно решить эту задачу на практике.

Способ 1. Проверка и установка официальных исправлений (патчей)

Разберем по шагам наиболее предпочтительный и стандартный метод устранения программной ошибки. Поскольку некорректная логика проверки прав на уровне оборудования признается разработчиками типовой ошибкой, фирма «1С» выпускает для нее точечные исправления.

  1. Перейдем в раздел Администрирование, затем выберем пункт Обслуживание.
  2. Откроем подраздел Обновление программы и перейдем по ссылке Установка обновлений и исправлений (патчей).
  3. Выполним поиск и установку актуальных патчей (пакетов расширений с префиксом EF_), относящихся к подключаемому оборудованию.
  4. Перезапустим сеансы пользователей и проверим корректность работы кассы при заполненном списке кассиров.

Способ 2. Исправление условия с помощью собственного расширения конфигурации

Если официальный патч для используемого релиза еще не установлен или конфигурация обновляется по собственному графику, исправим логику проверки программно. Для этого не требуется снимать конфигурацию с поддержки — достаточно создать компактное расширение.

Рассмотрим пример перехвата процедуры проверки прав на оборудование в общем модуле подсистемы БПО. Подключим метод с аннотацией &Вместо или &ИзменитьИПрисоединить:


&Вместо("ПроверитьДоступПользователяКОборудованию")
Функция Расш1_ПроверитьДоступПользователяКОборудованию(Оборудование, Пользователь)
    // Если табличная часть пользователей пуста — доступ открыт для всех
    Если Оборудование.Пользователи.Количество() = 0 Тогда
        Возврат Истина;
    КонецЕсли;

    // Проверяем явное наличие пользователя в разрешающем списке
    Отбор = Новый Структура("Пользователь", Пользователь);
    Строки = Оборудование.Пользователи.НайтиСтроки(Отбор);

    // Доступ разрешен только тем, кто явно внесен в табличную часть
    Возврат (Строки.Количество() > 0);
КонецФункции

Такая доработка возвращает механизму исходный смысл: кассой могут пользоваться только те сотрудники, которые прямо указаны в настройках подключаемого устройства.

Способ 3. Разграничение прав на уровне ролей и групп доступа без использования списка оборудования

Если нет возможности править код конфигурации или устанавливать расширения, разберем организационно-технический обход проблемы:

  1. Оставим список пользователей на вкладке ограничений ККТ полностью пустым. В этом случае подсистема БПО не блокирует вызовы драйвера.
  2. Ограничим круг лиц, способных взаимодействовать с кассой, через профили групп доступа (раздел Администрирование → Настройки пользователей и прав → Группы доступа).
  3. Исключим у всех сотрудников, кроме двух кассиров, роли на добавление и проведение документов расхода/прихода денежных средств с признаком пробития чека (или право на прямое управление фискальным регистратором).
  4. Если в базе включен механизм RLS (ограничение доступа на уровне записей), настроим видимость и доступность конкретных касс ККМ через группы доступа с отбором по кассам.

Особенности аппаратного взаимодействия при работе нескольких пользователей с одной ККТ

Организуя доступ нескольких бухгалтеров к одному фискальному аппарату, обратим внимание на важные технические нюансы:

  1. Монопольный захват порта устройства: Фискальный регистратор не способен обрабатывать команды от двух сессий одновременно. Если оба кассира нажмут кнопку фискализации одновременно, один из сеансов получит аппаратную ошибку «Порт занят» или таймаут соединения.
  2. Сетевое подключение (TCP/IP) или служба печати: Для стабильной многопользовательской работы рекомендуется использовать сетевой интерфейс ККТ (Ethernet, Wi-Fi) либо настроить фирменный сервис печати (веб-сервер ККТ от производителя), который берет на себя постановку чеков в последовательную очередь.
  3. Фоновая фискализация: В современных версиях программных продуктов 1С можно настроить отложенную очередь чеков: операторы создают кассовые документы в базе, а непосредственную печать и фискализацию выполняет один выделенный сеанс, что полностью предотвращает конфликты одновременного доступа к драйверу.
← На главную