Как настроить ТС ПИоТ и ЛМ Честный ЗНАК на терминальном сервере для работы с множеством касс?

Системный администратор 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

С внедрением обязательного разрешительного режима для маркированных товаров многие компании столкнулись с архитектурной сложностью: как подружить современное требование «одна касса — один экземпляр ТС ПИоТ» с классической схемой работы через терминальный сервер (RDP) — для этого есть модуль печати чеков через RDP и VPN с поддержкой маркировки. В данной статье мы подробно разберем, как реализовать стабильную работу системы, когда у вас есть один центральный сервер с 1С и десятки удаленных магазинов с кассовыми аппаратами, подключенными по TCP/IP.

Анализ проблемы: почему стандартная установка не подходит

Традиционная установка Локального модуля (ЛМ) и Технического средства проверки изделий (ТС ПИоТ) рассчитана на локальный компьютер, к которому подключена одна касса. В терминальной среде 1С запускается в разных сеансах на одном сервере. Если установить один экземпляр ТС ПИоТ, он сможет обслуживать только одно соединение с конкретным фискальным накопителем (ФН). Прямая попытка подключить 30 касс к одному модулю приведет к конфликтам доступа и невозможности фискализации чеков с маркировкой.

Рассмотрим ситуацию, когда кассы в магазинах (например, ШТРИХ-М-01Ф) не подключены физически к ПК кассира, а доступны серверу по фиксированным IP-адресам — в таких случаях удобен инструмент централизованного управления удаленными кассами. Наша задача — создать на сервере индивидуальную среду для каждой кассы.

Решение 1: Организация многоэкземплярности (Multi-instance) на сервере

Для реализации этой схемы нам необходимо запустить на сервере столько процессов ЛМ ЧЗ и ТС ПИоТ, сколько розничных точек мы обслуживаем — для этого есть настройка касс через RDP для маркировки и 54-ФЗ. Разберем этот процесс по шагам:

  1. Подготовка рабочих директорий: Для каждого экземпляра создаем отдельную папку на диске сервера (например, C:\LM_CHZ\Shop_1, C:\LM_CHZ\Shop_2 и т.д.). Это критически важно, так как каждый экземпляр хранит свои локальные базы данных стоп-листов и файлы конфигурации.
  2. Настройка уникальных портов: По умолчанию ЛМ использует порт 50051. В конфигурационном файле каждого экземпляра (обычно это application.yaml или аналогичный в папке модуля) необходимо прописать уникальный порт (например, 50051 для первого магазина, 50052 для второго и далее).
  3. Привязка к ФН: При первом запуске и инициализации модуля ТС ПИоТ происходит его «спаривание» с номером фискального накопителя. Проследим, чтобы при настройке экземпляра №1 была указана именно та касса, которая стоит в соответствующем магазине.

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

Решение 2: Использование Контроллера ЛМ и ТС ПИоТ

В архитектуре Честного ЗНАКа предусмотрена роль Контроллера ЛМ. Выясним причину его необходимости. Он выступает координатором между вашей учетной системой (1С) и техническим средством проверки. В терминальном режиме возможны две под-схемы:

  1. Контроллер на сервере: Устанавливаем и ЛМ, и Контроллер на терминальный сервер. В этом случае 1С взаимодействует с ними через локальные сокеты.
  2. Контроллер на локальном ПК кассира: Если архитектура позволяет, Контроллер устанавливается на компьютер в магазине. Однако, так как касса у вас работает по IP-адресу напрямую с сервером, этот вариант избыточен и только усложнит диагностику сети.

Для версии ЛМ 2.1 и выше наличие Контроллера является обязательным условием для корректного прохождения проверок в режиме реального времени. Рассмотрим, как прописать связь в коде 1С.

Нам потребуется написать функцию, которая определяет порт подключения в зависимости от параметров текущего сеанса или имени компьютера пользователя. Разберем пример логики:


Функция ПолучитьПортЛМДляТекущегоРабочегоМеста()
    ИмяКомпьютера = ТерминальныйСеанс.ПолучитьИмяКлиентскогоКомпьютера();
    // Предположим, у нас есть соответствие в справочнике "КассыККМ"
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ ПортЛМ ИЗ Справочник.КассыККМ ГДЕ ИмяПК = &ИмяПК";
    Запрос.УстановитьПараметр("ИмяПК", ИмяКомпьютера);
    Выборка = Запрос.Выполнить().Выбрать();
    
    Если Выборка.Следующий() Тогда
        Возврат Выборка.ПортЛМ;
    КонецЕсли;
    Возврат 50051; // Порт по умолчанию
КонецФункции

Вопрос сертификации самописного ПО

Один из самых частых страхов разработчиков — необходимость сертификации «самописной» конфигурации 1С — в этом вопросе поможет готовое решение для онлайн-касс и маркировки. Разберем ситуацию с точки зрения законодательства. В реестр аккредитованного ПО должны вноситься Технические средства проверки (которыми и являются модули ТС ПИоТ и ЛМ). Ваша 1С выступает лишь «заказчиком» проверки, отправляя запрос в сертифицированный модуль через протокол gRPC.

Важный момент: Доработки интерфейса, складского учета или ценообразования в 1С не требуют переаттестации системы. Вам нужно лишь гарантировать, что вызов функций проверки маркировки соответствует протоколам, заложенным разработчиками ЦРПТ. Если вы используете штатные библиотеки интеграции, сертификация остается на стороне поставщика этих библиотек.

Технические нюансы и типичные ошибки

Разберем, почему даже при правильной установке система может выдавать ошибки инициализации (как в сообщениях 3 и 21 с форума):

Итоги и рекомендации

Переход на разрешительный режим в условиях RDP возможен без радикальной смены архитектуры — для этого есть обработка онлайн-касс в RDP с разрешительным режимом. Основной принцип — изоляция процессов для каждой кассы. Мы рекомендуем:

  1. Развернуть индивидуальные службы для каждой торговой точки на сервере.
  2. Использовать диспетчеризацию портов в коде 1С.
  3. Следить за актуальностью программных токенов (EMC) для каждой лицензии.

Помните, что с 1 июля 2024 года работа без проверки кода маркировки через ТС ПИоТ может привести к невозможности пробития чека или крупным штрафам за нарушение правил торговли. Проверьте вашу готовность заранее, используя тестовый контур Честного ЗНАКа.

← На главную