функция ПолучитьГенератор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;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
ПоказатьПо теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот