В конфигурациях на обычных формах (таких как «1С:Комплексная автоматизация 1.1», «1С:Управление торговлей 10.3» или «1С:Управление производственным предприятием 1.3») нередко встречается ситуация, когда на одном рабочем месте подключены два фискальных регистратора для раздельного учета по двум организациям. При отправке чека на печать или при открытии кассовой смены система внезапно выбирает не тот аппарат: документ выписан по Организации №1, а фискальный чек выходит на кассе Организации №2. Проанализируем, почему возникает такая коллизия и как правильно настроить программный комплекс.
Основная сложность заключается в сочетании двух факторов: архитектуре типовой подсистемы торгового оборудования и особенностях работы внешних компонент производителей кассовой техники.
AddIn.DrvFR). При инициализации соединения библиотека загружается в оперативную память один раз. При обращении ко второму аппарату его сетевые настройки (IP-адрес, TCP-порт, пароли) перезаписывают свойства уже загруженного в память объекта. В результате все последующие команды транслируются на устройство, параметры которого были записаны последними.Разберем основной и наиболее надежный программный способ решения задачи. Нам необходимо принудительно разрывать соединение и повторно подключать нужное устройство с актуальными параметрами непосредственно перед вызовом фискальных процедур.
Посмотрим на пример логики, которую необходимо встроить в общий модуль РаботаСТорговымОборудованием либо в обработку обслуживания фискального регистратора:
// Определяем правильное устройство по организации текущего документа
КассаККМ = НайтиКассуККМПоОрганизации(ДокументОбъект.Организация);
Если ЗначениеЗаполнено(КассаККМ) Тогда
НужнаяККТ = КассаККМ.ПодключенноеОборудование;
// Принудительно отключаем текущий экземпляр драйвера
ПолучитьСерверТО().ОтключитьКлиента(НужнаяККТ);
// Выполняем повторное подключение с явной передачей настроек (IP, порт, пароль)
ПараметрыПодключения = ПолучитьПараметрыПодключения(НужнаяККТ);
Результат = ПолучитьСерверТО().ПодключитьКлиента(НужнаяККТ, ПараметрыПодключения);
Если НЕ Результат Тогда
ВызватьИсключение "Не удалось переинициализировать фискальный регистратор для организации!";
КонецЕсли;
КонецЕсли;
После такой доработки перед каждой отправкой чека драйвер принудительно переключает сокет на целевой IP-адрес нужного фискального регистратора, что полностью исключает пробитие чека на чужом аппарате.
Если требуется обойтись минимальными вмешательствами в конфигурацию, проверим настройки самого драйвера торгового оборудования:
Рассмотрим альтернативный административный вариант, когда изменение типового кода конфигурации нежелательно:
/WMSpecified).В этом случае в каждом независимом процессе операционной системы загружается собственный экземпляр драйвера, и параметры подключения не пересекаются.