QR код - помощь с вызовом метода

1. the_kutuzov 20.11.24 10:55 Сейчас в теме
функция ПолучитьГенераторQRкода()
        лМакетКомпоненты = ПолучитьОбщийМакет("КомпонентаПечатиQRКода");
        лАдрес = ПоместитьВоВременноеХранилище(лМакетКомпоненты);
        ГенераторQRкода = Неопределено;
        Попытка
            Если ПодключитьВнешнююКомпоненту(лАдрес,"QR") Тогда
                ГенераторQRкода = Новый("AddIn.QR.QRCodeExtension");
            Иначе
                Сообщить("Не удалось подключить компоненту генерации QR кода");        
            КонецЕсли;
        Исключение
            Сообщить(ОписаниеОшибки());    
        КонецПопытки;
        Возврат ГенераторQRкода;
КонецФункции

    
Функция ПолучитьQRкод(QRСтрока, УровеньКоррекции, Размер) Экспорт
        ГенераторQRКода = ПолучитьГенераторQRкода();
        Если ГенераторQRКода = Неопределено Тогда
            Возврат Неопределено;
        КонецЕсли;
        
        Попытка
            ДвоичныеДанныеКартинки = ГенераторQRКода.GenerateQRCode(QRСтрока, УровеньКоррекции, Размер);
        Исключение
            Сообщить(ОписаниеОшибки());
        КонецПопытки;
        
        Возврат ДвоичныеДанныеКартинки;
        
    КонецФункции
    
Процедура ПечатьНаклеекИзПоступленияТоваров(Док, ТабДок, Макет, Обл, ВариантПечати)
    
    Макет = ПолучитьМакет("НаклейкаУкрупненная");
    Горизонтально = истина;
    
    Запрос = Новый Запрос("ВЫБРАТЬ
    |    ПоступлениеТоваровУслугТовары.НомерСтроки КАК НомерСтроки,
    |    ПоступлениеТоваровУслугТовары.Номенклатура,
    |    ПоступлениеТоваровУслугТовары.Номенклатура.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
    |    ПоступлениеТоваровУслугТовары.Номенклатура.НомерЧертежа КАК НомерЧертежа,
    |    ПоступлениеТоваровУслугТовары.Хранение,
    |    ПоступлениеТоваровУслугТовары.КоличествоМест,
    |    ПоступлениеТоваровУслугТовары.Количество,
    |    ПоступлениеТоваровУслугТовары.ПартияСсылка,
    |    ПоступлениеТоваровУслугТовары.СертификатКачества,
    |    ВЫРАЗИТЬ(ПоступлениеТоваровУслугТовары.ПартияСсылка КАК Справочник.Партии).ЗаводскойНомер КАК ЗавНомерИзПартии,
    |    ВЫРАЗИТЬ(ПоступлениеТоваровУслугТовары.ПартияСсылка КАК Справочник.Партии).СертификатКачества КАК СертификатИзПартии,
    |    ВЫРАЗИТЬ(ПоступлениеТоваровУслугТовары.ПартияСсылка КАК Справочник.Партии).ЗаготовительнаяКарта КАК ЗаготКартаИзПартии,
    |    ВЫРАЗИТЬ(ПоступлениеТоваровУслугТовары.ПартияСсылка КАК Справочник.Партии).Код КАК КодПартии,
    |    ВЫБОР
    |        КОГДА ПоступлениеТоваровУслугТовары.ЗаводскойНомер = ЗНАЧЕНИЕ(Справочник.Номераноменклатуры.ПустаяСсылка)
    |            ТОГДА ВЫРАЗИТЬ(ПоступлениеТоваровУслугТовары.ПартияСсылка КАК Справочник.Партии).ЗаводскойНомер
    |        ИНАЧЕ ПоступлениеТоваровУслугТовары.ЗаводскойНомер
    |    КОНЕЦ КАК ЗаводскойНомер,
    |    ПоступлениеТоваровУслугТовары.ДопТребования,
    |    ПоступлениеТоваровУслугТовары.ЕдиницаИзмерения
    |ПОМЕСТИТЬ втДок
    |ИЗ
    |    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
    |ГДЕ
    |    ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    |    втДок.НомерСтроки,
    |    втДок.Номенклатура,
    |    втДок.НоменклатурнаяГруппа,
    |    втДок.НомерЧертежа,
    |    втДок.Хранение,
    |    втДок.КоличествоМест,
    |    втДок.Количество,
    |    втДок.ПартияСсылка,
    |    втДок.СертификатКачества,
    |    втДок.ЗавНомерИзПартии,
    |    втДок.СертификатИзПартии,
    |    втДок.ЗаготКартаИзПартии,
    |    втДок.КодПартии,
    |    втДок.ЗаводскойНомер,
    |    втДок.ДопТребования,
    |    втДок.ЕдиницаИзмерения
    |ИЗ
    |    втДок КАК втДок
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    |    втДок.СертификатКачества КАК Документ
    |ИЗ
    |    втДок КАК втДок
    |ГДЕ
    |    втДок.СертификатКачества <> ЗНАЧЕНИЕ(Документ.СертификатКачества.ПустаяСсылка)
    |
    |ОБЪЕДИНИТЬ
    |
    |ВЫБРАТЬ
    |    втДок.ЗаготКартаИзПартии
    |ИЗ
    |    втДок КАК втДок
    |ГДЕ
    |    втДок.ЗаготКартаИзПартии <> ЗНАЧЕНИЕ(Документ.ЗаготовительнаяКарта.ПустаяСсылка)
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |УНИЧТОЖИТЬ втДок");
    
    Запрос.УстановитьПараметр("Ссылка", СсылкаНаДокумент);
    
    МР = Запрос.ВыполнитьПакет();
    
    Выборка = МР[1].Выбрать();
    
    тзДанныхНомеров = ПолучитьЗаводскиеНомераДокументов(МР[2].Выгрузить().ВыгрузитьКолонку("Документ"));
    
    тзОсновных = ОтфильтроватьОсновнуюДетальАрматурыАЭС(МР[1].Выгрузить().ВыгрузитьКолонку("Номенклатура"));
    
    БезДопТребования = Справочники.ДополнительныеТребованияКВыпускуПродукции.Основной;
     ВнешняяКомпонента=Неопределено;
    Пока Выборка.Следующий() Цикл
        
        обл = Макет.ПолучитьОбласть("Наклейка"); 
        Горизонтально = истина;
        //Штрих = обл.Рисунки.Штрих;
        
        //поиск по сертификату
        Если ЗначениеЗаполнено(Выборка.СертификатКачества) Тогда
            МассивСостава = тзДанныхНомеров.НайтиСтроки(Новый Структура("Источник,Номенклатура", Выборка.СертификатКачества, Выборка.Номенклатура));    
        ИначеЕсли ЗначениеЗаполнено(Выборка.ЗаготКартаИзПартии) Тогда
            МассивСостава = тзДанныхНомеров.НайтиСтроки(Новый Структура("Источник", Выборка.ЗаготКартаИзПартии));        
        Иначе
            Сообщить("Не найдено источника (СК,ЗК) для печати заводского номера.");
        КонецЕсли;          
        
        НужноНапечатать = Выборка.КоличествоМест;
        Если НужноНапечатать=0 Тогда
            НужноНапечатать =1;
        КонецЕсли;
        
        КоличествоНомеровВсего =0;
        
        ОснонаяДеталь = Ложь;
        Если тзОсновных.НайтиСтроки(Новый Структура("Деталь", Выборка.Номенклатура)).Количество()>0 Тогда
            ОснонаяДеталь = Истина;    
        КонецЕсли;
        
        ОбозначениеНоменклатуры = СокрЛП(Выборка.Номенклатура);
        
        ш=9;
            ПараметрыШтрихкода = Новый Структура;
            ПараметрыШтрихкода.Вставить("Ширина",4);
            ПараметрыШтрихкода.Вставить("Высота",5);
            ПараметрыШтрихкода.Вставить("Штрихкод");
            ПараметрыШтрихкода.Вставить("ОтображатьТекст", Истина); 
            ПараметрыШтрихкода.Вставить("СохранятьПропорции",ложь);
            
            
            ОШК = Обл.Области.ОбластьШтрихКода;

        Для х=1 по НужноНапечатать Цикл
            
            Если МассивСостава<>Неопределено и МассивСостава.Количество()>0 Тогда
                КоличествоНомеровВсего = МассивСостава.Количество();
                
                Для Каждого Стр из МассивСостава Цикл                      
                    Если НужноНапечатать>0 Тогда                        
                        ШтрихКод = ШтрихКодОбъекта(Стр.ЗаводскойНомер);
                        Если ЗначениеНеЗаполнено(ШтрихКод) Тогда
                            //штрих-код на партию
                            ШтрихКод = "_" + УдалитьЛишниеПробелы(СокрЛП(Выборка.КодПартии));
                        Иначе
                            ШтрихКод = УдалитьЛишниеПробелы(СокрЛП(ШтрихКод));
                        КонецЕсли;
                        //Штрих.Объект.Сообщение  = ШтрихКод;
                        ПараметрыШтрихкода.Штрихкод=ШтрихКод;
                        ОШК.Картинка = СвойМодульКлиентСервер.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода,ВнешняяКомпонента);
                        
                        //поиграем со шрифтами                
                        облНом = Макет.Область("ОбозначениеНоменклатуры");
                        РазмерШрифта = 100;
                        облНом.Шрифт = Новый Шрифт(облНом.Шрифт, ,100);    
                        Дельта=0;
                        Пока ТекстУмещаетсяВЯчейке(облНом,Макет, ОбозначениеНоменклатуры, Дельта) = Ложь Цикл
                            
                            Если Дельта>0 Тогда
                                РазмерШрифта = Цел(РазмерШрифта / Sqrt(Дельта));
                            Иначе
                                РазмерШрифта = РазмерШрифта -2;
                            КонецЕсли;
                            
                            облНом.Шрифт = Новый Шрифт(облНом.Шрифт, ,РазмерШрифта);    
                            
                        КонецЦикла;             
                        
                        обл.Рисунки.Номенклатура.Шрифт = Новый Шрифт(облНом.Шрифт,,РазмерШрифта);
                        обл.Рисунки.Номенклатура.Текст = ОбозначениеНоменклатуры;                    
                        ///////////////////////////////////////                 
                        
                        обл.Параметры.ВидХранения = СокрЛП(Выборка.Хранение);
                        обл.Параметры.НомерПлавки = "Плавка: " + СокрЛП(Стр.НомерПлавки);
                        обл.Параметры.НомерПартии = "Партия: " + СокрЛП(Стр.НомерПартии);
                        Если Выборка.ДопТребования = БезДопТребования Тогда
                            обл.Параметры.ДопТребования = "";                    
                        Иначе
                            обл.Параметры.ДопТребования = ", " + СокрЛП(Выборка.ДопТребования);
                        КонецЕсли;
                        обл.Параметры.ОсновнаяДеталь = ?(ОснонаяДеталь = Истина, "Основная", "");
                        обл.Параметры.ЗавНомер = СокрЛП(Стр.ЗаводскойНомер);
                        
                        обл.Параметры.ПоДокументу = "Всего по СК";
                        обл.Параметры.КолвоНомеров = КоличествоНомеровВсего;
                        обл.Параметры.Дата = Строка(Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy")) + " г.";
                        обл.Параметры.Док = "Сертификат Зав. №";                 
                        
                        ТабДок.Вывести(обл);
                        
                        ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
                        
                        НужноНапечатать = НужноНапечатать-1;
                    Иначе
                        Прервать;
                    КонецЕсли;
                    
                КонецЦикла;
            Иначе
                //на партию
                //Штрих.Объект.Сообщение = "_" + УдалитьЛишниеПробелы(СокрЛП(Выборка.КодПартии));
                ПараметрыШтрихкода.Штрихкод="_" + УдалитьЛишниеПробелы(СокрЛП(Выборка.КодПартии));
                ОШК.Картинка = СвойМодульКлиентСервер.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода,ВнешняяКомпонента);
                
                обл.Параметры.ВидХранения = СокрЛП(Выборка.Хранение);
                Если Выборка.ДопТребования = БезДопТребования Тогда
                    обл.Параметры.ДопТребования = "";          
                Иначе
                    обл.Параметры.ДопТребования = ", " + СокрЛП(Выборка.ДопТребования);
                КонецЕсли;
                обл.Параметры.ОсновнаяДеталь = ?(ОснонаяДеталь = Истина, "Основная", "");
                обл.Параметры.ЗавНомер = "Партия: " + СокрЛП(Выборка.КодПартии) + " (" + Выборка.Количество + " " + СокрЛП(Выборка.ЕдиницаИзмерения) +")"; // Выборка.ЗаводскойНомер;
                обл.Параметры.Дата = Строка(Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy")) + " г.";
                
                //Область = ТабДок.Область("R1C2:R11C11");
                //Область.Объединить();
                
                //поиграем со шрифтами                
                облНом = Макет.Область("ОбозначениеНоменклатуры");
                РазмерШрифта = 100;
                облНом.Шрифт = Новый Шрифт(облНом.Шрифт, ,100);    
                Дельта=0;
                Пока ТекстУмещаетсяВЯчейке(облНом,Макет, ОбозначениеНоменклатуры, Дельта) = Ложь Цикл
                    
                    Если Дельта>0 Тогда
                        РазмерШрифта = Цел(РазмерШрифта / Sqrt(Дельта));
                    Иначе
                        РазмерШрифта = РазмерШрифта -2;
                    КонецЕсли;
                    
                    облНом.Шрифт = Новый Шрифт(облНом.Шрифт, ,РазмерШрифта);    
                    
                КонецЦикла;             
                
                обл.Рисунки.Номенклатура.Шрифт = Новый Шрифт(облНом.Шрифт,,РазмерШрифта);
                обл.Рисунки.Номенклатура.Текст = ОбозначениеНоменклатуры;
                
                ///////////////////////////////////////
                ТабДок.Вывести(обл);
                
                ТабДок.ВывестиГоризонтальныйРазделительСтраниц();                          
                НужноНапечатать = НужноНапечатать-1;
            КонецЕсли;
        КонецЦикла;
        
    КонецЦикла;        
    
КонецПроцедуры
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1863362 20.11.24 11:04 Сейчас в теме
4. the_kutuzov 20.11.24 11:06 Сейчас в теме
3. the_kutuzov 20.11.24 11:05 Сейчас в теме
Нужно вызвать метод Получить Qr код
5. user2107191 20.11.24 11:06 Сейчас в теме
(3)
Нужно вызвать метод
Опять заклинание не выучил? Или волшебную палочку не той системы взял?
6. user1863362 20.11.24 11:06 Сейчас в теме
(3)
Нужно вызвать метод
И в чем проблема? Нет прав?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот