Почему при пробитии чека в УТ 10.3 возникает ошибка «недостаточно количества на складе», хотя остаток есть?

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

При работе с классической конфигурацией «Управление торговлей, редакция 10.3» после очередного обновления программисты и администраторы часто сталкиваются с парадоксальной ситуацией. При попытке пробить чек через документ Чек ККМ система выдает критическую ошибку: «Остатка [Товар] на складе недостаточно. Не хватает 1 шт; Остаток -32 шт». При этом отчет «Ведомость по товарам на складах» или «Остатки товаров» показывает, что товар в наличии есть, и его достаточно для совершения продажи.

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

Анализ механизма возникновения ошибки

Рассмотрим подробнее, как работает проведение чека в УТ 10.3. Процесс печати фискального чека и проведение документа в информационной базе тесно связаны одной транзакцией. Когда кассир нажимает кнопку «Пробить», программа выполняет следующую последовательность действий:

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

Именно в этот момент возникает коллизия. В нетиповых или некорректно обновленных конфигурациях алгоритм обработки ошибок может быть настроен так, что вместо реальной причины (ошибки ККТ) пользователю выводится последнее сообщение из стека ошибок, которое часто связано с неудачной попыткой записи движений по складам. В итоге мы видим сообщение о нехватке «-32 шт», хотя это число может быть результатом математической ошибки интерпретации пустых значений при откате транзакции.

Причина №1: Ошибка программирования реквизита 1009 (ФФД 1.2)

Проанализируем ситуацию с переходом на новый формат фискальных данных. Ошибка 1009 (Недопустимое сочетание реквизитов) стала массовой после внедрения ФФД 1.2. Она возникает, когда в пакете данных, отправляемом на кассу, отсутствуют или неверно заполнены обязательные теги, такие как Адрес расчета (тег 1009) или Место расчета (тег 1187).

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

Что нужно сделать: Проверьте настройки торгового оборудования. Убедитесь, что в справочнике «Кассы» или в настройках параметров фискального регистратора корректно заполнены адрес и место установки. Также убедитесь, что версия драйвера (например, АТОЛ 10.x) соответствует требованиям текущего релиза конфигурации.

Причина №2: Затирание доработок при обновлении

Если ваша УТ 10.3 является нетиповой, велика вероятность, что при обновлении была случайно затерта часть кода, отвечающая за специфическую проверку остатков или за работу с сериями и качеством. Посмотрим на типичный пример кода, который часто модифицируют в процедуре ПередЗаписью или в модуле проведения документа:


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

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

Причина №3: Проблемы с обработкой обслуживания и драйвером АТОЛ

Выясним причину, связанную с техническим взаимодействием 1С и кассы. Часто проблема решается обновлением обработки обслуживания ATOLkkt.epf (или аналогичной для вашей версии драйвера). Старые версии обработок не умеют корректно передавать новые параметры маркировки и реквизиты ФФД 1.2 в драйвер 10-й версии.

Проанализируем ситуацию: на компьютере разработчика (где нет ККТ) документ проводится отлично, так как 1С работает в режиме «Эмуляция» или просто пропускает блок печати чека. На рабочем месте клиента касса подключена, и блок печати становится обязательным. Если драйвер возвращает ошибку, документ не проводится.

Пошаговый алгоритм решения проблемы

Рассмотрим последовательность действий для исправления ситуации:

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

Важный момент: Обратите внимание на статус качества. В сообщении об ошибке часто фигурирует Качество: Новый. Если в документе случайно выбрано иное значение или в регистре остатки числятся без указания качества, типовой механизм УТ 10.3 выдаст ошибку нехватки.

Подводя итог, можно сказать, что в 90% случаев ложная ошибка остатков в УТ 10.3 после обновления связана именно с откатом транзакции из-за сбоя ККТ. Тщательная проверка настроек ФФД 1.2 и актуализация драйверов — залог стабильной работы кассовой смены.

← На главную