Что делать, если кассовая смена открыта на ККТ, но не отображается в 1С:Бухгалтерии 3.0?

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

В практической работе кассиров и бухгалтеров нередко возникает крайне неприятная ситуация: при попытке пробить чек или открыть/закрыть смену программа выдает взаимоисключающие ошибки. Например, при попытке открыть смену 1С сообщает, что "Кассовая смена УЖЕ открыта", а при попытке закрыть — "Кассовая смена уже была закрыта" (или отчет о закрытии не может быть сформирован). При этом в справочнике Кассовые смены за текущий день вообще нет никаких записей.

В этой статье мы подробно разберем, почему возникает подобный сбой, как правильно настроить связь с кассовым аппаратом напрямую и какие существуют способы восстановления синхронизации между физическим фискальным накопителем и базой данных 1С.

---

Почему происходит рассинхронизация (природа ошибки)

Для того чтобы понять, как исправить ошибку, проанализируем механизм взаимодействия платформы 1С и онлайн-кассы (ККТ). В этой связке отсутствует так называемая "целостность транзакции". Процесс открытия кассовой смены всегда состоит из двух последовательных этапов:

  1. Программа 1С отправляет команду на кассовый аппарат. Физическое устройство принимает команду, открывает смену внутри своей фискальной памяти и распечатывает чек (отчет об открытии смены).
  2. ККТ возвращает в 1С сигнал об успешном выполнении операции. Получив его, программа создает, заполняет и проводит документ Кассовая смена со статусом "Открыта".

Если на втором этапе происходит сбой (например, внезапно оборвалось сетевое соединение, у пользователя прямо в этот момент "слетели" права доступа на запись документов, выключился компьютер или завис сеанс 1С), транзакция в базе данных откатывается. Физическая касса уже считает смену открытой, но в информационной базе 1С подтверждающий документ отсутствует. Из-за этого программа блокирует дальнейшую работу, считая, что смена еще не началась, а касса отказывается открывать смену повторно.

---

Способ 1. Принудительное закрытие смены через драйвер ККТ (Основной метод)

Самый надежный способ вернуть систему в рабочее состояние — закрыть "зависшую" смену непосредственно на самом кассовом аппарате в обход 1С. После этого статус кассы обнулится, и вы сможете открыть смену заново в штатном режиме.

Разберем по шагам, как это сделать на примере самого распространенного оборудования (на примере драйвера АТОЛ, для других марок логика аналогична):

Шаг 1. Полное освобождение портов подключения

Любая касса подключается к компьютеру через определенный COM-порт или USB-эмуляцию. Программа 1С монопольно захватывает этот порт при запуске. Если база 1С открыта, драйвер кассы не сможет подключиться к устройству и выдаст ошибку "Порт занят" или "Соединение не установлено".

Выполним следующие действия:

  1. Полностью закройте все сеансы 1С на данном компьютере.
  2. Откройте "Диспетчер задач" Windows (сочетание клавиш Ctrl + Shift + Esc) и убедитесь, что в фоновых процессах не зависли процессы 1cv8.exe или 1cv8c.exe. Если они есть, завершите их вручную.

Шаг 2. Подключение к кассе через Тест драйвера ККТ

Запустите утилиту "Тест драйвера ККТ" (для касс АТОЛ это обычно "ДТО 10").

  1. В правом верхнем углу окна утилиты найдите и обязательно установите флаг "Включено" (или "Устройство включено"). Без этого действия программа проверки связи выдаст ошибку отсутствия соединения, даже если все провода физически подключены правильно.
  2. Перейдите в раздел "Свойства" и выполните проверку связи. Если порт определен верно, в поле информации отобразится модель вашей кассы и ее заводской номер. Если порт занят или недоступен, попробуйте изменить настройки порта (например, с COM на USB или выбрать другой номер COM-порта).

Шаг 3. Снятие отчета с гашением (Закрытие смены)

После успешного установления связи выполним закрытие смены:

  1. В левом меню утилиты драйвера перейдите в раздел "Отчеты". Повторяющиеся действия в интерфейсе внешних утилит эффективно выполняет платформа для создания программных роботов RPA.
  2. В выпадающем списке типов отчетов выберите "Отчет о закрытии смены" (в некоторых версиях драйверов он может называться "Снять отчет с гашением" или "Z-отчет").
  3. Нажмите кнопку "Сформировать отчет".
  4. Кассовый аппарат должен распечатать бумажную ленту с отчетом о закрытии смены.

После выполнения этих шагов закройте тест драйвера ККТ, запустите 1С:Бухгалтерию и откройте смену привычным способом через Рабочее место кассира (РМК). Программа создаст новый чистый документ в базе.

---

Способ 2. Синхронизация смены встроенными инструментами 1С

Иногда закрывать смену через драйвер нежелательно — например, если кассир в течение дня уже пробивал чеки (в автономном режиме или через другие программы) и закрытие смены сейчас приведет к расхождению в учете и Z-отчетах. Выясним, как решить проблему программными методами внутри самой 1С.

Вариант А. Форма "Управление фискальным устройством"

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

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

Вариант Б. Групповое изменение реквизитов (если смена зависла в неверном статусе)

Если в справочнике Кассовые смены документ за предыдущий день все-таки присутствует, но имеет статус "Открыта" (хотя на самой кассе физически смена уже закрыта), использовать драйвер не нужно. Нам достаточно скорректировать статус документа в базе данных.

Рассмотрим по шагам, как это сделать безопасно:

  1. Перейдите в раздел Администрирование -> Обслуживание.
  2. Раскройте подраздел Корректировка данных и выберите пункт Групповое изменение реквизитов.
  3. В поле "Выбрать элементы для изменения" укажите справочник/документ Кассовая смена.
  4. Критически важно: Нажмите ссылку "Все элементы" для настройки отбора. Добавьте условие отбора: по дате документа или по конкретной ссылке на ошибочную смену. Если этого не сделать, программа изменит статус абсолютно всех смен в базе данных, что приведет к тотальной ошибке учета!
  5. В табличной части доступных реквизитов найдите поле Статус (или Статус кассовой смены).
  6. Установите новое значение: Закрыта.
  7. Нажмите кнопку Изменить реквизиты.

После этого попробуйте запустить РМК и открыть смену заново. Для такой корректировки можно использовать обработку для ручного закрытия кассовой смены в 1С.

Вариант В. Ручное программное создание документа (Для опытных пользователей)

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


НоваяСмена = Документы.КассоваяСмена.СоздатьДокумент();
НоваяСмена.Дата = ТекущаяДата();
НоваяСмена.Организация = Справочники.Организации.НайтиПоРеквизиту("ИНН", "7700000000"); // Укажите ИНН вашей организации
НоваяСмена.КассаККМ = Справочники.КассыККМ.НайтиПоНаименованию("Основная касса"); // Укажите имя кассы
НоваяСмена.Статус = Перечисления.СтатусыКассовыхСмен.Открыта;
НоваяСмена.НачалоСмены = ТекущаяДата();
НоваяСмена.Записать(РежимЗаписиДокумента.Проведение);

После выполнения этого кода в системе появится проведенный документ со статусом "Открыта". 1С позволит кассирам беспрепятственно пробивать чеки в течение дня, а вечером при стандартном закрытии смены программа корректно закроет ее как на фискальном накопителе, так и в базе данных.

---

Советы по предотвращению подобных ошибок в будущем

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

← На главную