Как убрать лишний нуль (номер секции) в чеке на кассах Штрих-М

Системный администратор Торговля и дистрибуция
← На главную

При работе с кассовым оборудованием «Штрих-М» через нетиповые конфигурации 1С пользователи часто сталкиваются с эстетической и технической проблемой: в печатной форме чека перед наименованием товара или суммой появляется «лишний» нуль. Бухгалтерия справедливо требует привести чек в соответствие со стандартами компании, исключив технические индексы. Разберемся подробно, почему это происходит и как настроить оборудование так, чтобы лишняя информация не выводилась на печать.

Анализируем причину появления нуля в чеке

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

Рассмотрим ситуацию: на одной кассе нуля нет, а на другой (точно такой же модели) он есть. Это прямо указывает на различия в энергонезависимой памяти (таблицах) самого аппарата или в версии используемого драйвера DrvFR.dll.

Способ 1. Настройка таблиц ККТ через «Тест драйвера»

Самый надежный способ убрать вывод секции — изменить внутренние настройки кассы. Для этого нам понадобится утилита «Тест драйвера ККТ». Проанализируем шаги, которые необходимо предпринять:

  1. Запустим утилиту «Тест драйвера» и установим связь с кассой (кнопка «Настройка свойств» -> «Проверка связи»).
  2. Перейдем в раздел «01. Состояние» и убедимся, что смена открыта или касса находится в режиме выбора.
  3. Зайдем в пункт «Таблицы».
  4. Найдем Таблицу №1 «Тип и режим работы». Здесь хранятся основные параметры поведения кассы при печати.
  5. В этой таблице нас интересует поле «Печать номера секции» (обычно это поле под номером 12, но в зависимости от версии прошивки индекс может отличаться).

    Если в этом поле установлено значение «1», касса будет печатать номер отдела для каждой позиции. Нам необходимо установить значение «0». После ввода значения обязательно нажмите клавишу Enter и закройте окно таблицы, чтобы данные записались в память ККТ.

  6. Также проверим Таблицу №7 «Настройка отделов». Каждая строка в ней соответствует отделу. Если в вашей программе продажи идут по «нулевому» отделу, убедитесь, что настройки в этой таблице корректны. Однако помните, что в большинстве версий протокола Штрих-М нумерация отделов начинается с 1, и передача нуля может интерпретироваться драйвером как ошибка или значение по умолчанию.

Способ 2. Обновление драйвера ККТ

Как показывает практика, версии драйвера серии 4.13.x имели определенные особенности обработки параметров, передаваемых из внешних программ (например, из 1С). В более старых версиях драйвер мог принудительно подставлять индекс отдела, если он не был задан программно.

Проанализируем результаты обновления: переход на версию драйвера 4.14.0.716 и выше часто решает проблему «лишнего нуля» автоматически. Новые версии драйверов более корректно работают с форматами фискальных данных (ФФД 1.05 и выше) и скрывают техническую информацию, которая не является обязательной для реквизитов чека.

Важно: При обновлении драйвера на рабочих местах с нетиповой 1С убедитесь, что библиотека DrvFR.dll зарегистрирована в системе корректно. Используйте команду:

regsvr32 "C:\PathToDriver\DrvFR.dll"

Способ 3. Проверка параметров в коде 1С

Если вы используете нетиповую конфигурацию, стоит заглянуть в программный код, отвечающий за формирование чека. Найдем фрагмент кода, где вызывается метод регистрации позиции (обычно это Sale(), Registration() или работа через объект AddIn.DrvFR).

Рассмотрим пример того, как может выглядеть вызов метода:


// Пример формирования позиции чека
Драйвер.Password = 30; // Пароль администратора/кассира
Драйвер.Quantity = 1;
Драйвер.Price = 100.00;
Драйвер.Department = 1; // Вот здесь задается номер отдела
Драйвер.Tax1 = 0;
Драйвер.StringForPrinting = "Наименование товара";
Драйвер.Sale();

Если в свойство Department (Отдел) передается значение 0, попробуйте изменить его на 1. В некоторых случаях именно передача нулевого значения в старых прошивках провоцирует кассу на вывод этого индекса в печатную форму. Если же ваша задача — полностью скрыть упоминание отдела, убедитесь, что в 1С не включены флаги расширенной печати чека, которые могут переопределять настройки таблиц ККТ.

Взаимосвязь с прошивкой ККТ

Выясним причину, почему две одинаковые кассы могут вести себя по-разному при одинаковых настройках таблиц. Это может быть связано с версией ПО (прошивки) самого аппарата. Кассы с датой ПО от 2018 года и позже (поддержка ФФД 1.05) имеют иную логику работы с секциями, чем старые аппараты. Если одна касса работает на прошивке 2017 года, а другая — 2018-го, их поведение в части печати служебных полей будет различаться. В этом случае поможет только приведение обеих касс к единой версии прошивки и драйвера.

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

Для устранения лишнего нуля в чеке рекомендуем придерживаться следующего алгоритма действий:

  1. Проверьте Таблицу 1, поле 12 в настройках ККТ через Тест драйвера. Убедитесь, что печать номера секции отключена (значение 0).
  2. Обновите драйвер Штрих-М до актуальной версии (не ниже 4.14). Это снимет большинство проблем совместимости.
  3. Сравните прошивки ваших аппаратов. Если они разные, настройки «по умолчанию» могут отличаться, что и приводит к разному виду чеков на одинаковом софте.
  4. В коде 1С проконтролируйте, какое значение передается в свойство Department. Старайтесь использовать явное указание первого отдела (1) вместо нулевого значения.

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

← На главную