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