Как скрыть прогресс-бар автообмена между 1С:Розница 1.0 и 1С:УТ 10.3, чтобы он не закрывал РМК?

Программист 1С v8.3 (Обычные формы) 1С:Розница Торговля и дистрибуция
← На главную

При частой синхронизации данных между конфигурациями 1С:Управление торговлей 10.3 и 1С:Розница 1.0 кассиры регулярно сталкиваются с неприятным поведением системы: каждые несколько минут поверх полноэкранного режима рабочего места кассира (РМК) открывается диалоговое окно или шкала прогресса синхронизации. В этот момент интерфейс блокируется, фокус ввода с кассового экрана теряется, а кассир не может сканировать товары или пробивать чеки до окончания обмена.

Проанализируем техническую причину такого поведения и подробно разберем все способы решения проблемы, позволяющие сделать обмен полностью прозрачным для пользователя.

Почему возникает блокировка интерфейса кассира

Конфигурация «1С:Розница 1.0» разработана на обычных (неуправляемых) формах. В файловом режиме работы регламентные процедуры и периодические обмены по таймеру запускаются в рамках текущего клиентского сеанса через обработчик ожидания. Поскольку клиентский сеанс на обычных формах работает синхронно в одном потоке, выполнение процедур обмена (ОбменДаннымиXML, сериализация и десериализация данных) перехватывает управление.

При вызове системных процедур визуализации хода выполнения или стандартных диалогов шкала прогресса (прогресс-бар) принудительно отображается на экране. Если кассир работает в полноэкранном окне РМК, появление диалогового окна сворачивает форму кассы либо отбирает фокус, что парализует работу торговой точки.

Способ 1. Автоматический запуск служебного сеанса через BAT-файл и Планировщик Windows

Самый надежный способ решить проблему без вмешательства в программный код конфигурации — полностью исключить запуск обмена из сеанса кассира и перенести его в отдельный служебный сеанс.

Разберем по шагам, как автоматизировать этот процесс, чтобы исключить человеческий фактор и забывчивость персонала:

  1. Создадим отдельного пользователя в 1С:Рознице. Назовем его, например, РоботОбмена. В его правах настроим выполнение обмена, но отключим автоматический запуск интерфейса РМК при входе в систему.
  2. Отключим автообмен у пользователя-кассира. В настройках пользователя или учетной записи кассира снимем флаги выполнения регламентного обмена по расписанию внутри сеанса.
  3. Настроим командный BAT-файл для одновременного запуска. Создадим скрипт, который при старте кассового компьютера будет запускать сразу два экземпляра 1С: один для кассира с РМК, второй — свернутый в фоновом режиме для выполнения обмена.
  4. Добавим сценарий периодического обмена в Планировщик задач Windows. Если постоянная работа второго сеанса нежелательна, настроим запуск 1С по таймеру (каждые 10 минут) с автоматическим завершением работы после выполнения обмена. Для этого можно передавать параметр командной строки /C или использовать ключ запуска внешней обработки /Execute.

Способ 2. Инициация обмена со стороны «УТ 10.3» через прямое COM-подключение

Если кассовый узел и сервер «Управления торговлей» находятся в единой локальной сети или связаны через стабильный VPN-канал, оптимально перенести инициативу обмена на сторону управляющей базы.

Рассмотрим, как работает эта схема:

  1. В базе «1С:УТ 10.3» настраиваем узел обмена с подключением к информационной базе «Розницы» через COM-соединение (объект V82.COMConnector или V83.COMConnector в зависимости от используемой версии платформы).
  2. Регламентное задание по расписанию запускается исключительно на стороне УТ.
  3. «Управление торговлей» удаленно подключается к файловой базе «Розницы», считывает накопленные изменения и загружает новые данные в фоновом режиме.

При таком подходе в работающем сеансе РМК не вызываются визуальные методы отображения хода процесса, благодаря чему кассир продолжает непрерывно регистрировать продажи без задержек и потери фокуса окна.

Способ 3. Программная доработка типовых процедур вывода прогресса

Если требуется сохранить запуск автообмена из существующего сеанса кассира, можно внести точечные изменения в конфигурацию, отключив визуальные элементы обмена при активном окне РМК.

Разберем доработку по шагам:

  1. В общем модуле или модуле обработки обмена данными найдем процедуры, отвечающие за инициализацию шкалы состояния (вызовы функции Состояние(), отображение модальных окон и диалогов ожидания).
  2. Добавим проверку режима выполнения: если процедура вызвана обработчиком ожидания либо текущим активным интерфейсом является РМК, вызовы диалоговых форм и методов визуализации хода процесса блокируются.
  3. Дополнительно можно перенести момент запуска синхронизации с жесткого таймера (каждые 10 минут) на технологические паузы в работе кассира: при закрытии чека, открытии или закрытии кассовой смены, либо по нажатию специальной сервисной кнопки в РМК в момент отсутствия очереди.

Способ 4. Перевод базы «Розницы» в клиент-серверный режим (SQL)

При использовании клиент-серверного варианта информационной базы регламентные задания выполняются службой кластера серверов «1С:Предприятия» полностью в фоновом режиме на сервере.

В этом случае сеанс кассира не нагружается обработкой очередей обмена, а визуальные элементы синхронизации принципиально не могут появиться на клиенте, так как серверный процесс не взаимодействует с графической оболочкой операционной системы.

← На главную