При интеграции кассового оборудования АТОЛ с устаревшими или кастомизированными конфигурациями 1С:Управление торговлей, редакция 10.3, специалисты часто сталкиваются с критической ошибкой: Метод объекта не обнаружен (ПолучитьНомерВерсии). Эта проблема обычно проявляется в момент открытия параметров торгового оборудования или при попытке пробития чека. В данной статье мы подробно разберем природу этой ошибки, проанализируем причины ее возникновения и рассмотрим пошаговые алгоритмы ее устранения.
Первым делом проанализируем ситуацию с технической точки зрения. Компания АТОЛ, начиная с 10-й версии своих драйверов (DTO 10), перешла на новый стандарт разработки компонентов — Native API. В процессе развития драйвера, начиная с ревизии 3002, разработчики АТОЛ провели оптимизацию программного интерфейса (API). В рамках этого обновления старый метод ПолучитьНомерВерсии(), который использовался библиотеками 1С для идентификации драйвера, был полностью удален.
Вместо него был введен универсальный метод ПолучитьОписание(), который возвращает всю необходимую информацию о компоненте в формате XML-структуры. Проблема заключается в том, что старые релизы УТ 10.3 и устаревшие внешние обработки обслуживания (ATOLkkt.epf) продолжают обращаться к методу, которого в новых библиотеках физически не существует. Разберем, как исправить это несоответствие.
Самый правильный и надежный метод — это приведение программной среды в соответствие с современными требованиями. Рассмотрим этот процесс по шагам:
ПодключаемоеОборудованиеУниверсальныйДрайверКлиент) будут содержать устаревший код.ATOLkkt.epf версии не ниже 3.04.
TradeWareEpf).Иногда даже после обновления конфигурации ошибка сохраняется. Проанализируем ситуацию: это происходит из-за того, что 1С хранит ранее распакованные библиотеки драйверов в локальном кэше пользователя. Выясним, как выполнить глубокую очистку:
Закроем все сеансы 1С:Предприятие и перейдем в каталог профиля пользователя Windows. Нам необходимо полностью удалить содержимое следующей папки:
%USERPROFILE%\AppData\Roaming\1C\1cv8\ExtCompT
Также рекомендуется очистить временные файлы в папке:
%USERPROFILE%\AppData\Local\Temp\1C...
При следующем запуске 1С и обращении к ККТ, система заново распакует актуальную библиотеку из макета обработки обслуживания, и обращение к методам будет происходить корректно.
Если ваша конфигурация сильно доработана и обновление до актуального релиза невозможно (удобно через модуль подключения касс АТОЛ без обновления конфигурации), разберем, как внести исправления вручную через Конфигуратор. Нам нужно найти место вызова проблемного метода и заменить его на безопасную конструкцию.
Рассмотрим пример кода, который необходимо внедрить в общий модуль ПодключаемоеОборудованиеУниверсальныйДрайверКлиент или непосредственно в модуль обработки ATOLkkt.epf:
Попытка
// Сначала пробуем вызвать новый метод, актуальный для DTO 10
ОписаниеДрайвера = ОбъектДрайвера.ПолучитьОписание();
// Логика парсинга XML описания для получения версии
Исключение
// Если метод не найден, пробуем старый вариант для совместимости
Попытка
ВерсияДрайвера = ОбъектДрайвера.ПолучитьНомерВерсии();
Исключение
ТекстОшибки = "Не удалось определить версию драйвера: " + ОписаниеОшибки();
КонецПопытки;
КонецПопытки;
Такой подход обеспечивает универсальность: ваша программа сможет работать как со старыми версиями драйверов (9.x), так и с новейшими ревизиями 10-й серии. Чтобы подключить современный драйвер без ручной правки конфигурации, можно использовать обработку обслуживания для подключения касс АТОЛ на ДТО 10 в УТ 10.3.
Важно помнить, что 1С:Управление торговлей 10.3 работает в режиме обычного приложения. В подавляющем большинстве случаев это 32-битный процесс (x86). Посмотрим на типичную ошибку: установка 64-битного драйвера АТОЛ на 64-битную Windows для 32-битной 1С.
Проанализируем правила совместимости:
fptr10.dll зарегистрирована в системе через regsvr32.Хотя ошибка ПолучитьНомерВерсии является программной ошибкой на уровне взаимодействия "1С — Драйвер", она часто идет рука об руку с проблемами прошивки самой кассы. Рассмотрим ситуацию: вы исправили код, 1С "увидела" драйвер, но при попытке пробить чек возникает ошибка -3800 или Ошибка программирования реквизита.
Это происходит потому, что новые драйверы (10.6.x - 10.10.x) требуют актуального внутреннего ПО кассы. Проанализируем минимальные требования к прошивке:
После обновления прошивки и исправления методов в 1С, стабильность работы связки оборудования будет максимальной.
Подведем итог: для решения проблемы "Метод объекта не обнаружен (ПолучитьНомерВерсии)" в УТ 10.3 необходимо в первую очередь обновить обработку обслуживания ATOLkkt.epf и очистить кэш внешних компонент. Если это не помогает, следует обновить конфигурацию до релиза 10.3.55+ или внести изменения в код через конструкцию Попытка...Исключение, заменив вызов на метод ПолучитьОписание().