Ситуация, когда касса в магазине внезапно начинает «тормозить» при пробитии чека, знакома многим системным администраторам и программистам 1С. Особенно остро проблема ощущается в моменты пиковых нагрузок или праздников, когда очередь из покупателей растет, а 1С «зависает» на минуту-две перед каждой операцией. Разберем, почему это происходит, проанализируем программный код и выясним, как решить проблему без радикального форматирования диска C:.
Проанализируем ситуацию, описанную пользователем. Задержка происходит в момент вызова стандартных механизмов БСП (Библиотеки стандартных подсистем) по работе с торговым оборудованием. Если внедрить логгирование внутрь конфигурации, выясняется, что «затык» происходит на строке:
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПоИдентификатору(
Новый ОписаниеОповещения("НачатьПодключениеОборудованиеПоИдентификаторуЗавершение", ЭтотОбъект, Оборудование),
УникальныйИдентификатор,
Оборудование
);
Этот метод является асинхронным. 1С пытается инициализировать драйвер ККТ, проверить связь с устройством и загрузить необходимые внешние компоненты. Если этот процесс занимает 60–120 секунд, значит, система ожидает тайм-аута от какого-то низкоуровневого процесса. Рассмотрим далее, что именно может вызывать такие задержки.
Это самая распространенная причина. Драйверы (особенно АТОЛ и Штрих-М) по умолчанию или после случайного изменения настроек могут записывать каждое действие в текстовый файл. За несколько месяцев активных продаж файл лога может вырасти до 5–10 ГБ.
Проанализируем механику: при каждом вызове НачатьПодключениеОборудованиеПоИдентификатору драйвер пытается открыть свой лог-файл для записи новой порции данных. Если файл огромен, операционная система тратит колоссальное время на позиционирование в конце файла или на его индексацию антивирусом.
Что нужно сделать:
%AppData%\Roaming\ATOL\drivers10\logs (для АТОЛ) или аналогичную папку в Program Files для других производителей..log.1С сохраняет используемые DLL-библиотеки драйверов в локальном профиле пользователя. Со временем там могут накапливаться конфликтующие версии или «битые» файлы, которые замедляют инициализацию через МенеджерОборудованияКлиент.
Выполним очистку кэша по шагам:
%AppData%\Local\1C\1Cv8\ExtCompT.%AppData%\Local\1C\1Cv8\ и %AppData%\Roaming\1C\1Cv8\ (папки с длинными буквенно-цифровыми именами).При следующем запуске 1С сама предложит установить драйвер (подтянет его из макета конфигурации или из папки установки), и инициализация пройдет значительно быстрее.
Если касса подключена по USB в режиме эмуляции COM-порта, Windows создает виртуальный порт. При смене разъемов или обновлении драйверов в системе накапливаются «фантомные» устройства. При вызове подключения 1С опрашивает дерево устройств, и наличие десятков неактивных портов вызывает задержку.
Проанализируем список устройств:
Современные драйверы ККТ часто работают через сетевой стек (даже если физически касса в USB, драйвер создает сетевой мост). При попытке подключения по адресу 127.0.0.1 или localhost, система сначала может пытаться разрешить адрес через протокол IPv6, что дает задержку в 30 секунд по тайм-ауту.
Решение: в настройках сетевого адаптера (и реального, и виртуального от кассы) снимите галочку «IP версии 6 (TCP/IPv6)». В самой 1С в настройках оборудования всегда указывайте явный IP-адрес 127.0.0.1 вместо имени компьютера localhost.
Иногда при инициализации торгового оборудования 1С обращается к системному списку принтеров. Если в системе установлен сетевой принтер, который в данный момент выключен, функция НачатьПодключение... будет ждать ответа от службы печати Windows до тех пор, пока не истечет время ожидания сетевого запроса.
Рассмотрим решение: удалите из раздела «Устройства и принтеры» все неиспользуемые принтеры, особенно те, что помечены как «Отключен» или являются сетевыми ресурсами из других офисов.
Пользователь форума отмечает, что помогает только «Формат С». Это подтверждает, что проблема кроется в реестре или профиле пользователя Windows. Если у вас нет времени на переустановку системы в разгар рабочего дня, воспользуйтесь «лайфхаком»:
Поскольку у нового пользователя будет чистый реестр, пустые папки AppData и отсутствие истории подключенных устройств, это практически эквивалентно переустановке системы для 1С, но занимает всего 5–10 минут. Это позволит быстро восстановить работу магазина.
Мы выяснили, что задержка в методе НачатьПодключениеОборудованиеПоИдентификатору чаще всего не связана с ошибками в самой УТ 11.3. Это классическая проблема взаимодействия 1С с внешней средой: логами драйверов, кэшем компонент и очередью печати Windows. Регулярная очистка логов и контроль за списком оборудования в диспетчере устройств позволят избежать ситуации, когда касса начинает «тормозить» в самый неподходящий момент.