Как скопировать настройки торгового оборудования и организовать централизованную работу с весами в 1С:Управление торговлей 10.3?

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

В процессе сопровождения конфигурации 1С:Управление торговлей 10.3 (на обычных формах) администраторы и разработчики часто сталкиваются с ситуацией, когда в магазине используется множество сетевых весов с печатью этикеток. Если весы перемещаются между отделами или если нескольким пользователям требуется осуществлять загрузку товаров, ручная настройка параметров подключения (IP-адрес, порт, модель драйвера) для каждого сотрудника отнимает много времени и приводит к ошибкам. Рассмотрим, как устроено хранение параметров торгового оборудования в системе и как автоматизировать их копирование и централизовать процесс загрузки данных.

Где и как хранятся настройки торгового оборудования в УТ 10.3

В типовой подсистеме торгового оборудования конфигурации УТ 10.3 параметры подключения устройств (IP-адрес, сетевой порт, таймаут, протокол обмена) сериализуются в структуру и записываются в реквизит с типом ХранилищеЗначений (как правило, это реквизит ПараметрыКлиента или Параметры в справочнике ТорговоеОборудование).

Поскольку параметры хранятся в бинарном виде, скопировать их вручную через стандартный интерфейс невозможно. Однако мы можем программно прочитать значение из хранилища одного элемента справочника и перенести его в другой элемент или для другого рабочего места.

Разберем пример кода внешней обработки, выполняющей перенос параметров между устройствами:


// Получаем объект-источник и объект-приемник
ОбъектИсточник = СсылкаНаОборудованиеИсточник.ПолучитьОбъект();
ОбъектПриемник = СсылкаНаОборудованиеПриемник.ПолучитьОбъект();

// Извлекаем структуру параметров из хранилища значений
СтруктураПараметров = ОбъектИсточник.ПараметрыКлиента.Получить();

Если ТипЗнч(СтруктураПараметров) = Тип("Структура") Тогда
    // Записываем структуру параметров в объект-приемник
    ОбъектПриемник.ПараметрыКлиента = Новый ХранилищеЗначений(СтруктураПараметров);
    ОбъектПриемник.Записать();
    Сообщить("Настройки оборудования успешно скопированы!");
Иначе
    Сообщить("Не удалось прочитать параметры из источника.");
КонецЕсли;

Отвязка сетевого оборудования от конкретного рабочего места

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

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

  1. В модулях подсистемы торгового оборудования (обработки обслуживания ТО) найдем алгоритмы фильтрации по текущему рабочему месту.
  2. Для вида оборудования ЭлектронныеВесы или ВесыСПечатьюЭтикеток отключим проверку имени компьютера, сделав эти элементы общими для всей информационной базы.
  3. При открытии обработки выгрузки в весы будем выводить весь список сетевых устройств независимо от того, под какой учетной записью зашел пользователь.

Централизация выгрузки товаров через регламентные задания

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

Оптимальное архитектурное решение — вынести загрузку весов на сервер или в единый терминальный сеанс (RDP):

  1. Регламентное задание: Настроим фоновое задание в 1С, которое каждую ночь (или с заданной периодичностью) выгружает актуальные остатки, цены и наименования товаров на все активные сетевые весы.
  2. Сервер весового оборудования: Настроим выгрузку из 1С в промежуточные файлы (CSV, TXT, DBF) в выделенный каталог, а физическую отправку пакетов на весы доверим специализированной службе производителя весов. Служба сама контролирует очередь, доступность устройств и выполняет повторные попытки при обрыве связи.

Решение проблем с сетевой адресацией и PLU-кодами

При активном перемещении весов между отделами и магазинами часто возникают сопутствующие проблемы:

  1. Конфликты IP-адресов: Если весы настроены со статическими адресами, при переносе в другую подсеть они теряют связь или создают конфликты. Для решения задачи необходимо настроить на маршрутизаторе резервирование IP-адресов по MAC-адресу через DHCP либо использовать сетевые имена устройств (NetBIOS / DNS) в настройках драйвера, если сетевой протокол весов это поддерживает.
  2. Ограничение памяти весов по длине PLU: Если код номенклатуры в базе 1С шестизначный или восьмизначный, а весы поддерживают PLU только до 9999, прямая трансляция кода номенклатуры в PLU вызовет ошибку переполнения. В этом случае в 1С добавляют отдельный регистр сведений соответствия номенклатуры и номеров PLU (от 1 до 9999 в рамках конкретного отдела/магазина).
  3. Очистка «мертвых» позиций: Многие драйверы весов при загрузке не удаляют старые товары, а лишь перезаписывают существующие по номеру PLU. При смене ассортимента память устройства быстро заполняется. Рекомендуется перед полной загрузкой отправлять команду очистки памяти весов программными методами драйвера.
← На главную