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