При настройке торгового оборудования и печати фискальных чеков из документов (например, из Приходного кассового ордера) в конфигурации «1С:Бухгалтерия предприятия 2.0» разработчики и администраторы могут столкнуться с платформенной ошибкой: «Слишком много фактических параметров». Разберем причины возникновения этой проблемы и способы ее устранения.
Рассмотрим, почему возникает данная ошибка. При вызове метода внешней компоненты драйвера ККТ платформа 1С сверяет количество аргументов, передаваемых из кода, с сигнатурой метода, зарегистрированной во внешней библиотеке (DLL).
В старых версиях драйверов АТОЛ (например, АТОЛ 8.х) и обработки обслуживания ATOLkkt.epf метод СформироватьЧек принимал 8 параметров, среди которых явным образом передавалось имя кассира:
Результат = ОбъектДрайвера.СформироватьЧек(ПараметрыПодключения.ИДУстройства, Кассир, Электронно,
ДанныеЧека, НомерЧека, НомерСмены, ФискальныйПризнак, АдресСайтаПроверки);
Однако при переходе на новые версии драйверов (например, АТОЛ 9.х или 10.х) сигнатура функций работы с чеками изменилась. В драйвере 9.х ФИО и ИНН кассира передаются непосредственно внутрь структуры XML-пакета ДанныеЧека (теги CashierName и CashierINN), а отдельный параметр Кассир из вызова метода был убран. В результате обновленный метод принимает меньше параметров.
Если обработка обслуживания пытается вызывать метод драйвера по старому образцу с 8 параметрами, платформа 1С генерирует исключение «Слишком много фактических параметров».
Проанализируем вариант исправления вызова метода в коде обработки обслуживания. Если в системе используется драйвер версии 9.х, необходимо изменить вызов метода и убрать из него передачу кассира отдельным аргументом.
Посмотрим на пример вызова метода ProcessCheck:
Результат = ОбъектДрайвера.ProcessCheck(ПараметрыПодключения.ИДУстройства, Электронно,
ДанныеЧека, НомерЧека, НомерСмены, ФискальныйПризнак, АдресСайтаПроверки);
Выясним важный момент: при удалении аргумента Кассир из вызова функции убедитесь, что данные кассира корректно формируются внутри XML-структуры ДанныеЧека, иначе они не отобразятся в фискальном чеке.
Если доработка кода вручную не требуется, разберем альтернативные шаги по решению проблемы:
ATOLkkt.epf), в параметрах подключения ККМ должен быть указан драйвер АТОЛ 8.х, а не 9.х.%TEMP% и кэш 1С, чтобы заставить платформу загрузить актуальную версию библиотеки.