При обслуживании или перепрошивке контрольно-кассовой техники (ККТ) нередко слетают сетевые настройки — например, IP-адрес кассы или порт обмена. При попытке скорректировать эти значения напрямую в регистре сведений ТорговоеОборудование разработчики и администраторы сталкиваются с тем, что у регистра нет стандартной формы записи или формы списка. Проанализируем, как правильно настроить параметры оборудования через пользовательский интерфейс и как при необходимости перезаписать их программно.
Рассмотрим стандартный механизм управления торговым оборудованием в конфигурации «Управление производственным предприятием, редакция 1.3». Так как регистр сведений ТорговоеОборудование является служебным, прямой доступ к нему через меню «Все функции» или список регистров не предусматривает удобного интерактивного редактирования. Доступ к параметрам осуществляется через специализированную сервисную обработку.
Разберем по шагам порядок действий в интерфейсе:
Выясним причину, почему нельзя просто открыть запись регистра и изменить текстовое поле. Ресурс Параметры имеет строковый тип, однако внутри хранится результат выполнения функции ЗначениеВСтрокуВнутр. Строка вида {"S","P_IPAddress"} представляет собой внутреннюю сериализацию структуры параметров платформой «1С:Предприятие».
Важно: ручная правка такой строки в таблицах базы данных крайне не рекомендуется. Нарушение разметки скобок или длины строковых литералов приведет к критической ошибке формата потока при последующих попытках инициализации драйвера.
Кроме того, измерение Компьютер в регистре жестко привязывается к сетевому имени текущей рабочей станции через функцию ИмяКомпьютера() или вызов ПолучитьИмяКомпьютераТО(). Если вы работаете в терминальной ферме (RDP), смена имени хоста сессии может привести к созданию дублирующей записи с пустыми параметрами по умолчанию вместо считывания ранее сохраненных настроек.
Бывают ситуации, когда штатная обработка не позволяет открыть окно параметров — например, из-за сбоя внешней компоненты, несоответствия разрядности клиента 1С или зависания вызова функций драйвера при попытке опросить недоступный IP-адрес. В таком случае скорректировать параметры можно с помощью внешней обработки или через групповую обработку данных.
Посмотрим на пример кода, позволяющего десериализовать структуру параметров, изменить требуемое свойство и корректно записать его обратно:
// Создаем менеджер записи регистра сведений для точечной модификации
МенеджерЗаписи = РегистрыСведений.ТорговоеОборудование.СоздатьМенеджерЗаписи();
// Устанавливаем отбор по ключевым измерениям
МенеджерЗаписи.Устройство = ВыбранноеУстройство; // Ссылка на элемент справочника "ТорговоеОборудование"
МенеджерЗаписи.Компьютер = ИмяКомпьютера();
// Считываем текущую запись из базы данных
МенеджерЗаписи.Прочитать();
Если МенеджерЗаписи.Выбран() Тогда
// Десериализуем внутреннюю строку платформы в структуру параметров
СтруктураПараметров = ЗначениеИзСтрокиВнутр(МенеджерЗаписи.Параметры);
// Проверяем тип и корректируем необходимый параметр
Если ТипЗнч(СтруктураПараметров) = Тип("Структура") Тогда
СтруктураПараметров.Вставить("P_IPAddress", "192.168.1.150");
// Сериализуем обновленную структуру обратно во внутренний формат платформы
МенеджерЗаписи.Параметры = ЗначениеВСтрокуВнутр(СтруктураПараметров);
// Фиксируем изменения в регистре сведений
МенеджерЗаписи.Записать();
КонецЕсли;
КонецЕсли;
Такой подход позволяет обойти зависший интерфейс драйвера и восстановить корректный сетевой адрес кассового аппарата без пересоздания строки оборудования.
Если после обновления микропрограммы кассы сетевые настройки сбросились к заводским параметрам по умолчанию, изменить конфигурацию можно не в 1С, а непосредственно на ККТ. Используйте сервисную утилиту производителя (например, «Тест драйвера ККТ»): найдите устройство по дефолтному адресу, верните ему статический IP-адрес, который был закреплен в учетной системе ранее, либо настройте резервирование постоянного IP-адреса по MAC-адресу на вашем DHCP-сервере.