Как исправить ошибку выемки денежных средств в 1С:Розница после обновления на релиз 2.2.7.23?

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

После обновления программы 1С:Розница до релиза 2.2.7.23 и перевода кассовой техники на работу по протоколу ФФД 1.05 пользователи часто сталкиваются со сбоем при попытке выполнить выемку наличных из кассы. В интерфейсе Рабочего места кассира (РМК) возникает сообщение «Ошибка Выемки». При этом фискальный регистратор печатает чек выплаты, однако соответствующий документ Выемка денежных средств из кассы ККМ в программе 1С не формируется и не проводится.

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

Анализ причины ошибки в программном коде

Проанализируем работу системы в момент выполнения операции выемки. При инкассации или промежуточной выемке из РМК программа отправляет команду на фискальный регистратор для печати чека выплаты. После успешной печати на устройствах ККТ платформа выполняет серверный вызов для создания учетного документа в базе данных.

Вызов функции происходит в общем модуле ДенежныеСредстваВызовСервера в процедуре СоздатьДокументВыемкаДенежныхСредствИзКассыККМ. Разберем, что происходит внутри этого модуля:

  1. Программа пытается сформировать документ Выемка денежных средств из кассы ККМ.
  2. В релизе 2.2.7.23 разработчиками была допущена ошибка в установке даты формируемого документа:
    
    // Ошибочная строка в релизе 2.2.7.23
    ДокументВыемка.Дата = СсылкаНаОтчет.Дата + 1;
    
  3. В момент выемки переменная СсылкаНаОтчет может быть не заполнена или не определена (так как выемка происходит до снятия Z-отчета и закрытия смены). Попытка обращения к свойству не существующего объекта вызывает критическое исключение.
  4. Так как вся процедура выполнения выемки обернута в блок Попытка ... Исключение, платформа перехватывает ошибку, не записывает документ в базу, но и не прерывает работу с фатальным сбоем, выводя кассиру лишь предупреждение «Ошибка Выемки».

Способ 1. Исправление ошибки через расширение конфигурации

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

Разберем по шагам, как исправить код с помощью расширения:

  1. Создадим новое расширение конфигурации и добавим в него общий модуль ДенежныеСредстваВызовСервера.
  2. В процедуре СоздатьДокументВыемкаДенежныхСредствИзКассыККМ подменим ошибочное присвоение даты документа на текущую дату сеанса:
    
    // Исправленная строка кода
    ДокументВыемка.Дата = ТекущаяДатаСеанса;
    
  3. Подключим расширение в информационной базе через раздел Администрирование — Печатные формы, отчеты и обработки — Расширения.
  4. Важный момент: снятие флажка «Безопасный режим» у расширения является обязательным условием. Так как модуль выполняет операции записи документов и работу с оборудованием на сервере, в безопасном режиме платформа заблокирует выполнение этих функций.

Способ 2. Обновление конфигурации и установка официальных патчей

Данная проблема носит массовый характер и была официально зарегистрирована фирмой «1С». В последующих релизах ветки (начиная с версии 2.2.7.29) ошибка полностью устранена разработчиками.

Рассмотрим порядок действий для обновления:

  1. Выполним резервное копирование информационной базы.
  2. Установим официальный патч (файл исправлений с расширением .efd или .cfe) через раздел Администрирование — Обновление программы — Установка обновлений/патчей, если обновление всей конфигурации временно невозможно.
  3. Либо обновим конфигурацию 1С:Розница до актуального релиза. В обновленных версиях логика присвоения дат исправлена на стороне типового кода.

Дополнительные причины сбоев при выемке ДС

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

  1. Рассинхронизация остатков в регистрах накопления: Проверим остаток по регистру Денежные средства ККМ. Если в 1С числится меньшая сумма, чем фактически запрашивается к выемке, программа заблокирует проведение документа. Для выравнивания сумм используется документ Корректировка регистров.
  2. Конфликт настроек автовыемки в драйвере ККТ и 1С: Если в драйвере фискального регистратора включено автоматическое обнуление при закрытии смены, а в 1С автовыемка отключена, при повторном запросе 1С к кассе возникнет ошибка «Не хватает наличности». Необходимо привести настройки драйвера оборудования и карточки ККМ в 1С к единому значению.
  3. Непроведенные документы «Отчет о розничных продажах»: Убедимся, что все текущие чеки корректно попадают в регистры. При наличии ошибок проведения выручка не приходуется в учет кассы ККМ.
  4. Слет привязки организации в оборудовании: Посмотрим карточку подключаемого оборудования (раздел Администрирование — Подключаемое оборудование). В некоторых случаях после обновления в карточке ККТ сбрасывается поле Организация. Укажем корректное юридическое лицо и пересохраним настройки.

Обходные пути оформления выемки

В случаях, когда оперативную правку кода провести невозможно (например, при работе в базовой версии 1С:Розница, где доработка конфигураций и использование расширений программно заблокированы), разберем альтернативные способы проведения выемки:

  1. Ручное создание документа: Выполняем выплату на фискальном регистраторе через утилиту драйвера ККТ. После этого переходим в интерфейс 1С в раздел Продажи — Выемки денежных средств из касс ККМ (или раздел Финансы) и вручную создаем и проводим документ выемки на нужную сумму.
  2. Перевод на полную автовыемку: В настройках кассы ККМ и магазина включаем опцию автоматической выемки при закрытии смены. В этом случае операция изъятия выручки будет привязана к снятию Z-отчета, минуя промежуточные ручные операции из РМК.
← На главную