8.х Этикетки в 1С 8 на принтере Zebra

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Titov, 23 мар 2010.

  1. TopicStarter Overlay
    Titov
    Offline

    Titov Опытный в 1С

    Регистрация:
    13 апр 2008
    Сообщения:
    177
    Симпатии:
    1
    Баллы:
    26
    Подскажите, плиз, есть ли какие нибудь дополнительные библиотеки, обработки для удобного формирования этикеток для принтеров Zebra (у меня Zebra 2824).

    Сейчас использую принтер этикеток Godex BZB-2, для него есть свободно распространямая библиотека и обработка на 1с 8 - учень удобно!

    Стандартными средствами сложно сделать что то интересное:(
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Кхм, работал с зеброй.
    Любая этикетка рисуется в виде макета в системе. Зачем что-то стороннее?
  3. TopicStarter Overlay
    Titov
    Offline

    Titov Опытный в 1С

    Регистрация:
    13 апр 2008
    Сообщения:
    177
    Симпатии:
    1
    Баллы:
    26
    Стандартные средства убогие и неудобные...
    Но похоже прийдется с помощью них делать)
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Аргументируйте - чем они убоги?
  5. TopicStarter Overlay
    Titov
    Offline

    Titov Опытный в 1С

    Регистрация:
    13 апр 2008
    Сообщения:
    177
    Симпатии:
    1
    Баллы:
    26
    Вот я создал свой макет, хочу сделать ячейку размером 58 на 40 мм.
    Нашел метод ШиринаКолонки для ячейки табличного документа (в который прогружаю макет)
    Описание: "Содержит ширину колонок в области (в так называемых средних символах шрифта). ".
    Не понимаю что такое средний символ... как сделать 40 мм - не знаю.

    Тоже самое для высоты ячейки :
    "ВысотаСтроки (RowHeight)
    Описание:
    Тип: Число. Содержит высоту строк в области (в пунктах). "
    Что такое пункты тоже не знаю... соответсвенно не знаю как 58 мм задать :unsure:

    Если знаете как это сделать, подскажите плиз..

    Вот пример кода из библиотеке для принтеров Godex:
    LabelPrinter = Новый COMОбъект("LabelPrint.LabelImage");
    LabelPrinter.BeginLabel(58,40);
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    В макете, двигая границу ячейки, видно ее размер в мм.
  7. TopicStarter Overlay
    Titov
    Offline

    Titov Опытный в 1С

    Регистрация:
    13 апр 2008
    Сообщения:
    177
    Симпатии:
    1
    Баллы:
    26
    ясно, спасибо)

    Теперь штрихкод не получается расстянуть точно по ширине этикетки... Либо сильно узкий либо сильно широкий..
    Со свойствами объекта штрихкод эксперементирую, не удается подогнать, чтобы крисиво было...
    Тут не знаете как сделать?
  8. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Посмотрите, как сделано в УТ 11 - там другой принцип вообще :)
    Там выводиться картинка, которая генерируется по заданным параметрам (в т.ч. и размерам)
  9. TopicStarter Overlay
    Titov
    Offline

    Titov Опытный в 1С

    Регистрация:
    13 апр 2008
    Сообщения:
    177
    Симпатии:
    1
    Баллы:
    26
    А эту процедуру из УТ11 можно будет в 10.3 использовать??

    Щас посмотрел в интернете есть ActiveX объект генерирующие штрихкоды, к 1с вроде тоже цепляются думаю их тоже попробовать.
  10. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    В типовой УТ10 есть ШК. Просто в УТ 11 другой принцип (там нельзя использовать AсtiveX) - и другая обработка. Но работать будет и в 8.1
  11. TopicStarter Overlay
    Titov
    Offline

    Titov Опытный в 1С

    Регистрация:
    13 апр 2008
    Сообщения:
    177
    Симпатии:
    1
    Баллы:
    26
    поставил 8.2 УТ 11, порылся там и ничего похожего на печать этикеток не нашел..
    Ткните носом :)
  12. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Упс, извиняюсь :)

    Надо смотреть в Демонстрационная конфигурация "Управляемое приложение" (она на ИТС есть)
  13. TopicStarter Overlay
    Titov
    Offline

    Titov Опытный в 1С

    Регистрация:
    13 апр 2008
    Сообщения:
    177
    Симпатии:
    1
    Баллы:
    26
    Ага, спасибо:)

    Вроде нашел то что надо, выкладываю - может кому нибудь пригодится)
    Сам завтра буду разбираться - сегодня уже устал.

    BabySG, все таки наверное не самый удобный функционал создания этикеток стандартными способами?))

    Код:
    // Формирование изображения штрихкода для указанного объекта
    // 
    // Параметры: 
    //  Нет 
    // 
    // Возвращаемое значение: 
    //  Картинка - Картинка со сформированным штрихкодом ИЛИ НЕОПРЕДЕЛЕНО
    Функция ПолучитьКартинкуШтрихкода()
    
    // В зависимости от типа платформы подключим соответствующую внешнюю компоненту
    ИнформацияОСистеме = Новый СистемнаяИнформация;
    Если ИнформацияОСистеме.ТипПлатформы = ТипПлатформы.Windows_x86 Тогда
    
    ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодовWindows32", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);
    
    ИначеЕсли ИнформацияОСистеме.ТипПлатформы = ТипПлатформы.Windows_x86_64 Тогда
    
    ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодовWindows64", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);
    
    ИначеЕсли ИнформацияОСистеме.ТипПлатформы = ТипПлатформы.Linux_x86 Тогда
    
    ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодовLinux32", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);		
    
    Иначе
    
    ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодовLinux64", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);
    
    КонецЕсли;
    
    // Создадим объект внешней компоненты
    Компонент = Новый("AddIn.КартинкаШтрихкода.Barcode");
    
    // Если нет возможности рисовать
    Если НЕ Компонент.ГрафикаУстановлена Тогда
    
    // То картинку сформировать не сможем
    Возврат Неопределено;
    
    КонецЕсли;
    
    // Если в системе установлен шрифт Tahoma
    Если Компонент.НайтиШрифт("Tahoma") = Истина Тогда
    
    // Выбираем его как шрифт для формирования картинки
    Компонент.Шрифт = "Tahoma";
    
    Иначе
    
    // Шрифт Tahoma в системе отсутствует
    
    // Обойдем все доступные компоненте шрифты
    Для Сч = 0 По Компонент.КоличествоШрифтов -1 Цикл
    
    // Получим очередной шрифт, доступный компоненте
    ТекущийШрифт = Компонент.ШрифтПоИндексу(Сч);
    
    // Если шрифт доступен
    Если ТекущийШрифт <> Неопределено Тогда
    
    // Они и будет шрифтом для формирования штрихкода
    Компонент.Шрифт = ТекущийШрифт;
    Прервать;
    
    КонецЕсли;
    
    КонецЦикла;
    
    КонецЕсли;
    
    // Установим размер шрифта
    Компонент.РазмерШрифта = 12;
    
    // Зададим размер картинки
    Компонент.Ширина = 100;
    Компонент.Высота = 90;
    
    // Разрешим компоненте самой определять тип кода
    Компонент.АвтоТип = Истина;
    // ИЛИ установим код EAN-13
    // Компонент.ТипКода = 1;
    //
    // Тип смотрим в документации на внешнюю компоненту
    
    // Если код содержит контрольный символ, обязательно указываем
    Компонент.СодержитКС = СтрДлина(ЭтотОбъект.Штрихкод) = 13;
    
    // Если отображать контрольный символ не нужно
    // Компонент.ВидимостьКС = Ложь;
    
    // Формируем картинку штрихкода
    Компонент.ЗначениеКода = ЭтотОбъект.Штрихкод;
    
    // Если установленная нами ширина меньше минимально допустимой для этого штрихкода
    Если Компонент.Ширина < Компонент.МинимальнаяШиринаКода Тогда
    
    // Скорректируем ширину
    Компонент.Ширина = Компонент.МинимальнаяШиринаКода + 10;
    
    КонецЕсли;
    
    // Сформируем картинку
    ДвоичныеДанныеКартинки = Компонент.ПолучитьШтрихкод();
    
    // Если картинка сформировалась
    Если НЕ ДвоичныеДанныеКартинки = Неопределено Тогда
    
    // Формируем из двоичных данных
    Возврат Новый Картинка(ДвоичныеДанныеКартинки);
    
    КонецЕсли;
    
    Возврат Неопределено;
    
    КонецФункции
    
    // Формирование печатной формы штрихкода
    //
    // Параметры:
    //  ТабличныйДокумент - табличный документ, куда будет выводится штрихкод
    //
    // Возвращаемое значение:
    //  Нет
    Процедура ПечатнаяФормаШтрихкода(ТабличныйДокумент) Экспорт
    
    // Получим макет для штрих-кода
    Макет = Справочники.Товары.ПолучитьМакет("МакетПечатиШтрихкода");
    
    // Заполним параметры объекта
    Шапка = Макет.ПолучитьОбласть("Шапка");
    Шапка.Параметры.Заполнить(ЭтотОбъект);
    
    // Сформируем картинку штрихкода
    КартинкаШтрихкода = ПолучитьКартинкуШтрихкода();
    
    // Если смогли её сформировать
    Если НЕ КартинкаШтрихкода = Неопределено Тогда
    
    // Выведем её в табличный документ
    Рисунок = Шапка.Область("Картинка");
    Рисунок.Картинка = КартинкаШтрихкода;
    
    КонецЕсли;
    
    // Выведем сформированный результат в результирующий табличный документ
    ТабличныйДокумент.Вывести(Шапка);
    
    КонецПроцедуры
    
    
  14. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Этот способ гарантирует работу в тонком/веб-клиенте, который может быть запущен под линуксом, например.

    Поэтому тут палка о двух концах :)
    Мне этот способ удобнее, т.к. клиенты используют веб-клиента под линух.
  15. TopicStarter Overlay
    Titov
    Offline

    Titov Опытный в 1С

    Регистрация:
    13 апр 2008
    Сообщения:
    177
    Симпатии:
    1
    Баллы:
    26
    Ясно)

    А вопрос такой, можно ли этот вариант с формированием штрихкода перенести в платформу 8.1 ?
    ОбщийМакет КомпонентаПечатиШтрихкодовWindows32 у меня не переносится, пишет ошибка файла потока.

    Да и в 8.2 в функции ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодовWindows32", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native) - три параметра, а в 8.1 для функции ПодключитьВнешнююКомпоненту только один параметр можно передать :unsure:
  16. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Мда...
    Я совсем забыл, что 8.1 не поддерживает Native...
    Тогда да - не прокатит...

    ЗЫ. Просто я уже только на 8.2 работаю. Вот если перейдете на 8.2 без режима совместимости - будет работать.

Поделиться этой страницей