При автоматизации розничной торговли часто возникает необходимость выгрузки на весы не только базовых реквизитов товара (наименование, цена, срок годности), но и дополнительных графических элементов. Одним из таких элементов является знак соответствия (РСТ) или логотип компании. В современных конфигурациях, таких как 1С:Розница 3.0, использующих БПО (Библиотеку подключаемого оборудования), стандартные механизмы обмена могут не содержать явных полей для передачи индекса картинки. Проанализируем ситуацию и разберем доступные способы решения этой задачи.
В конфигурации 1С:Розница 3.0 обмен с весами offline происходит по универсальному стандарту, заложенному в БПО. Когда мы инициируем выгрузку товаров, система формирует XML-пакет, который затем интерпретируется драйвером весов. Основная сложность заключается в том, что в типовой схеме выгрузки поле для номера изображения часто отсутствует или не заполнено, так как оно не является обязательным для базового функционирования весов. Выясним причину: драйвер Штрих-М ожидает конкретный тег, а 1С его не передает, либо передает в ином формате.
Если вы используете файловый обмен или модифицируете обработку обслуживания, необходимо знать точное имя атрибута, которое распознает загрузчик «Штрих-М». Рассмотрим структуру узла Item или PLU. По результатам анализа протоколов обмена Штрих-М, наиболее вероятным атрибутом для передачи кода картинки является PictureCode.
Разберем пример того, как должен выглядеть фрагмент XML-файла для загрузки товара с конкретным номером изображения:
<Item Code="123" Name="Сыр Российский" Price="550.00" PictureCode="1" />
В данном примере PictureCode="1" указывает весам, что для данного товара при печати этикетки нужно использовать изображение, загруженное в память весов под индексом 1. Проанализируем другие возможные варианты имен тегов, если PictureCode не срабатывает:
ImageIndex — встречается в специализированных прошивках для работы с расширенной графикой.PictureNumber — альтернативное именование в некоторых версиях ПО «Штрих-М: Загрузка весов».Picture — упрощенный тег в старых протоколах обмена.Важный нюанс: Прежде чем передавать номер в XML, само изображение должно быть предварительно загружено в энергонезависимую память весов через утилиту «Тест драйвера» (обычно это индексы от 1 до 64).
Если правка XML-схемы не приносит результата, или вы хотите более тесной интеграции, можно обратиться напрямую к методам драйвера весов. Рассмотрим программный подход. В объектной модели драйвера Штрих-М для загрузки PLU используется метод addPluToBlock (или аналогичный в зависимости от версии драйвера).
Посмотрим на пример кода, который позволяет явно передать код картинки при формировании записи товара:
// Создаем объект драйвера
Драйвер = Новый COMОбъект("SHTRIHM_Scales.Driver");
// Устанавливаем параметры связи
Драйвер.Password = 30; // Стандартный пароль
Драйвер.IPAddress = "192.168.1.10";
// Подготавливаем данные о товаре
Драйвер.Code = 123;
Драйвер.Name = "Колбаса Докторская";
Драйвер.Price = 450.50;
// Указываем номер картинки (РСТ), предварительно загруженной в весы
Драйвер.PictureCode = 1;
// Вызываем метод добавления товара в весы
Результат = Драйвер.AddPLU();
Проанализируем этот подход: он требует серьезного изменения типовой обработки 1С, так как вместо формирования XML-файла вам придется переписывать цикл обхода товаров с вызовом методов COM-объекта. Это надежно, но трудозатратно при обновлении конфигурации.
Самый простой и эффективный метод, не требующий программирования в 1С, — это настройка самого дизайна этикетки в весах. Если знак РСТ должен печататься на всех товарах (или на большинстве), нет необходимости передавать его номер в каждой выгрузке. Рассмотрим, как это сделать:
В этом случае весы будут автоматически подставлять картинку при печати любой этикетки, независимо от того, какие данные пришли из 1С:Розница 3.0. Это исключает ошибки при передаче XML и экономит время разработчика.
Выясним еще одну возможность драйверов версии 4.15 и выше. В некоторых моделях весов (например, серия «Штрих-Принт») в настройках самого драйвера или системных таблицах весов можно задать параметр «Логотип по умолчанию». Если в приходящем из 1С файле тег PictureCode равен 0 или отсутствует, весы автоматически используют логотип, заданный в настройках.
Для реализации этого способа выполним следующие действия:
Проанализировав все способы, мы рекомендуем следующий алгоритм действий для пользователей 1С:Розница 3.0:
1. Проверьте память весов: Убедитесь, что знак РСТ загружен в весы под определенным номером через утилиту производителя.
2. Попробуйте расширение: Если вы владеете навыками программирования, создайте расширение для конфигурации и в модуле менеджера обработки ВыгрузкаДанныхВВесыOffline добавьте заполнение атрибута PictureCode в XML-структуру.
3. Используйте редактор этикеток: Если модификация кода нежелательна, жестко пропишите индекс картинки в шаблоне этикетки. Это самый стабильный вариант для работы с типовыми решениями 1С.
Помните, что при использовании БПО структура XML может меняться от версии к версии, поэтому вариант с настройкой шаблона этикетки на стороне весов является наиболее универсальным и независимым от обновлений программы 1С.