В процессе работы с конфигурацией 1С:Управление торговлей (особенно версий 11.3 и ранних 11.4) пользователи часто сталкиваются с парадоксальной ситуацией: физически кассовая смена на фискальном регистраторе (ФР) открыта, отчет об открытии распечатан, но сама программа продолжает считать, что смена закрыта. При этом кнопка "Закрыть смену" остается неактивной, чеки не пробиваются, а попытка повторного открытия смены выдает ошибку: «Смена на фискальном регистраторе уже открыта».
Рассмотрим подробнее причины возникновения этой коллизии и разберем по шагам методы её устранения — от простых манипуляций с данными до программной корректировки логики системы.
Проанализируем ситуацию: в системе 1С за определение состояния смены отвечает сложный механизм связи между справочником Кассы ККМ, документом Кассовая смена и справочником Настройки РМК. Основная проблема кроется в алгоритме, по которому 1С ищет настройки для текущего рабочего места.
В типовом коде запрос к базе данных ищет настройки рабочего места кассира (РМК), где указана данная Касса ККМ. Однако запрос написан с использованием конструкции ПЕРВЫЕ 1 без учета того, активна ли эта настройка в данный момент. Если в справочнике накопилось несколько записей для одной и той же кассы (например, после переустановки Windows, смены пользователя или создания нового рабочего места), 1С может "схватить" старую, некорректную настройку. Самое критичное здесь то, что система часто игнорирует пометку на удаление в этих записях.
Это самый быстрый и эффективный способ для обычного пользователя или системного администратора. Если программа подхватывает не те данные, значит, нужно физически избавиться от лишних связей.
Касса ККМ.Касса ККМ либо физически удалить эти объекты через обработку "Удаление помеченных объектов".Рассмотрим ситуацию, когда за одной кассой работают несколько кассиров под разными учетными записями. В 1С:УТ каждое "Рабочее место" жестко привязывается к имени компьютера и идентификатору пользователя. Если для каждого кассира создана своя настройка РМК, возникает риск конфликта.
Выясним, как это исправить:
Для всех пользователей, работающих на одном физическом оборудовании, рекомендуется использовать механизм "Общего рабочего места". Это позволит системе однозначно определять статус смены вне зависимости от того, кто именно из сотрудников авторизован в программе в данный момент. Проверьте, чтобы в справочнике Рабочие места не было дублей для одного и того же физического ПК.
Если чистка справочников помогает лишь временно или вы хотите раз и навсегда устранить корень проблемы в коде конфигурации, проанализируем программное решение. Нам необходимо переопределить процедуру, отвечающую за заполнение используемых касс, чтобы она учитывала только актуальные данные.
Пример кода для расширения (процедура ЗаполнитьИспользуемыеКассыККМ):
&НаСервере
&Вместо("ЗаполнитьИспользуемыеКассыККМ")
Процедура Расш1_ЗаполнитьИспользуемыеКассыККМ(Параметры)
// Очищаем таблицы перед заполнением
ТаблицаКассККМОрганизаций.Очистить();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| НастройкиРМК.КассаККМ КАК КассаККМ,
| НастройкиРМК.КассаККМ.Владелец КАК Организация,
| НастройкиРМК.РабочееМесто КАК РабочееМесто
|ИЗ
| Справочник.НастройкиРМК КАК НастройкиРМК
|ГДЕ
| НастройкиРМК.РабочееМесто = &РабочееМесто
| И НЕ НастройкиРМК.ПометкаУдаления";
Запрос.УстановитьПараметр("РабочееМесто", ПараметрыСеанса.РабочееМестоКлиента);
РезультатЗапроса = Запрос.Выполнить();
// Далее следует логика заполнения коллекций на основе уточненного запроса
КонецПроцедуры
Использование &Вместо позволяет нам внедрить правильную фильтрацию (например, добавить проверку И НЕ ПометкаУдаления), которую разработчики типового решения могли упустить в конкретном релизе.
Иногда проблема кроется не только в настройках РМК. Разберем дополнительные технические нюансы:
Кассовая смена. Если реквизит Касса ККМ пуст, это означает, что в момент создания документа система не смогла однозначно сопоставить настройки. Убедитесь, что у пользователя в настройках прав указаны основной склад и основная касса.Подведем итог: В большинстве случаев проблема "невидимости" смены решается приведением справочника Настройки РМК в порядок. Удалите все лишние записи, убедитесь, что оставшиеся привязаны к актуальным рабочим местам, и 1С снова начнет корректно считывать статус фискального регистратора.