Печать этикеток

Mini web-сервер для печати чеков на фискальных регистраторах из мобильных приложений через HTTP запрос JSON.
esklad24
Сообщения: 8
Зарегистрирован: 12 фев 2018, 23:46

Печать этикеток

Сообщение esklad24 » 19 авг 2020, 21:27

Добрый День!
Нам нужно печатать этикетки.

У нас уже установлено расширение ККМ Серер печать чеков на ККТ.
Подскажите, пожалуйста, нам нужно ещё установить "Unit-server"? Или можно через расширение печатать этикетки?

И в примере АПИ указано 2-е JS функции:
1) Первичная инициализация принтера этикеток: InitializePrinter(NumDevice, IsBarCode)
2) Печать набора этикеток на принтере: function PrintLabels(NumDevice, IsBarCode)
Вопросик: Первичная инициализация делается перед каждой печати этикеток: То есть сначала запускаем "InitializePrinter(...)", а потом "PrintLabels(...)" каждый раз когда печатаем этикетки?

Заранее спасибо за любые подсказки!!!

Аватара пользователя
saratovout
Сообщения: 138
Зарегистрирован: 08 авг 2019, 23:52
Откуда: Boston
Контактная информация:

Re: Печать этикеток

Сообщение saratovout » 19 авг 2020, 22:24

esklad24 писал(а):
19 авг 2020, 21:27
Нам нужно печатать этикетки.
esklad24 писал(а):
19 авг 2020, 21:27
установлено расширение ККМ Серер печать чеков на ККТ.
Подскажите, пожалуйста, нам нужно ещё установить "Unit-server"? Или можно через расширение печатать этикетки?
esklad24 писал(а):
19 авг 2020, 21:27
1) Первичная инициализация принтера этикеток: InitializePrinter(NumDevice, IsBarCode)
2) Печать набора этикеток на принтере: function PrintLabels(NumDevice, IsBarCode)
Вопросик: Первичная инициализация делается перед каждой печати этикеток: То есть сначала запускаем "InitializePrinter(...)", а потом "PrintLabels(...)" каждый раз когда печатаем этикетки?
Какое устройство, какая модель, через какой драйвер/протокол вы подключаетесь?
InitializePrinter/PrintLabels существует только в Unit. Unit это некая редакция KkmServer. Оптимально использовать что-то одно.

В большинстве случаев печать работает без команды инициализации. Проверяется тестами на конкретном драйвере/оборудовании.

Сначала рассмотрите возможность использования "Принтера чеков" через команду PrintDocument (KkmServer). Если ограничения вас устроят, то от модели "Принтера этикеток" (UnitServer) можно будет отказаться, т.к. там не всё так просто.
good films make your life better..

Audim
Администратор
Сообщения: 1958
Зарегистрирован: 17 мар 2015, 18:36

Re: Печать этикеток

Сообщение Audim » 22 авг 2020, 17:54

Все производители перестали поддерживать формат печати этикеток от 1с.
Фактически сейчас просто нету единого формата на это.

Поэтому подключать только как "Принтер чеков" и печатать простенькие этикетки через команду "PrintDocument"

Если нужно что-то более сложное - только специализированное ПО этих принтеров этикеток

Valerii
Сообщения: 27
Зарегистрирован: 20 апр 2018, 01:58
Откуда: Владивосток
Контактная информация:

Re: Печать этикеток

Сообщение Valerii » 27 авг 2020, 09:43

Здравствуйте. PrintDocument не работает на википринт57ф. включал логирование команд, в списке лога команды такой не было. подскажите пожалуйста в чем может быть дело?

И можно ли напечатать не фискальный чек на фискальной кассе? (*я имею ввиду википринт 57ф)

Audim
Администратор
Сообщения: 1958
Зарегистрирован: 17 мар 2015, 18:36

Re: Печать этикеток

Сообщение Audim » 28 авг 2020, 22:02

Да, для ККТ укажите команду "RegisterCheck" вместо "PrintDocument"
и "IsFiscalCheck": false

Остальное в команде тоже самое

Valerii
Сообщения: 27
Зарегистрирован: 20 апр 2018, 01:58
Откуда: Владивосток
Контактная информация:

Re: Печать этикеток

Сообщение Valerii » 30 авг 2020, 08:23

Я так понимаю, что в фискальный накопитель информация с такого чека не записывается и не передаётся в офд? ККТ работает как принтер?

Audim
Администратор
Сообщения: 1958
Зарегистрирован: 17 мар 2015, 18:36

Re: Печать этикеток

Сообщение Audim » 03 сен 2020, 14:24

Конечно!!!

esklad24_2
Сообщения: 2
Зарегистрирован: 24 окт 2020, 18:28

Re: Печать этикеток

Сообщение esklad24_2 » 26 окт 2020, 19:41

Тестируем принтер этикеток "godex dt2".
Использую пример с Вашего сайта:
https://kkmserver.ru/UnitServer#Primer
Код:

Код: Выделить всё

function PrintLabels(NumDevice, IsBarCode) { ... }
Нужно сам ШтихКод в виде цифр и ШтрихКод в виде изображения.
В Вашем коде в секции "LabelFormattings" - "Поле картинки этикетки" закоментированно и не используется в секции "Labels".
Подскажите как его использовать? Что передавать? Передвать только текст ШрихКода (напри: 4823063108867) или нужно передавать изображение в каком-то специфическом формате формате?

Вот что получаем (какие чёрточки в штих-коде):
Изображение

Аватара пользователя
saratovout
Сообщения: 138
Зарегистрирован: 08 авг 2019, 23:52
Откуда: Boston
Контактная информация:

Re: Печать этикеток

Сообщение saratovout » 26 окт 2020, 19:51

esklad24_2 писал(а):
26 окт 2020, 19:41
function PrintLabels(NumDevice, IsBarCode) { ... }
Приведите полный текст команды.

Какая dll-библиотека используется?
esklad24_2 писал(а):
26 окт 2020, 19:41
Подскажите как его использовать? Что передавать? Передвать только текст ШрихКода (напри: 4823063108867) или нужно передавать изображение в каком-то специфическом формате формате?
если вам нужно напечатать штрих-код -- укажите Barcode,
если текст от него -- Text.
good films make your life better..

esklad24_2
Сообщения: 2
Зарегистрирован: 24 окт 2020, 18:28

Re: Печать этикеток

Сообщение esklad24_2 » 26 окт 2020, 20:00

Приведите полный текст команды.
Вот:

Код: Выделить всё

function PrintLabels(NumDevice, IsBarCode) {

    // Подготовка данных команды
    var Data = {
        // Команда серверу
        Command: "PrintLabels",
        // Номер устройства. Если 0 то первое не блокированное на сервере
        NumDevice: NumDevice,
        // Строка, определяющая статус пакета, имеет одно из значений: "first", "regular", "last".
        //PackageStatus: "first",
        PackageStatus: "last",
        // Секция описания форматирования шаблона этикетки. 
        // Присутствует однократно и только в первом пакете.
        // Описывает поля (элементы "Text", "Barcode", "Image" и "UserData"), входящие в шаблон этикетки, и их форматирование. 
        LabelFormattings: {
            // Ширина шаблона этикетки в миллиметрах.
            Width: 40,
            // Высота шаблона этикетки в миллиметрах.
            Height: 45,
            // Массив полей этикетки
            Fields: [
                // Текстовое поле этикетки -------------------------------------------------
                {
                    // Тип поля - текст
                    Type: "Text",
                    // Уникальное имя поля в шаблоне этикетки.
                    FieldName: "Наименование",
                    // Позиция левой границы поля по оси X (в миллиметрах).
                    Left: 1,
                    // Позиция верхней границы поля по оси Y (в миллиметрах).
                    Top: 1,
                    // Ширина поля в миллиметрах.
                    Width: 35,
                    // Высота поля в миллиметрах.
                    Height: 10,
                    // Ориентация содержимого поля. Имеет одно из следующих значений 0, 90, 180, 270. По умолчанию 0. Можно не указывать
                    Orientation: 0,
                    // Имя шрифта (не имя файла-шрифта). По умолчанию предустановленный на принтере шрифт. Можно не указывать
                    FontName: "Tahoma",
                    // Размер шрифта в кеглях.
                    FontSize: 8,
                    // Стиль шрифта. Имеет одно или несколько значений через разделитель -пробел: "Bold", "Italic", "Underline" и "StrikeOut". По умолчанию "".  Можно не указывать
                    FontStyle: "Italic",
                    // Строка, определяющая рамки поля. Имеет одно или несколько значений через разделитель - пробел: "Left", "Top", "Right" и "Bottom". По умолчанию "".  Можно не указывать
                    Border: "",
                    // Толщина рамки в пикселах, по умолчанию 1. Можно не указывать
                    BorderWidth: 0,
                    // Стиль рамки. Имеет одно из значений: "Dotted", "Dashed", "Solid" или "Double". По умолчанию "Solid". Можно не указывать
                    BorderStyle: "Solid",
                    // Горизонтальное выравнивание текста. Имеет одно из значений: "Left", "Center" или "Right". По умолчанию = "Left". Можно не указывать
                    Align: "Left",
                    // Многострочность. По умолчанию "false". Можно не указывать
                    Multiline: false,
                    // Статичность (одинаковое значение для всех экземпляров этикетки). По умолчанию "false". Можно не указывать
                    Static: false,
                    // В случае когда Static = "true", выступает в роли общего значения. Можно не указывать
                    Value: ""
                },
                // Еще одно текстовое поле этикетки ----------------------------------------
                {
                    Type: "Text",
                    FieldName: "Цена",
                    Left: 1,
                    Top: 11,
                    Width: 35,
                    Height: 5,
                    Orientation: 0,
                    FontName: "Tahoma",
                    FontSize: 8,
                    FontStyle: "Bold Italic",
                    Border: "Left Top Right Bottom",
                },
                // Поле шрих-кода этикетки ------------------------------------------------
                {
                    // Тип поля - текст
                    Type: "Barcode",
                    // Уникальное имя поля в шаблоне этикетки.
                    FieldName: "Штрихкод",
                    // Тип штрихкода. Имеет одно из значений:  "EAN8","EAN13", "EAN128", "Code39", "Code128", "Code16k", "Code93", "PDF417", "DataMatrix" , "QRCode" или "ITF14".
                    TypeBarCode: "EAN13",
                    // Позиция левой границы поля по оси X (в миллиметрах).
                    Left: 1,
                    // Позиция верхней границы поля по оси Y (в миллиметрах).
                    Top: 16,
                    // Ширина поля в миллиметрах.
                    Width: 35,
                    // Высота поля в миллиметрах.
                    Height: 10,
                    // Ориентация содержимого поля. Имеет одно из следующих значений 0, 90, 180, 270. По умолчанию 0. Можно не указывать
                    Orientation: 0,
                    // Флаг наличия подписи в штрихкоде. По умолчанию "true".
                    PrintHRI: true,
                    // Размер шрифта в кеглях если PrintHRI = true.
                    FontSize: 8,
                    // Наличие контрольного символа для тех типов штрих кодов, для которых возможно управление его наличием. По умолчанию "true".
                    CheckSymbol: true,
                    // Статичность (одинаковое значение для всех экземпляров этикетки). По умолчанию "false". Можно не указывать
                    Static: false,
                    // В случае когда Static = "true", выступает в роли общего значения. Можно не указывать
                    Value: ""
                },
                //// Поле картинки этикетки --------------------------------------------------
                {
                    // Тип поля - текст
                    Type: "Image",
                    // Уникальное имя поля в шаблоне этикетки.
                    FieldName: "Картинка",
                    // Позиция левой границы поля по оси X (в миллиметрах).
                    Left: 1,
                    // Позиция верхней границы поля по оси Y (в миллиметрах).
                    Top: 32,
                    // Ширина поля в миллиметрах.
                    Width: 35,
                    // Высота поля в миллиметрах.
                    Height: 10,
                    // Ориентация содержимого поля. Имеет одно из следующих значений 0, 90, 180, 270. По умолчанию 0. Можно не указывать
                    Orientation: 0,
                    // Строка, определяющая рамки поля. Имеет одно или несколько значений через разделитель - пробел: "Left", "Top", "Right" и "Bottom". По умолчанию "".  Можно не указывать
                    Border: "",
                    // Толщина рамки в пикселах, по умолчанию 1. Можно не указывать
                    BorderWidth: 0,
                    // Стиль рамки. Имеет одно из значений: "Dotted", "Dashed", "Solid" или "Double". По умолчанию "Solid". Можно не указывать
                    BorderStyle: "Solid",
                    // Статичность (одинаковое значение для всех экземпляров этикетки). По умолчанию "false". Можно не указывать
                    Static: false,
                    // В случае когда Static = "true", выступает в роли общего значения. Можно не указывать
                    Value: ""
                },
            ]
        },
        // Секция данных печатаемых этикеток
        Labels: [
            // Данные 1 этикетки
            {
                // Указывает необходимое для этикетки количество копий для печати. По умолчанию 1.
                Quantity: 1,
                // Данные по полям этикетки
                Fields: [
                    { FieldName: "Наименование", Value: "Sprite", },
                    { FieldName: "Цена", Value: "100" },
                    { FieldName: "Штрихкод", Value: "5449000012203" },
                    { FieldName: "Картинка", Value: "5449000012203" },
                ]
            },
            // Данные 3 этикетки
            {
                Quantity: 1,
                Fields: [
                    { FieldName: "Наименование", Value: "Lipton" },
                    { FieldName: "Цена", Value: "150" },
                    { FieldName: "Штрихкод", Value: "4823063108867" },
                    { FieldName: "Картинка", Value: "4823063108867" },
                ]
            }
        ]
    };
    //Если чек без ШК то удаляем строку с ШК
    if (IsBarCode == false) {
        //Data.Cash = 100;
        delete Data.CheckStrings[0];
    }
    // Вызов команды
    ExecuteCommand(Data);
}
Какая dll-библиотека используется?
Просто поставили драйвера на принтер и всё.
если вам нужно напечатать штрих-код -- укажите Barcode,
если текст от него -- Text.
Нужна картинка Type: "Image", FieldName: "Картинка",
Можно просто указать: { FieldName: "Картинка", Value: "5449000012203" } ???
Или же нужно передавать само изображение в формате BMP?

Ответить