Почему Штрих-РК в 1С 7.7 не выводит безналичную оплату в Z-отчете и как это исправить?

Программист 1С v7.7 Торговля и дистрибуция
← На главную

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

Причины сбоя: аппаратная память, драйвер и код 1С

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


Функция ЗакрытьСмену(Объект, Пароль, НомерЛенты)
    Рез = 0;
    Если ПустоеЗначение(Объект) = 1 Тогда
        ОписаниеРезультата = "устройство не подключено";
    Иначе
        // переключение в режим снятия отчета
        Объект.Mode = 3;
        Объект.Password = Пароль;
        Объект.SetMode();
        
        Если Объект.Результат = 0 Тогда
            Объект.ТипОтчета = 1;
            Объект.Отчет();
            
            Если Объект.Результат = 0 Тогда
                Объект.GetStatus();
                НомерЛенты = глДополнитьСтрокуЛ(Строка(Объект.Session), "0", 4);
                Рез = 1;
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
    Возврат Рез;
КонецФункции

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

Такой сбой чаще всего возникает после переустановки драйверов (например, при обновлении общего пакета драйверов торгового оборудования для настройки сканеров ШК). При этом параметры драйвера сбрасываются к значениям по умолчанию, очищая соответствие видов платежей.

Шаг 1. Проверка передачи типа закрытия чека в обработке обслуживания

Посмотрим на типовой алгоритм функции печати чека во внешней обработке обслуживания. Для передачи типа оплаты в драйверах используется свойство TypeClose:


Если Число(ПолученоПоКарте) > 0 Тогда
    Объект.TypeClose = 3; // или другой номер безналичного типа, заданный в драйвере
Иначе     
    Объект.TypeClose = 0; // 0 - наличные
КонецЕсли;

Обратите внимание: частая логическая ошибка разработчиков заключается в жесткой проверке флага вида Если Число(ПолученоПоКарте) = 1 Тогда. Если в алгоритме из документа передается не признак (флаг), а реальная сумма оплаты по карте (например, 1500 рублей), такое условие возвратит ложь, в результате чего чек будет закрыт с типом 0 (наличные). Обязательно проверяйте условие на строгое превышение нуля: > 0.

Шаг 2. Настройка сопоставления видов оплат в драйвере оборудования

Если в коде 1С свойство TypeClose передается корректно, причина кроется в отсутствии таблицы сопоставления в самом драйвере. Выполним настройку конфигурации оборудования под тем пользователем операционной системы, который фактически работает с кассой (в терминальной сессии кассира):

  1. Запустим утилиту «Тест драйвера ККМ» (или «Тест драйвера ФР») непосредственно в RDP-сеансе конкретного магазина.
  2. Установим флажок «Устройство включено» (связь с аппаратом должна быть установлена).
  3. Перейдем в раздел «Настройка свойств» и нажмем кнопку «Параметры оборудования» (при запросе введем пароль администратора фискального регистратора, по умолчанию часто 30).
  4. В открывшемся окне перейдем на вкладку «Оплата» (или «Типы оплаты»).
  5. Проверим соответствие номеров типов: тип 0 соответствует наличным расчетам. Найдем строку, соответствующую номеру из кода (в нашем примере TypeClose = 3), и пропишем наименование для безналичного типа (например, «Плат. картой» или «Безналичными»).
  6. Применим изменения и сохраним конфигурацию.

После этой настройки при передаче команды закрытия чека драйвер корректно перенаправит сумму в соответствующий регистр фискального накопителя/памяти, и при снятии Z-отчета итоги разделятся по строкам «Наличные» и «Безналичные».

Шаг 3. Организация независимой работы нескольких касс в терминале

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

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

  1. Разделение параметров по профилям пользователей Windows: Настройки COM-портов и связей драйвер хранит в системном реестре ветки HKEY_CURRENT_USER. Каждый кассир должен подключаться под своим уникальным логином терминального сервера с фиксированным номером проброшенного COM-порта.
  2. Вынесение настроек во внешние конфигурационные файлы: В процедурах инициализации торгового оборудования организуем считывание настроек (номер типа закрытия, скорость порта, путь к специализированной обработке) из индивидуального INI-файла, расположенного в каталоге пользователя КаталогПользователя().
  3. Программное ветвление по текущему рабочему месту: В коде закрытия чека определим точку продаж через свойства текущего пользователя или привязанного склада:
    
    ИмяКассира = ИмяПользователя();
    Если Найти(ИмяКассира, "Магазин1") > 0 Тогда
        Объект.TypeClose = 3;
    ИначеЕсли Найти(ИмяКассира, "Магазин2") > 0 Тогда
        Объект.TypeClose = 1;
    КонецЕсли;
    

Использование связки «проверка передаваемых параметров в 1С + явное сопоставление типов в драйвере под сеансом кассира» гарантирует корректное накопление сумм в памяти кассового аппарата и безошибочную печать Z-отчетов.

← На главную