В практике работы с программой 1С:Управление торговлей 10.3 нередко возникает ситуация, когда после смены сетевого имени компьютера или удаления записи о торговом оборудовании текущая кассовая смена остается в статусе «Открыта». При попытке закрыть её стандартным способом система выдает ошибку: «Устройство было удалено» или «Ошибка получения обработки обслуживания». Это происходит потому, что 1С хранит жесткую привязку открытой смены к конкретному рабочему месту, которое идентифицируется через имя ПК и внутренний ID оборудования.
В данной статье мы разберем, как корректно выйти из этой ситуации, сохранив целостность данных в учете и обеспечив правильную работу фискального регистратора.
Проанализируем ситуацию: в 1С:УТ 10.3 привязка кассы идет по связке Имя компьютера + Уникальный идентификатор в справочнике «Торговое оборудование». Когда системный администратор меняет имя компьютера, программа воспринимает это как вход с нового, абсолютно другого рабочего места. Старая смена остается «висеть» на несуществующем с точки зрения текущей сессии компьютере. Поскольку оборудование «привязано» к старому имени, текущий сеанс не может отправить команду на фискальный регистратор.
Первым делом нам необходимо убедиться, что смена закрыта в самом фискальном накопителе (ФН). Если 1С не может связаться с кассой, мы воспользуемся утилитой от производителя (например, «Тест драйвера АТОЛ» или «Тест драйвера Штрих-М»).
После получения бумажного чека Z-отчета смена в кассовом аппарате считается закрытой. Теперь наша задача — привести данные в 1С в соответствие с реальностью.
Поскольку стандартная кнопка «Закрыть смену» не работает из-за ошибки поиска оборудования, нам нужно изменить статус документа Кассовая смена вручную. Рассмотрим, как это сделать с помощью встроенных инструментов.
Воспользуемся универсальной обработкой «Групповая обработка справочников и документов»:
Сервис — Универсальные механизмы — Групповая обработка справочников и документов.Документы, нажмем кнопку «Добавить» и найдем в списке Кассовая смена.Статус Равно Открыта.Статус и установим значение Закрыта.Компьютер, прописав туда текущее сетевое имя ПК, чтобы система «увидела» связь.Важно понимать механику: в норме при закрытии смены 1С собирает все документы Чек ККМ, делает их архивными и создает на их основании один сводный документ Отчет о розничных продажах (ОРП). Если мы просто поменяли статус смены, чеки останутся в журнале и не попадут в товарный учет (не спишут остатки и не сформируют выручку в кассе предприятия).
Разберем алгоритм ручного формирования отчета:
Документы — Розница — Отчет о розничных продажах.Чтобы старые чеки не мешали при закрытии следующих смен, их нужно сделать архивными. Для этого снова воспользуемся групповой обработкой документов:
Чек ККМ.Статус чека — Архивный.Проанализируем ситуацию, если новая смена все равно не открывается. В 1С:УТ 10.3 состояние касс хранится в специальном регистре. Если программный код при открытии смены видит запись в регистре, он блокирует операцию.
Рассмотрим, как очистить эти данные программно или через интерфейс:
// Пример логики, которую можно использовать во внешней обработке
НаборЗаписей = РегистрыСведений.КассовыеСмены.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.КассаККМ.Установить(ВыбКасса);
НаборЗаписей.Прочитать();
Если НаборЗаписей.Количество() > 0 Тогда
Для Каждого Запись Из НаборЗаписей Цикл
Запись.Статус = Перечисления.СтатусыКассовойСмены.Закрыта;
КонецЦикла;
НаборЗаписей.Записать();
КонецЕсли;
Для обычного пользователя достаточно зайти через Операции — Регистры сведений — Кассовые смены, найти запись с открытой сменой и убедиться, что её данные соответствуют закрытому состоянию.
Мы выяснили, что проблема «удаленного устройства» — это всего лишь несовпадение идентификаторов в базе данных. Последовательно выполнив закрытие в драйвере, корректировку статуса документа Кассовая смена и ручное создание Отчета о розничных продажах, мы полностью восстанавливаем учет без потери данных. В будущем, при планировании смены имен компьютеров, рекомендуем сначала закрывать кассовые смены на всех рабочих местах, а затем проводить технические работы с оборудованием.