Работа с торговым оборудованием в 1С:Предприятие часто сопряжена с техническими нюансами, которые могут привести к значительным задержкам в интерфейсе. Типичная ситуация для конфигурации «1С:Управление торговлей 10.3»: при попытке открыть «Чек ККМ», «Реализацию товаров и услуг» или кассовые ордера (ПКО, РКО) программа замирает на несколько минут. При этом, если отключить торговое оборудование в настройках, система начинает работать молниеносно. В данной статье мы подробно разберем, почему возникают такие «фризы», и как восстановить работоспособность кассового узла.
Как показывает практика, наиболее неочевидной причиной является работа систем защиты информации. Рассмотрим ситуацию: драйвер ККТ (например, АТОЛ) при инициализации или обращении к порту запускает определенные системные процессы или обращается к низкоуровневым библиотекам. Антивирус (например, Microsoft Security Essentials или другие аналоги) может интерпретировать это поведение как подозрительное.
Проанализируем механизм: антивирус блокирует или ставит на глубокую проверку процесс драйвера при каждом вызове из 1С. Поскольку 1С ожидает ответа от драйвера в синхронном режиме, весь интерфейс программы блокируется до тех пор, пока защитное ПО не «отпустит» процесс. Выясним, что добавление папок 1С и АТОЛ в исключения не всегда помогает. В некоторых случаях помогает только полная замена антивирусного решения на другое или его временное отключение для диагностики.
Разберем технический момент работы драйверов АТОЛ (особенно версий 8.х и 10.х). По умолчанию в настройках может быть включен подробный уровень записи логов. Если файл лога разрастается до огромных размеров (сотни мегабайт), каждое обращение 1С к кассе вызывает зависание, так как системе требуется время, чтобы дозаписать данные в конец гигантского текстового файла.
Для решения этой проблемы выполним следующие шаги:
%AppData%\Roaming\Atol или папка установки драйвера)..log (например, fptr10.log).Если ваша касса подключена через USB-кабель с эмуляцией COM-порта, операционная система Windows (особенно Windows 7 и 10) может принудительно «усыплять» порт для экономии энергии. Проанализируем ситуацию: 1С посылает запрос кассе, драйвер пытается «разбудить» порт, возникает задержка тайм-аута, что и проявляется как зависание.
Рассмотрим, как это исправить:
Иногда корень проблемы кроется в том, как именно 1С вызывает торговое оборудование. При открытии формы документа в УТ 10.3 происходит вызов процедур подключения оборудования. Если обработка обслуживания написана некорректно или версия драйвера не соответствует ожидаемой, процесс СоздатьОбъект или Подключить может выполняться крайне медленно.
Посмотрим на пример кода, который может помочь диагностировать место затыка через отладчик (в общем модуле ТОСервер или аналогичном):
// Фрагмент кода для замера времени подключения
НачалоПодключения = ТекущаяДата();
Результат = ОбъектДрайвера.Подключить();
КонецПодключения = ТекущаяДата();
Если КонецПодключения - НачалоПодключения > 5 Тогда
ЗаписьЖурналаРегистрации("Внимание! Долгое подключение ККТ", УровеньЖурналаРегистрации.Предупреждение);
КонецЕсли;
Если вы обнаружили, что зависание происходит именно в момент вызова метода Подключить(), попробуйте сменить версию драйвера (например, откатиться на стабильную 8.16 или обновиться до актуальной 10.х с заменой обработки обслуживания).
Современные онлайн-кассы передают данные в ОФД через тот же USB-кабель. Для этого используется служба EoU. Если эта служба работает нестабильно или пытается отправить «зависшие» чеки именно в момент вашего обращения из 1С, возникает конфликт за доступ к виртуальному COM-порту.
Выясним причину, временно отключив службу AtolEoUSrv в диспетчере задач. Если зависания прекратились, следует проверить настройки портов: для кассы (команды управления) и для передачи данных в ОФД (через EoU) должны быть назначены разные номера COM-портов в диспетчере устройств.
На некоторых конфигурациях Windows драйверы могут пытаться разрешить локальные адреса через протокол IPv6, что на старых операционных системах вызывает значительные паузы. Попробуем полностью отключить протокол IPv6 в свойствах сетевого адаптера на проблемном рабочем месте. Это часто решает проблемы с «задумчивостью» сетевых служб, с которыми взаимодействует драйвер ККТ.
Мы рассмотрели целый комплекс мер по устранению зависаний. Если вы столкнулись с подобным, рекомендуем действовать пошагово:
Совместное применение этих методов позволит добиться стабильной и быстрой работы кассового модуля в 1С:Управление торговлей 10.3.