Почему не срабатывает автоматическая выемка денежных средств при закрытии смены в 1С:Розница 2.2?

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

При работе в программе 1С:Розница 2.2 пользователи часто сталкиваются с ситуацией, когда при попытке закрыть смену система выдает критическую ошибку: «Не смогли произвести выемку руб.». При этом смена может закрыться (сформируется отчет о розничных продажах), но фактическая выемка денег в учетной системе и по фискальному регистратору не происходит. Давайте подробно разберем причины этой проблемы и проанализируем пошаговые методы её решения.

Причины возникновения рассинхронизации

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

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

Шаг 1: Проверка остатков по регистрам 1С

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

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

  1. Перейдем в раздел Продажи — Выемки денежных средств.
  2. Проверим, создался ли документ выемки в момент закрытия смены. Если документ есть, но он не проведен или сумма в нем неверна, его нужно скорректировать вручную.
  3. Если документа нет, попробуем создать его вручную на основании текущей кассовой смены, чтобы «обнулить» регистр.

Шаг 2: Работа с тестом драйвера ККТ

Если 1С настроена на автоматическую выемку, она посылает команду в драйвер кассы (например, АТОЛ или Штрих-М). Если в кассе денег меньше, чем запрашивает 1С, ККТ заблокирует операцию. Выясним, сколько денег «видит» сама касса.

Рассмотрим порядок действий для драйвера АТОЛ:

  1. Закроем 1С (это важно, так как программа монопольно занимает порт кассы).
  2. Запустим «Тест драйвера ККТ».
  3. Установим флаг «Включено».
  4. Перейдем в раздел «Запросы» или «Регистры».
  5. Найдем регистр №1 (Денежный регистр). Нажмем «Прочитать» или «Запрос».
  6. Значение в поле «Сумма» — это то, что касса считает своим остатком.

Если сумма в драйвере отличается от суммы в 1С, нам нужно произвести ручную инкассацию (выемку) в драйвере, чтобы обнулить счетчик кассы. В тесте драйвера АТОЛ это обычно делается в разделе «Нижний уровень» или через вкладку «Чек», выбрав тип чека «Выемка».

Шаг 3: Техническое исправление рассинхронизации в 1С

Когда мы выяснили разницу, нам нужно привести систему в порядок. Проанализируем программный метод. Если мы хотим «на ходу» исправить ошибку без глубокого копания в коде, можно временно отключить автоматическую выемку в настройках Кассы ККМ.

Последовательность действий:

  1. Заходим в карточку Кассы ККМ.
  2. Снимаем галочку «Автоматическая выемка».
  3. Закрываем смену в штатном режиме. Ошибка «Не смогли произвести выемку» исчезнет, так как 1С перестанет требовать эту операцию от драйвера.
  4. Вручную создаем документ Выемка в 1С на ту сумму, которая фактически была изъята.
  5. Возвращаем галочку «Автоматическая выемка» обратно для следующих смен.

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


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ДенежныеСредстваВКассахККМОстатки.СуммаОстаток КАК Остаток
    |ИЗ
    |	РегистрНакопления.ДенежныеСредстваВКассахККМ.Остатки(&Период, КассаККМ = &Касса) КАК ДенежныеСредстваВКассахККМОстатки";

Запрос.УстановитьПараметр("Период", ТекущаяДата());
Запрос.УстановитьПараметр("Касса", ВыбраннаяКассаККМ);
Результат = Запрос.Выполнить();

Если Остаток не равен нулю после закрытия смены и проведения всех выемок — это и есть причина ошибки в следующей смене.

Рекомендации по предотвращению проблемы

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

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

← На главную