Возникла ситуация, когда после обновления прошивки фискального регистратора (ФР) Штрих-М до версии 1.2 стандартные методы взаимодействия с ним из 1С 7.7 перестали работать. В частности, метод Sale(), используемый для пробития позиций чека, вызывает ошибку. Рассмотрим по шагам, как решить эту проблему и адаптировать вашу конфигурацию 1С 7.7 для корректной работы с новым функционалом ФР, что является важной частью соответствия законодательству, как и общая настройка 54-ФЗ и онлайн-касс для нетиповых 1С 7.7.
Основная причина проблем с ФР Штрих-М после перехода на прошивку 1.2 заключается в изменении формата фискальных данных (ФФД) до версии 1.2. Это повлекло за собой необходимость использования новых методов для взаимодействия с фискальным регистратором. В частности, для пробития позиций чека вместо устаревшего метода Sale() теперь необходимо использовать метод FNOperation(). Это изменение специфично для Штрих-М, хотя пользователям других устройств также приходится решать вопросы интеграции, например, осуществляя встраивание ТС ПИоТ в 1с 7.7 для работы с кассой Атол (поможет модуль работы с ККТ Атол и Штрих-М для 1С 7.7).
Рассмотрим, как должен выглядеть код для пробития одной позиции товара:
ФискальныйРегистратор.StringForPrinting = Наим;
ФискальныйРегистратор.Price = ПредстЦена;
ФискальныйРегистратор.Quantity = ОбрДок.Количество;
ФискальныйРегистратор.Summ1Enabled = 1;
ФискальныйРегистратор.Summ1 = ПредстЦена * ОбрДок.Количество;
ФискальныйРегистратор.PaymentTypeSign = 4; // Признак способа расчета (например, 4 - полный расчет)
ФискальныйРегистратор.PaymentItemSign = ВернутьПризнакПредметаРасчета(ОбрДок.КТН, ОбрДок.Номенклатура.Подакциз);
ФискальныйРегистратор.MeasureUnit = 0; // Мера количества
ФискальныйРегистратор.DivisionalQuantity = 0; // Без дробного количества
Рез = ФискальныйРегистратор.FNOperation();
Обратите внимание, что необходимо корректно устанавливать такие параметры, как PaymentTypeSign (признак способа расчета) и PaymentItemSign (признак предмета расчета), особенно если ваша деятельность связана с маркировкой или подакцизными товарами — для этого есть решение для поддержки ФФД 1.2 и маркировки в 1С 7.7. Хотя автор темы не нуждался в маркировке, эти параметры являются частью современного ФФД 1.2.
Аналогично изменению метода пробития позиций, были обновлены и методы для работы со сменами и чеками. Вместо прежних OpenCheck() и CloseCheck() используем следующие:
FNBeginOpenSession() совместно с FNOpenSession(). Похожий подход к управлению сессиями применяется, когда реализуется печать фискального чека WebCheck для 1с 7.7 ТиС, Бух. Перед этим целесообразно проверить текущий режим работы ФР.FNCloseCheckEx(). Этот метод позволяет получить дополнительную информацию, например, сумму сдачи.Давайте посмотрим на пример кода для работы со сменой и чеком:
Прежде чем начать работу, всегда рекомендуется проверить текущий статус фискального регистратора. Это поможет избежать ошибок и корректно обработать незакрытые чеки или превышенные смены.
ФискальныйРегистратор.Password = глПользователь.ПарольККТ; // Устанавливаем пароль
Рез = ФискальныйРегистратор.GetECRStatus();
// Если есть незакрытый чек, его необходимо аннулировать
Если ФискальныйРегистратор.ECRMode = 8 Тогда
Подрежим = ФискальныйРегистратор.ECRAdvancedMode;
ФискальныйРегистратор.CancelCheck();
Сообщить("Аннулирован незакрытый чек");
ИначеЕсли ФискальныйРегистратор.ECRMode = 3 Тогда // Смена превысила 24 часа
Если Вопрос("Смена превысила 24 часа!" + РазделительСтрок + "Снять Z-отчет?", "Да+Нет") = "Нет" Тогда
Предупреждение("Дальнейшая работа с ККМ невозможна!");
Возврат;
Иначе
ЗакрытиеСмены(); // Ваша процедура для закрытия смены, которая включает снятие Z-отчета
КонецЕсли;
КонецЕсли;
// Если смена закрыта (режим 4), открываем новую
Если ФискальныйРегистратор.ECRMode = 4 Тогда
ФискальныйРегистратор.FNBeginOpenSession();
// Возможность добавления тегов, например, ИНН сотрудника при открытии смены
Если СокрЛП(глПользователь.Сотрудник.ИНН) <> "" Тогда
ФискальныйРегистратор.TagNumber = 1203;
ФискальныйРегистратор.TagType = 7;
ФискальныйРегистратор.TagValueStr = СокрЛП(глПользователь.Сотрудник.ИНН);
ФискальныйРегистратор.FNSendTag();
КонецЕсли;
Рез = ФискальныйРегистратор.FNOpenSession(); // Открываем смену
КонецЕсли;
После пробития всех позиций товара необходимо закрыть чек и обработать оплату.
В примере показана оплата наличными. Метод FNCloseCheckEx() возвращает сумму сдачи.
// Устанавливаем тип чека (0 - приход)
ФискальныйРегистратор.CheckType = 0;
// ... (здесь будет цикл с ФискальныйРегистратор.FNOperation() для каждого товара) ...
// Устанавливаем суммы оплаты по различным типам (здесь наличные - Summ1)
ФискальныйРегистратор.Summ1 = Окр(Получено,2,1); // Получено - общая сумма, принятая от покупателя
ФискальныйРегистратор.Summ2 = 0;
ФискальныйРегистратор.Summ3 = 0;
// ... (остальные суммы Summ4-Summ16 по типам оплаты обнуляем или заполняем при необходимости) ...
ФискальныйРегистратор.RoundingSumm = 0; // Сумма округления
// Устанавливаем систему налогообложения для чека
ФискальныйРегистратор.TaxType = ОбрДок.Касса.СНО;
ФискальныйРегистратор.StringForPrinting = " "; // Важно: без этого может напечатать повторно последнюю строку наименования товара
// Закрываем чек
Рез = ФискальныйРегистратор.FNCloseCheckEx();
// Получаем сумму сдачи
ВыданаСдача = ФискальныйРегистратор.Change;
// ... (дальнейшая обработка ошибок, фиксация результатов в программе) ...
Для корректной работы с прошивкой 1.2 и ФФД 1.2 необходимо убедиться, что у вас установлены актуальные версии драйверов ККТ и соответствующих внешних компонент 1С. Если же работа с "железными" ФР вызывает слишком много сложностей, альтернативой могут стать программные решения (поможет обработка печати чеков на ККТ Штрих-М), для которых существуют готовые обработки обслуживания для "ВебЧек: Программный регистратор расчетных операций" (ПРРО).
DrvFR.dll, DrvFR.lic и Models.xml. Эти файлы должны находиться в папке BIN каталога 1С. Для более новых драйверов может использоваться компонент SMDrvFR1CLib24.dll с программным идентификатором SMDrvFR1C22.shtrihfr_comm.ert), которые содержат необходимый набор функций для работы с драйвером ККТ. Размещайте их в папке <Информационная база>\ExtForms\Equip.После установки драйверов и обновления кода необходимо выполнить ряд настроек:
В процессе адаптации кода вам, вероятно, понадобится отладчик. Выясним, что на современных операционных системах, таких как Windows 10 или 11, отладчик 1С 7.7 может работать некорректно, постоянно теряя фокус. Это доставляет значительные неудобства.
Существуют несколько способов облегчить отладку:
1cv7.exe) в режиме совместимости с более старой версией Windows, например, Windows XP Service Pack 3 или Windows 7. Это может улучшить стабильность работы отладчика и других компонентов платформы.Надеемся, эти рекомендации помогут вам успешно адаптировать вашу систему 1С 7.7 для работы с ФР Штрих-М на прошивке 1.2 — для этого подойдёт обработка управления кассами Штрих ФФД 1.2 для 1С 7.7.