Как настроить работу нескольких ККМ АТОЛ в 1С 7.7 через RDP

Программист 1С v7.7 Управленческий учет Торговля и дистрибуция
← На главную

Переход на онлайн-кассы по стандарту 54-ФЗ в среде устаревших конфигураций 1С 7.7 создает ряд технических вызовов, особенно если работа ведется в терминальном режиме (через RDP). Основная задача заключается в том, чтобы научить систему различать кассовые аппараты, находящиеся в разных городах, и обеспечить бесконфликтную работу нескольких пользователей с одной базой данных. Разберем подробно, как реализовать эту схему на примере популярных касс АТОЛ 30Ф.

Индивидуальная настройка торгового оборудования для каждого пользователя

Первое, что нам необходимо осознать: в 1С 7.7 (в частности, в типовой конфигурации «Торговля и Склад») настройки торгового оборудования зачастую привязаны к конкретному сеансу пользователя. Проанализируем механизм хранения этих данных. В отличие от современных версий 1С, где существует справочник «Подключаемое оборудование», в 7.7 параметры подключения (номер COM-порта, модель, скорость) сохраняются либо во внешних файлах настроек, либо в реестре Windows в ветке конкретного пользователя HKEY_CURRENT_USER.

Рассмотрим по шагам, как настроить оборудование для разных городов:

  1. Проброс портов: Для каждого удаленного пользователя необходимо настроить проброс локального COM-порта в RDP-сессию. Если касса подключена к локальному ПК через USB, она определяется как виртуальный COM-порт. В настройках RDP-клиента (вкладка «Локальные ресурсы») нужно отметить пункт «Порты».
  2. Использование fdsvc: Если стандартный проброс портов работает нестабильно (что не редкость для RDP), рассмотрим альтернативу — использование службы fdsvc (Frontol Device Service) или веб-сервера драйвера АТОЛ 10. В этом случае в настройках 1С указывается не номер порта, а IP-адрес удаленного компьютера и номер TCP-порта.
  3. Параметры в 1С: При подключении из разных городов каждый пользователь заходит под своим логином. Нам нужно открыть форму настройки торгового оборудования в меню «Сервис» и указать параметры именно той кассы, которая стоит рядом с пользователем. Благодаря тому, что RDP создает изолированную среду для каждого пользователя, эти настройки не будут перезаписывать друг друга.

Разделение каталогов и устранение конфликтов XML-файлов

Важной проблемой при работе в терминале является использование временных файлов для формирования чека. Многие обработки обслуживания 1С 7.7 используют промежуточный XML-файл, который передается драйверу. Если несколько пользователей одновременно нажмут кнопку «Пробить чек», может возникнуть ситуация, когда один файл будет занят несколькими процессами. Выясним, как этого избежать.

Проанализируем типичную ошибку в коде обработок обслуживания. Часто путь к файлу жестко прописан или берется из общего каталога. Для решения проблемы нам необходимо принудительно использовать КаталогПользователя(). Рассмотрим пример кода, который гарантирует уникальность файла:


// Определяем путь к уникальному файлу для текущего пользователя
ПутьКФайлуЧека = КаталогПользователя() + "atol_check_data.xml";

// Пример формирования структуры чека через XML
Если ФС.СуществуетФайл(ПутьКФайлуЧека) = 1 Тогда
    ФС.УдалитьФайл(ПутьКФайлуЧека);
КонецЕсли;

// Дальнейшая логика записи XML в файл
// ...
// Загрузка сформированного файла в драйвер
АдоДБСтрим.LoadFromFile(ПутьКФайлуЧека);

Важный момент: Убедитесь, что в настройках пользователей 1С (в конфигураторе) для каждого сотрудника прописан индивидуальный «Каталог пользователя». Если это поле оставить пустым, временные файлы будут создаваться в каталоге базы данных, что неизбежно приведет к ошибкам при одновременной печати.

Особенности драйверов АТОЛ и передача данных в ОФД

При использовании АТОЛ 30Ф мы сталкиваемся с необходимостью передачи данных в ОФД через службу EoU (Ethernet over USB). Посмотрим на специфику настройки в RDP:

Если служба EoU запущена на RDP-сервере, она может пытаться занять проброшенные COM-порты всех пользователей сразу, что вызовет ошибку «Порт занят». Проанализируем два способа решения этой задачи:

  1. Локальная отправка: Настройте службу EoU на локальных компьютерах в городах. В этом случае касса сама будет отправлять данные в интернет, минуя RDP-канал для ОФД. 1С на сервере будет использовать только один порт (для команд), а второй порт (для данных) будет обслуживаться локально. Это самый стабильный вариант.
  2. Увеличение таймаутов: Работа через RDP всегда вносит задержки в передачу пакетов. В настройках драйвера ККТ (DTO) обязательно увеличим параметр Таймаут до 5000–10000 мс. Это предотвратит обрыв связи, если интернет-канал на мгновение «просядет».

Доработка типовой конфигурации «Торговля и Склад»

Рассмотрим ситуацию, когда стандартных средств настройки недостаточно. В 1С 7.7 справочник «Кассы» часто не содержит привязки к конкретному оборудованию. Чтобы сделать работу прозрачной, мы можем добавить в справочник «Кассы» или «Пользователи» дополнительный реквизит, в котором будет храниться идентификатор рабочего места.

Для идентификации в коде удобно использовать системную переменную CLIENTNAME, которая в RDP-сессии содержит имя удаленного компьютера. Выясним, как ее получить:


// Получаем имя клиентской машины в терминальной сессии
КомандаСистемы = СоздатьОбъект("WScript.Shell");
ИмяКлиента = КомандаСистемы.ExpandEnvironmentStrings("%CLIENTNAME%");

Если ПустаяСтрока(ИмяКлиента) = 1 Тогда
    // Если работаем не в RDP, берем обычное имя компьютера
    ИмяКлиента = ИмяКомпьютера();
КонецЕсли;

Сообщить("Вы подключены с рабочего места: " + ИмяКлиента);

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

Использование драйверов 10-й версии

Современным и наиболее правильным подходом является отказ от старых COM-объектов в пользу драйверов АТОЛ 10.x. Эти драйверы поддерживают работу через JSON-запросы и могут функционировать как веб-сервис. Разберем преимущества этого метода:

Для реализации этого метода в 1С 7.7 потребуется внешняя компонента (например, AddIn.AtolKKM_10), которую нужно зарегистрировать на сервере. После этого работа с кассой превращается в отправку структурированного текста, что значительно упрощает отладку и поддержку системы в нескольких городах одновременно.

Подведем итог: Работа 1С 7.7 с несколькими ККТ в RDP вполне возможна. Главное — обеспечить изоляцию настроек через индивидуальные учетные записи, правильно распределить временные файлы по каталогам пользователей и, по возможности, использовать современные методы связи через IP-протокол, чтобы минимизировать влияние нестабильности RDP на процесс печати чеков.

← На главную