Как реализовать печать этикеток при взвешивании товара в 1С:Комплексная автоматизация 2?

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

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

Шаг 1. Выбор и настройка драйвера для весов

Прежде чем приступать к написанию кода, необходимо обеспечить корректную связь между физическим устройством и 1С. Для весов серии ШТРИХ-СЛИМ-200М и аналогичных моделей существует несколько вариантов драйверов. Проанализируем их:

  1. 1С: Электронные весы (NativeAPI): Это современный стандарт драйверов от самой фирмы 1С. Его преимущество в том, что он не требует установки внешних компонентов (ActiveX/COM) и работает «из коробки». Однако он может быть требователен к версии прошивки весов.
  2. ШТРИХ-М Электронные весы: Классический драйвер от производителя. Он часто работает стабильнее с «капризным» оборудованием, так как учитывает все нюансы протокола обмена конкретного бренда.

Рассмотрим процесс настройки в интерфейсе 1С. Перейдем в раздел НСИ и администрирование — РМК и оборудование — Подключаемое оборудование. Создадим новый экземпляр оборудования с типом «Электронные весы». При настройке параметров связи (кнопка «Настроить») обратим особое внимание на номер COM-порта и скорость (обычно 4800 или 9600 бод). Если весы подключены через USB-переходник, номер порта нужно предварительно посмотреть в диспетчере устройств Windows.

Шаг 2. Поиск типовых механизмов работы с весами

Вместо того чтобы изобретать велосипед, проанализируем, как работа с весами реализована в типовом решении. В конфигурации КА 2 основным местом взаимодействия с торговым оборудованием является Рабочее место кассира (РМК).

Выясним, где находится код опроса весов. Для этого откроем в конфигураторе документ ЧекККМ и найдем форму ФормаДокументаРМК. В этой форме реализована команда ПолучитьВес. Именно этот код служит эталоном для реализации собственной логики. Проанализируем основные этапы работы этого алгоритма:

  1. Проверка доступности оборудования.
  2. Подключение весов через Библиотеку подключаемого оборудования (БПО).
  3. Вызов функции опроса текущего значения на платформе.
  4. Отключение оборудования (освобождение порта).

Шаг 3. Программная реализация получения веса

Для реализации печати этикеток нам потребуется создать свою обработку или доработать типовую «Печать этикеток и ценников». Основной фокус — на методах БПО. Разберем пример кода, который позволяет считать данные с весов:


// Пример получения веса через БПО
&НаКлиенте
Процедура ПолучитьДанныеСВесов()
    
    Оповещение = Новый ОписаниеОповещения("ЗавершитьПолучениеВеса", ЭтотОбъект);
    
    // Параметры подключения оборудования (Идентификатор устройства из справочника)
    УстройствоИД = Объект.ВыбранныеВесы; 
    
    // Выполняем команду получения веса
    МенеджерОборудованияКлиент.ВыполнитьКоманду(Оповещение, 
                                                "GetWeight", 
                                                Новый Массив, 
                                                УстройствоИД);
КонецПроцедуры

&НаКлиенте
Процедура ЗавершитьПолучениеВеса(Результат, Параметры) Экспорт
    Если Результат.Результат Тогда
        ТекущийВес = Результат.Вес; // Вес обычно возвращается в килограммах
        Сообщить("Вес получен: " + ТекущийВес);
        // Здесь можно вызвать процедуру формирования штрихкода и печати
    Иначе
        Сообщить("Ошибка весов: " + Результат.ОписаниеОшибки);
    КонецЕсли;
КонецПроцедуры

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

Шаг 4. Формирование весового штрихкода EAN-13

Чтобы напечатанная этикетка корректно считывалась на кассе, штрихкод должен соответствовать стандарту весового EAN-13. Разберем структуру такого кода, которая обычно используется в 1С:

Рассмотрим пример формирования строки штрихкода в коде 1С:


Функция СформироватьВесовойШтрихкод(КодТовара, ВесКг)
    Префикс = "22";
    СтрокаКода = Формат(Число(КодТовара), "ЧЦ=5; ЧВН=; ЧГ=0");
    // Переводим кг в граммы и форматируем до 5 знаков
    СтрокаВеса = Формат(ВесКг * 1000, "ЧЦ=5; ЧВН=; ЧГ=0");
    
    ПолныйШтрихкод = Префикс + СтрокаКода + СтрокаВеса;
    
    // Добавляем контрольный символ через типовой метод БПО
    КонтрольныйСимвол = МенеджерОборудованияСервер.СформироватьКонтрольныйСимволEAN13(ПолныйШтрихкод);
    
    Возврат ПолныйШтрихкод + КонтрольныйСимвол;
КонецФункции

Шаг 5. Настройка шаблона этикетки

В «1С:Комплексная автоматизация 2» управление макетами происходит в разделе Продажи — Настройки и справочники — Шаблоны этикеток и ценников. Нам необходимо создать шаблон с типом «Этикета (ценник) для товаров».

В редакторе шаблона добавим объект Штрихкод. В настройках штрихкода укажем тип EAN-13. Если мы планируем использовать типовой механизм печати, нам нужно убедиться, что система понимает: данный товар является мерным. Для этого в карточке номенклатуры должна быть установлена единица измерения (например, кг) и признак весового товара.

Если же мы пишем свою печать, то в параметр штрихкода мы будем передавать ту самую строку из 13 цифр, которую сформировали на предыдущем шаге. Также на этикетку полезно вывести текстовое поле с весом (например, "Масса нетто: 1.500 кг") и ценой за килограмм, рассчитав итоговую стоимость программно.

Шаг 6. Автоматизация процесса (событийная модель)

Опытные пользователи часто спрашивают: можно ли сделать так, чтобы 1С сама понимала, когда товар положили на весы, без нажатия кнопок? В типовых драйверах 1С редко реализовано «внешнее событие» для весов (в отличие от сканера штрихкодов).

Однако мы можем реализовать обработку ожидания. Проанализируем этот подход:

  1. При открытии формы фасовки запускается обработчик ожидания с интервалом 0.5–1 секунда.
  2. Обработчик опрашивает весы.
  3. Если текущий вес больше нуля, стабилен и отличается от предыдущего зафиксированного значения, система автоматически формирует штрихкод и отправляет задание на принтер.
  4. После печати система запоминает этот вес как «отработанный» до тех пор, пока платформа весов не обнулится.

Такой подход значительно ускоряет работу фасовщика, превращая процесс в конвейер: положил товар — забрал этикетку.

Заключение

Мы проанализировали полный цикл реализации печати весовых этикеток в 1С:КА 2. Ключевым моментом является использование Библиотеки подключаемого оборудования и правильное формирование строки штрихкода EAN-13. Опираясь на типовой код в ФормаДокументаРМК, вы можете создать надежный инструмент для автоматизации вашего склада или торгового зала.

← На главную