Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
01 авг 2021, 14:39

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

Автор slimuz, 24 мар 2021, 12:33

0 Пользователей и 1 гость просматривают эту тему.

slimuz

Добрый день.
Бухгалтерия 3.0.76.77.
Нужно выводить штрихкод code128 на печатную форму. Набросал код, но ошибка: Поле объекта не обнаружено (D2).
D2- имя объекта "V8.Печать штрих-кодов" в макете.


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

&НаКлиенте
Функция ПодключитьВнешнююКомпонентуПечатиШтрихкода()
   
    // В зависимости от типа платформы подключим соответствующую внешнюю компоненту
    ПодключениеВыполнено = Неопределено;
    СистемнаяИнформация = Новый СистемнаяИнформация;
    Если СистемнаяИнформация.ТипПлатформы = ТипПлатформы.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.ТекстКода   = Штрихк;
    ТабДокумент.Вывести(Область);
КонецФункции


slimuz

Оказывается такой глюк - в конфигураторе картинка называется d2, а если отладчиком развернуть "Область.Рисунки" - то там другое имя.
И переписал код. Теперь ошибка: Поле объекта недоступно для записи (Картинка).

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

    Об      = РеквизитФормыВЗначение("Объект");
    Макет   = Об.ПолучитьМакет("Макет");
    Область = Макет.ПолучитьОбласть("Штрихкод");       
    Штрихк = "123456789";
ПараметрыШтрихкода = Новый Структура;
                ПараметрыШтрихкода.Вставить("Ширина",         60);
                ПараметрыШтрихкода.Вставить("Высота",         100);
                ПараметрыШтрихкода.Вставить("Штрихкод",        Штрихк);
                ПараметрыШтрихкода.Вставить("ТипКода",         4);
                ПараметрыШтрихкода.Вставить("ОтображатьТекст", Истина);
                ПараметрыШтрихкода.Вставить("РазмерШрифта",    10);
                ПараметрыШтрихкода.Вставить("УголПоворота", 0);
                Картинка =  МенеджерОборудованияСервер.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);
                ОбластьПечати.Рисунки.a1.Картинка =  Картинка;
ТабДокумент.Вывести(Область);
КонецФункции

LexaK

Область определяете так
    Область = Макет.ПолучитьОбласть("Штрихкод"); 
а пишите сюда
    ОбластьПечати.Рисунки.a1.Картинка =  Картинка;

у меня вроде такая-же команда
   Область.Рисунки.КартинкаШтрихкода.Картинка = МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);
очень похоже с вашей только а1 по другому называется

проверьте еще раз названия/имен реквизитов, полей, областей, рисунков и др.  макета

ответ Понравился? (в смысле пригодился?)

slimuz

Всё верно картинка у меня "a1", в области "Штрихкод"

LexaK

а это что за область?
ОбластьПечати.Рисунки.a1.Картинка =  Картинка;
ОбластьПечати - ???
ответ Понравился? (в смысле пригодился?)

slimuz

У меня сейчас просто Область:
Область.Рисунки.a1.Картинка =  Картинка;

Геннадий ОбьГЭС

Цитата: slimuz от 24 мар 2021, 14:17
Оказывается такой глюк - в конфигураторе картинка называется d2, а если отладчиком развернуть "Область.Рисунки" - то там другое имя
Версию компоненты печати ШК обновите
А проще и правильнее - конфигурацию

slimuz

Компонент последней версии. Версия платформы 8.3.17.1851

Геннадий ОбьГЭС

Версия компоненты печати ШК - какая?
Корректная компонента распространяется в БПО  (библиотека подключаемого оборудования).
Должна быть не менее , чем  9.0.11.3

slimuz

Проверил на версии конфигурации 3.0.84.46. Также ошибка: Поле объекта недоступно для записи (Картинка).
Компонента у меня 1С:Печать штрихкодов (ActiveX) 8.0.16.4 с сайта 1С
Добавлено: 25 мар 2021, 07:15


Сейчас скачаю БПО

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск