Каждый владелец розничного магазина или системный администратор рано или поздно сталкивается с ситуацией, когда работа на кассовом узле начинает замедляться. Но задержка при печати чека ККМ длительностью в 5–7 минут — это критическая проблема, которая полностью парализует продажи, собирает очереди и генерирует убытки. Особенно остро эта проблема проявляется на рабочих местах кассиров (РМК), которые подключаются к информационной базе по локальной сети через общий сетевой диск (протокол SMB).
В этой статье мы подробно проанализируем ситуацию, выясним скрытые технические причины такого поведения системы 1С:Предприятие 8 и ККТ «Штрих-М» (или «Ритейл-01Ф»), а также разберем по шагам эффективные методы устранения этой неисправности.
Если ваша база данных 1С находится в файловом режиме (файл 1Cv8.1CD лежит на одном из компьютеров, а остальные машины подключаются к нему через «сетевой диск»), то при пробитии чека вы неизбежно столкнетесь с проблемой сетевых блокировок.
Проанализируем, что происходит в системе в момент нажатия кнопки «Пробить чек»:
Документ.ЧекККМ.Как решить эту проблему?
Единственным надежным архитектурным решением здесь является полный отказ от использования сетевых дисков (файлового доступа по сети). Вместо этого мы рекомендуем выполнить публикацию информационной базы на веб-сервере:
http://192.168.1.100/roznica).При таком подходе вся работа с файлом базы данных происходит локально на основном компьютере силами веб-сервера. Клиентские компьютеры обмениваются только легкими пакетами данных, что исключает сетевые блокировки файловой базы и ускоряет работу РМК в разы.
Замер производительности в 1С часто показывает, что при пробитии чека львиная доля времени уходит на выполнение запроса к таблице чеков. Почему система начинает «лопатить» всю базу данных, даже если в текущем чеке нет маркированной продукции или алкоголя?
Дело в том, что в современных релизах конфигурации 1С:Розница (начиная с версий 2.2.13 и выше) глубоко под капотом Библиотеки подключаемого оборудования (БПО) зашит механизм проверки кодов маркировки и акцизных марок. Перед формированием XML-пакета для ККТ система пытается определить, не продавался ли этот товар ранее. Для этого она выполняет тяжелый поисковый запрос по всей таблице Документы.ЧекиККМ без ограничения периода.
Если база данных работает несколько лет, объем таблицы чеков становится колоссальным, и на файловой базе этот запрос просто «вешает» систему. Для решения этой проблемы выполним следующие действия:
1. Свертка информационной базы (Архивация чеков)
Нам необходимо уменьшить физический объем таблицы ЧекиККМ. Для этого в программе предусмотрен штатный механизм свертки или архивации чеков ККМ за прошлые периоды. Разберем по шагам, как запустить этот процесс:
2. Программная корректировка (для специалистов)
Если у вас есть штатный программист 1С, мы можем ограничить глубину поиска маркированного товара в коде конфигурации. Рассмотрим пример модификации поискового запроса. Вместо сканирования всей таблицы документов, добавим жесткое ограничение по дате (например, проверять только за последние 30 дней):
// Пример ограничения выборки в запросе проверки марок
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЧекиККМ.Ссылка КАК Ссылка
|ИЗ
| Документ.ЧекККМ КАК ЧекиККМ
|ГДЕ
| ЧекиККМ.Дата >= &ГраницаДаты
| И ЧекиККМ.Проведен = ИСТИНА";
Запрос.УстановитьПараметр("ГраницаДаты", ДобавитьМесяц(ТекущаяДата(), -1)); // Ограничиваем глубину поиска 1 месяцем
Такая несложная доработка кода полностью убирает пятиминутные зависания при подготовке чека к печати.
Когда ККТ «Штрих-М» или «Ритейл» подключена по протоколу TCP/IP, критически важную роль играют параметры связи, прописанные в самом драйвере кассы.
Часто в настройках сетевого подключения ККТ устанавливается слишком маленький параметр «Таймаут ожидания байта» (Byte Timeout). По умолчанию он может быть равен 100–150 мс. При отправке тяжелого чека по сети (особенно если параллельно идет сетевой обмен файловой базы 1С) пакеты данных ККТ задерживаются. Драйвер, не получив вовремя байт ответа от кассы, считает связь разорванной и уходит в бесконечный цикл повторных опросов устройства. Это визуально выглядит как глухое зависание 1С.
Выясним, как правильно настроить драйвер «Штрих-М»:
Еще один скрытый виновник зависаний при печати — встроенный антивирус Windows 10/11. В момент подготовки чека программа 1С активно создает временные файлы во временной директории пользователя (каталог Temp), а также обращается к логам и файлу базы данных 1Cv8.1CD через сеть.
Защитник Windows пытается сканировать каждый измененный или созданный временный файл «на лету», блокируя к нему доступ для платформы 1С. В условиях сетевой работы файловой базы это парализует дисковый ввод-вывод.
Что необходимо сделать:
1cv8.exe и 1cv8c.exe.%LocalAppData%\1C и %AppData%\1C).drvfr.dll, smscatest.exe и другие файлы из каталога установки драйвера «Штрих-М»).Подведем итог. Чтобы навсегда избавиться от задержки печати чеков и взаимных блокировок кассиров, выполним комплекс процедур в следующем порядке:
Выполнение этих шагов гарантирует мгновенную печать чеков и стабильную, бесперебойную работу вашего магазина.