Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Печать штрихкода (УФ)

Печать штрихкода (УФ)
Я
   slimuz
 
24.03.21 - 12:24
Добрый день.
Бухгалтерия 3.0.76.77.
Нужно выводить штрихкод code128 на печатную форму. Набросал код, но ошибка: Поле объекта не обнаружено (D2).
D2- имя объекта "V8.Печать штрих-кодов" в макете.
[1С]

&НаКлиенте
Процедура СформироватьШтрихкод(Команда)
    ПодключитьВнешнююКомпонентуПечатиШтрихкода();
    СформироватьШтрихкодНаСервере();
КонецПроцедуры

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


&НаСервере
Функция СформироватьШтрихкодНаСервере()
    ТабДокумент = Новый ТабличныйДокумент;

    Об      = РеквизитФормыВЗначение("Объект");
    Макет   = Об.ПолучитьМакет("Макет");
    Область = Макет.ПолучитьОбласть("Штрихкод");        
    Штрихк = "123456789";
    Область.Рисунки.D2.ТипКода     = Перечисления.ТипыШтрихкодов.Code128;
    Область.Рисунки.D2.Сообщение   = Штрихк;
    Область.Рисунки.D2.ТекстКода   = Штрихк;
    ТабДокумент.Вывести(Область);
КонецФункции

[\1С]
   Ногаминебить
 
1 - 24.03.21 - 12:53
Букв очень много. Так есть по факту в макете рисунок с именем D2 в указанной области?
   slimuz
 
2 - 24.03.21 - 12:58
(1) Ага. Макет называется Макет. Область называется Штрихкод и там рисунок D2.

&НаСервере
Функция СформироватьШтрихкодНаСервере()
    ТабДокумент = Новый ТабличныйДокумент;

    Об      = РеквизитФормыВЗначение("Объект");
    Макет   = Об.ПолучитьМакет("Макет");
    Область = Макет.ПолучитьОбласть("Штрихкод");        
    Штрихк = "123456789";
    Область.Рисунки.D2.ТипКода     = Перечисления.ТипыШтрихкодов.Code128;
    Область.Рисунки.D2.Сообщение   = Штрихк;
    Область.Рисунки.D2.ТекстКода   = Штрихк;
    ТабДокумент.Вывести(Область);
КонецФункции

   lubitelxml
 
3 - 24.03.21 - 13:02
(2) была такой глюк - в конфигураторе картинка называется d2, а если отладчиком развернуть "Область.Рисунки" - то там другое имя, проверь - может в этом дело
   Ногаминебить
 
4 - 24.03.21 - 13:03
(2) А это точно именно Рисунок? У рисунка есть свойство Картинка, а вот этих не наблюдаю.
   slimuz
 
5 - 24.03.21 - 13:18
(3) Так и есть, спасибо. Название было другое.
Теперь ошибка: Значение не является значением объектного типа (ТипКода)

И кстати вот так правильней:
Область.Рисунки.D2.Объект.ТипКода

А то поле объекта не обнаружено
   slimuz
 
6 - 24.03.21 - 13:22
А если закоментить   
Область.Рисунки.D2.Объект.ТипКода = Перечисления.ТипыШтрихкодов.Code128;
То ошибка на следующую строку
Значение не является значением объектного типа (Сообщение)
   lubitelxml
 
7 - 24.03.21 - 13:24
У меня вот так печатается:
            ПараметрыШтрихкода = Новый Структура;
                ПараметрыШтрихкода.Вставить("Ширина",         60);
                ПараметрыШтрихкода.Вставить("Высота",         100);
                ПараметрыШтрихкода.Вставить("Штрихкод",        ШК);
                ПараметрыШтрихкода.Вставить("ТипКода",         4);
                ПараметрыШтрихкода.Вставить("ОтображатьТекст", Истина);
                ПараметрыШтрихкода.Вставить("РазмерШрифта",    10);
                ПараметрыШтрихкода.Вставить("УголПоворота", 0);
                Картинка =  МенеджерОборудованияСервер.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);
                ОбластьПечати.Рисунки.ШК.Картинка =  Картинка;
   slimuz
 
8 - 24.03.21 - 13:45
(7)   ПараметрыШтрихкода.Вставить("Штрихкод", ШК);

ШК - ведь картинка, которая у меня D2 ?
Что-то ругается обновлении изменений: Переменная не определена
   lubitelxml
 
9 - 24.03.21 - 13:46
ШК - это текстовый штрихкод который я формирую сам
   lubitelxml
 
10 - 24.03.21 - 13:47
в твоем случае - это Штрихк
   slimuz
 
11 - 24.03.21 - 14:02
(10) Спасибо)
Ошибка:Поле объекта недоступно для записи (Картинка).
На строчку 

ОбластьПечати.Рисунки.D2.Картинка =  Картинка;

В свойствах рисунка галочку "Защита" убрал, не помогло.
   lubitelxml
 
12 - 24.03.21 - 14:07
   slimuz
 
13 - 26.03.21 - 07:38
(12)
1. Нужно было вставлять картинку, вместо объекта "v8.Печать ш-к"
2. Табличный док. необходимо выводить на клиенте, запутался :D
Теперь не могу картинку подогнать под размер 43х25 для печати.

ПараметрыШтрихкода.Вставить("Ширина",43);
ПараметрыШтрихкода.Вставить("Высота",25);

Это походу не то, что нужно))

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.