Переход на формат фискальных данных (ФФД) 1.05 на платформе 1С 7.7 часто вызывает сложности у разработчиков из-за почтенного возраста системы и необходимости использовать современные методы драйвера. Основная задача заключается в передаче новых обязательных реквизитов, таких как ИНН кассира, признак предмета расчета и признак способа расчета. В этой статье мы подробно разберем, как адаптировать программный код и настроить кассовый аппарат Штрих-М для корректной работы.
Для начала проанализируем, какие именно параметры стали обязательными в ФФД 1.05 и как они соотносятся с терминами драйвера ККТ:
Выясним причину распространенной ошибки, когда 1С не видит методы FNSendTag или FNCloseCheckEx. Это происходит из-за использования старой версии библиотеки DrvFR.dll. Для работы с ФФД 1.05 нам потребуется драйвер версии не ниже 4.14.
Рассмотрим порядок действий для обновления:
Bin (обычно это C:\Program Files (x86)\SHTRIH-M\DrvFR 4.14\Bin).DrvFR.dll и файлы заголовков) в каталог информационной базы 1С или в каталог установки платформы (папка Bin).regsvr32 "путь_к_файлу\DrvFR.dll".Теперь проанализируем пример кода, который позволяет передать все необходимые теги. Важно соблюдать последовательность: сначала передаются теги, относящиеся к позиции, затем вызывается метод продажи.
Рассмотрим фрагмент кода для регистрации операции с учетом ФФД 1.05:
// Пример передачи ИНН продавца (кассира) перед открытием или в процессе чека
Если СокрЛП(ИННПродавца) <> "" Тогда
FR.TagNumber = 1203; // Номер тега ИНН кассира
FR.TagType = 7; // Тип тега - строка
FR.TagValueStr = СокрЛП(ИННПродавца);
FR.FNSendTag(); // Отправка тега в ФН
КонецЕсли;
// Регистрация позиции
FR.Password = Password;
FR.Quantity = 1;
FR.Price = Сумма;
FR.Department = 1;
// Установка признаков ФФД 1.05 для позиции
FR.PaymentTypeSign = 4; // Признак способа расчета: Полный расчет
FR.PaymentItemSign = 4; // Признак предмета расчета: Услуга (или 1 для товара)
FR.TaxType = 2; // Тип налога (согласно настройкам в таблицах ККТ)
FR.Sale(); // Вызов метода продажи
Обратите внимание на использование метода FNCloseCheckEx(). В новых версиях драйвера именно он отвечает за корректное закрытие чека с передачей всех накопленных данных в фискальный накопитель.
Процедура ЗакрытьЧек()
FR.Password = Password;
FR.Summ1 = Сумма; // Оплата наличными
FR.Summ2 = 0; // Оплата безналичными
// Вместо старого CloseCheck используем расширенный метод
FR.FNCloseCheckEx();
КонецПроцедуры
Многие параметры, которые не меняются от чека к чеку, проще один раз настроить в самом аппарате через Тест драйвера ККТ. Это разгрузит код 1С и снизит вероятность ошибок связи.
Разберем, где искать нужные настройки:
FR.Department = 1, и налог подтянется автоматически.Если чеки печатаются, но не уходят в ОФД, причина обычно не в коде 1С, а в настройках связи кассы с интернетом. Проанализируем два основных способа решения:
Если у кассы есть физический разъем Ethernet, подключите её напрямую к роутеру. В настройках через Тест драйвера (Таблица 21) установите использование статического IP или DHCP. В этом случае касса будет отправлять данные автономно.
Если касса подключена к компьютеру через USB, необходимо настроить службу обмена данными (RNDIS). Посмотрим на этапы настройки:
Рассмотрим разницу между методами Sale и FNOperation. Хотя Sale все еще работает, компания Штрих-М рекомендует переходить на использование FNOperation для полной совместимости с ФФД 1.05 и выше. Этот метод изначально спроектирован под работу с признаками способа и предмета расчета, что делает код более прозрачным.
Также выясним, почему касса может издавать звуковой сигнал ("бип") при печати (как в сообщении 42). Обычно это сигнализирует о попытке записи в таблицу или передаче тега в момент, когда чек еще не открыт. Убедитесь, что метод OpenCheck() вызывается успешно до того, как вы начнете передавать FNSendTag().
Подводя итог, можно сказать, что связка 1С 7.7 и современного оборудования Штрих-М вполне жизнеспособна. Главное — следить за актуальностью DrvFR.dll и корректно передавать структуру тегов, требуемую законодательством.