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

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

Многие пользователи программы 1С:Розница (особенно начиная с версий 2.3.10 и выше) сталкиваются с ситуацией, когда нумерация чеков перестает обнуляться при закрытии смены. Если раньше каждый день начинался с чека №1, то теперь номера суммируются: 100 чеков в первый день, а на второй день первый чек получает номер 101. Это создает значительные неудобства при сверке отчетов и анализе дневных продаж.

Рассмотрим подробно, почему это происходит, как устроена логика программы и какие шаги необходимо предпринять, чтобы вернуть привычную нумерацию.

Анализ причины: почему изменилось поведение программы

Для начала проанализируем ситуацию и выясним корень проблемы. В современных конфигурациях 1С логика формирования номера чека напрямую зависит от типа подключенного оборудования. Если вы используете полноценный Фискальный регистратор (ККТ), то номер чека берется из памяти самого устройства. ККТ при выполнении Z-отчета (закрытия смены) аппаратно обнуляет свой внутренний счетчик.

Однако, если используется обычный принтер чеков (нефискальное устройство, работающее через Windows-драйвер или эмулятор), ситуация меняется. Для такого устройства 1С сама генерирует номер. В последних обновлениях разработчики 1С изменили подход к нумерации в сторону обеспечения уникальности данных в базе. Программа начинает использовать НомерДокумента из базы данных вместо порядкового номера внутри смены. Поскольку документ ЧекККМ в базе имеет сквозную нумерацию, она не обнуляется утром.

Способ 1. Проверка корректности закрытия смены

Прежде чем переходить к сложным настройкам, проверим, действительно ли смена закрывается в программе корректно. Выясним причину, по которой 1С может считать смену «затянувшейся».

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

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

Способ 2. Настройка шаблона чека ККМ

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

Выполним следующие шаги:

  1. Зайдем в раздел Продажи — Печатные формы, отчеты и обработки — Шаблоны чеков ККМ.
  2. Найдем используемый шаблон (обычно он называется «Персональный» или «Общий»).
  3. Нажмем кнопку Редактировать макет.
  4. В структуре шаблона найдем строку, где выводится номер чека. Скорее всего, там используется параметр [НомерДокумента] или [Номер].

В чем секрет решения? Нам нужно заменить параметр [НомерДокумента] на поле, которое отвечает за Номер чека в смене. В некоторых релизах это поле называется НомерЧека. Если принтер нефискальный, 1С может подставлять туда разные значения. Попробуем заменить переменную в редакторе шаблона и проведем тестовую печать. Если в шаблоне используется XML-редактор, код строки может выглядеть примерно так:


<Строка>
    <Текст Значение="Чек №" />
    <Параметр Имя="НомерЧекаВККМ" />
</Строка>

Важный момент: Параметр НомерЧекаВККМ чаще всего привязан к аппаратной части. Для обычного принтера он может оставаться пустым или дублировать номер документа. Если это не помогло, переходим к следующему шагу.

Способ 3. Сброс счетчика через регистр «Фискальные операции»

Иногда нумерация «залипает» из-за ошибок в служебных таблицах 1С. Программа хранит данные о каждой пробитой операции в специальном регистре. Проанализируем состояние этого регистра.

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

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

В этом случае может помочь очистка кэша или принудительное закрытие всех «зависших» смен через документ Кассовая смена (раздел Продажи — Кассовые смены).

Способ 4. Доработка логики через расширение (для продвинутых пользователей)

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

Мы можем создать небольшое Расширение, которое будет перехватывать процедуру печати. Нам нужно изменить алгоритм заполнения структуры ДанныеЧека. Посмотрим на пример логики, которую можно реализовать:


&После("СформироватьДанныеЧека")
Процедура Имя_СформироватьДанныеЧека(ПараметрыЧека, ДанныеЧека)
    // Вычисляем порядковый номер чека за текущую смену
    ТекущаяСмена = ДанныеЧека.КассоваяСмена;
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ КОЛИЧЕСТВО(*) КАК КолИЗ ЧекиККМ ГДЕ КассоваяСмена = &Смена";
    Запрос.УстановитьПараметр("Смена", ТекущаяСмена);
    // Устанавливаем наш вычисленный номер вместо стандартного
    ДанныеЧека.НомерЧека = Запрос.Выполнить().Выгрузить()[0].Кол + 1;
КонецПроцедуры

Этот код принудительно подсчитывает количество чеков в текущей открытой смене и выводит на печать актуальный порядковый номер, начиная с 1 каждый день. Это идеальное решение для тех, кто использует обычные чековые принтеры в качестве «кухонных» принтеров или для нефискального учета.

Резюме и рекомендации

Подведем итоги нашего исследования. Сквозная нумерация в новых версиях 1С — это не баг, а особенность работы с нефискальным оборудованием в рамках стандартов БПО. Для исправления ситуации:

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

← На главную