Как подключить две и более кассы АТОЛ (ДТО 10) к одной базе 1С 7.7 «Торговля и склад»?

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

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

Анализ проблемы и архитектуры

В типовых и доработанных конфигурациях 1С 7.7 настройки оборудования часто хранятся в файле 1cRozn.txt, а драйверы подключаются через глобальные переменные. Проблема заключается в том, что при попытке работы с двумя разными кассами система всегда обращается к последнему настроенному экземпляру. Для успешной реализации нам необходимо перейти от «глобального» подхода к динамическому созданию экземпляров драйвера.

Решение 1: Динамическая инициализация драйвера под организацию

Наиболее надежный метод — отказаться от использования глобального объекта ФР и переписать логику формирования чека. Мы предлагаем привязывать параметры подключения (COM-порт, параметры связи) не к общему файлу конфигурации, а к конкретному справочнику Фирмы или Кассы.

Шаги реализации:

  1. Добавьте в справочник Фирмы дополнительные реквизиты: ПортККМ, СкоростьККМ, Таймаут.
  2. В функции, отвечающей за печать чека, вместо использования готовой глобальной переменной, создавайте объект драйвера программно на лету.

Рассмотрим пример программной инициализации объекта Fptr10:


Процедура ПробитьЧек(ДокументСсылка)
    // Получаем параметры из текущей фирмы
    Порт = ДокументСсылка.Фирма.ПортККМ;
    
    // Создаем объект драйвера
    ФР = СоздатьОбъект(\"AddIn.Fptr10\");
    
    // Настраиваем подключение
    ФР.setSingleSetting(ФР.LIBFPTR_SETTING_MODEL, String(ФР.LIBFPTR_MODEL_ATOL_AUTO));
    ФР.setSingleSetting(ФР.LIBFPTR_SETTING_PORT, String(Порт));
    ФР.applySingleSettings();
    
    ФР.Open();
    // Дальнейшая логика формирования чека
    ФР.Close();
КонецПроцедуры

Решение 2: Использование Веб-сервера АТОЛ

Если прямое управление портами из 1С вызывает сложности, можно воспользоваться официальным веб-сервером АТОЛ (Fptr web server). Это промежуточное ПО, которое устанавливается локально и «слушает» запросы через HTTP-протокол.

Преимущества данного метода:

Важные рекомендации по настройке Windows

При работе с несколькими USB-устройствами критически важно обеспечить стабильность портов. Windows имеет свойство менять номера COM-портов при переподключении устройств в другие USB-разъемы.

  1. Используйте активные USB-хабы с качественным питанием, чтобы избежать «отвалов» ККТ.
  2. В Диспетчере устройств Windows принудительно зафиксируйте номера портов для каждого устройства (свойства порта -> параметры порта -> дополнительно).
  3. Убедитесь, что каждый фискальный накопитель (ФН) в кассе соответствует именно той организации, от которой печатается чек. Печать чека одной фирмы на кассе другой фирмы является серьезным нарушением законодательства.

Заключение

Для корректной работы двух и более ККМ в среде 1С 7.7 мы рекомендуем не пытаться «обмануть» типовой механизм, а модифицировать процедуру глФР. Использование локальных экземпляров драйвера AddIn.Fptr10 с динамической загрузкой настроек из реквизитов организации — это профессиональный и наиболее устойчивый способ решения задачи. Этот подход исключает конфликты оборудования и позволяет легко расширять список касс в будущем.

← На главную