При написании собственной обработки для взаимодействия с фискальными регистраторами (онлайн-кассами) через внешнюю компоненту Native API разработчики часто сталкиваются с ошибкой исключения: «Недостаточно фактических параметров» при попытке вызвать метод ОткрытьСмену. При этом подключение и тест связи с устройством проходят успешно.
Рассмотрим подробнее причины возникновения данной проблемы, разберем порядок передачи параметров в зависимости от используемого стандарта и проанализируем дополнительные нюансы работы с кассовым аппаратом (звуковые сигналы и проведение авансовых платежей).
Проанализируем ситуацию. Разработка взаимодействия с торговым оборудованием в 1С опирается на требования Библиотеки подключаемого оборудования (БПО). Фирма 1С периодически обновляет стандарты интеграции драйверов ККТ:
ОткрытьСмену принимает 4 параметра (Идентификатор устройства, Имя кассира, Выходной номер смены, Выходной номер документа).ОткрытьСмену расширен и ожидает 5 параметров (включая XML-пакеты параметров операции и состояние устройства).Если в коде обработки используется старый синтаксис вызова для более новой версии внешней компоненты (например, драйвера АТОЛ v9 или v10), компонент Native API выбрасывает ошибку о недостаточном количестве фактических параметров.
Вариант 1. Вызов метода для драйвера по спецификации 2.1
Если используется старая компонента или старый драйвер, вызов выглядит следующим образом:
НомерСмены = 0;
НомерДокумента = 0;
Кассир = "Иванов Иван Иванович";
// Передается 4 параметра
ККМ.ОткрытьСмену(IDУстройства, Кассир, НомерСмены, НомерДокумента);
Вариант 2. Вызов метода для драйвера по спецификации 2.2 (Интеграционная компонента v9/v10)
Для современной внешней компоненты необходимо формировать входящий XML-пакет операции и передавать 5 параметров в метод ОткрытьСмену:
ПараметрыОперации = МенеджерОборудованияВызовСервера.ПолучитьXMLПакетДляОперации(ВходныеПараметры);
ПараметрыСостояния = "";
НомерСмены = 0;
НомерДокумента = 0;
// Передается 5 параметров согласно формату 2.2
Результат = ККМ.ОткрытьСмену(IDУстройства, ПараметрыОперации, ПараметрыСостояния, НомерСмены, НомерДокумента);
Чтобы код был универсальным, рекомендуется проверять значение РевизияИнтерфейса кассового драйвера перед вызовом команд выполнения операций.
Часто после успешного выполнения команд открытия или закрытия смены аппарат издает повторяющиеся звуковые сигналы (например, 1 короткий писк перед печатью и 2 быстрых гудка после). Выясним основные причины такого поведения:
НЕФИСК.При приеме предоплаты или частичной оплаты от покупателя в кассовом чеке требуется правильно отражать наименование и объем номенклатуры. В случаях, когда продается неподелимый товар (например, двигатель или сложное оборудование), а покупатель вносит лишь часть суммы (аванс 30%), указывать дробное количество 0.30 не всегда корректно.
В такой ситуации рекомендуется указывать количество 1, а в качестве единицы измерения прописывать "платеж" или "услуга". Это позволяет выдать корректный кассовый чек при приеме денежных средств и избежать претензий со стороны контролирующих органов.