Имя: Пароль:
1C
 
Прошу помощи для написания отчета для печати штрихкода
0 tomgen
 
22.01.24
13:16
Создал внешний отчет.Добавил в макет отчета элемент управления "1С:Печать штрихкодов" (через Таблица-Рисунки-ВставитьОбъект) дал ему имя "Результат". Вот модуль отчета:
&НаКлиенте
Процедура Загрузить(Команда)
    // Вставить содержимое обработчика.
    СформироватьНаСервере();
КонецПроцедуры  

&НаСервере
Процедура СформироватьНаСервере()
    
    Результат.Очистить();
    
    ВремОбъект = РеквизитФормыВЗначение("Объект");
    Макет = ВремОбъект.ПолучитьМакет("Макет");
    
    Область = Макет.ПолучитьОбласть("Строка|Колонка");
    Рисунок = Область.Рисунки.ШтрихКод;
    
    Эталон = ВремОбъект.ПолучитьМакет("МакетДляОпределенияКоэффициентовЕдиницИзмерения");
    
    КоличествоМиллиметровВПикселеВысота = Эталон.Рисунки.Квадрат100Пикселей.Высота / 100;
    КоличествоМиллиметровВПикселеШирина = Эталон.Рисунки.Квадрат100Пикселей.Ширина / 100;
    ШиринаШтрихкода = Окр(Рисунок.Ширина / КоличествоМиллиметровВПикселеШирина);
    ВысотаШтрихкода = Окр(Рисунок.Высота / КоличествоМиллиметровВПикселеВысота);
    
    ВходныеДанные = "(01)04600822901507(11)161109(30)2434";
    
    Картинка = ПолучитьШтрихкод(ШиринаШтрихкода, ВысотаШтрихкода, ВходныеДанные, 24);  // 24 - Datamatrix GS1ASCII
    
    Рисунок.Картинка = Картинка;
    Результат.Вывести(Область);                
КонецПроцедуры  

&НаСервере
Функция ПолучитьШтрихкод(ШиринаШтрихкода, ВысотаШтрихкода, ЗначШтрихкод, ЗначТипШтрихкода)
    
    ПараметрыШтрихкода = ГенерацияШтрихкода.ПараметрыГенерацииШтрихкода();
    ПараметрыШтрихкода.Ширина = ШиринаШтрихкода;
    ПараметрыШтрихкода.Высота = ВысотаШтрихкода;
    ПараметрыШтрихкода.ТипКода = ЗначТипШтрихкода;
    ПараметрыШтрихкода.Штрихкод = ЗначШтрихкод;
    ПараметрыШтрихкода.ПрозрачныйФон = Истина;
    ПараметрыШтрихкода.УровеньКоррекцииQR = 2;
    ПараметрыШтрихкода.ОтображатьТекст = Ложь;
    ПараметрыШтрихкода.Масштабировать = Истина;
    ПараметрыШтрихкода.СохранятьПропорции = Истина;
    ПараметрыШтрихкода.ВертикальноеВыравнивание  = 0;
    ПараметрыШтрихкода.GS1DatabarКоличествоСтрок = 1;
    ПараметрыШтрихкода.ТипВходныхДанных = 0;
    
    РезультатШтрихкод = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода);

    Возврат РезультатШтрихкод.Картинка;
    
КонецФункции

Получаю ошибки в процедуре СформироватьНаСервере 1- Не опрелена переменная Результат
2-Функция РеквизитФормыВЗначение не определена.
Подскажите пожалуйста как передать в процедуру значение Результат из макета отчета? И как присвоить значение для переменной ВремОбъект?
Хочу разобраться с печатью штрихкодов!
1 Волшебник
 
22.01.24
13:22
ошибка в строке:
Результат.Очистить();
2 tomgen
 
22.01.24
13:27
Я хотел очистить значение переменной Результат, которая размещена в макете отчета. Как передать значение в процедуру СформироватьНаСервере?
3 Волшебник
 
22.01.24
13:32
(2) Считайте, что оно уже пустое.

А вот со строчкой Результат.Вывести() Вам придётся поработать, потому что "Результат" до сих пор не определён
4 tomgen
 
22.01.24
13:36
Описываю переменную Результат в процедуре СформироватьНаСервере, но все равно появляется ошибка Переменная Результат не определена.
Не понимаю как задать значение ВремОбъект из этой процедуры?
5 Волшебник
 
22.01.24
13:36
(4) >> Описываю переменную Результат в процедуре СформироватьНаСервере

Покажите, как Вы это делаете.
6 yurikmellon2
 
22.01.24
14:10
(0) рабочий код из ВПФ

     Рисунок = ОбластьПечати.Рисунки.ШК;
     Эталон = Обработки.ПечатьЭтикетокИЦенников.ПолучитьМакет("Эталон");
    
     КоличествоМиллиметровВПикселеВысота = Эталон.Рисунки.Квадрат100Пикселей.Высота / 100;
     КоличествоМиллиметровВПикселеШирина = Эталон.Рисунки.Квадрат100Пикселей.Ширина / 100;
     ШиринаШтрихкода = Окр(Рисунок.Ширина / КоличествоМиллиметровВПикселеШирина);
     ВысотаШтрихкода = Окр(Рисунок.Высота / КоличествоМиллиметровВПикселеВысота);
    
     Запрос2 = Новый Запрос();
    
     Запрос2.Текст = "ВЫБРАТЬ
     |    ШтрихКоды.Штрихкод КАК Штрихкод
     |ИЗ
     |    РегистрСведений.Штрихкоды КАК ШтрихКоды
     |ГДЕ
     |    ШтрихКоды.Объект = &Объект";
    
    
     Запрос2.УстановитьПараметр("Объект", Документ.Ссылка);
    
     Результат = Запрос2.Выполнить();
    
     ВыборкаДетальныеЗаписи = Результат.Выбрать();
    
     Если ВыборкаДетальныеЗаписи.Следующий() Тогда
        
         Картинка = ПолучитьШтрихкод(ШиринаШтрихкода, ВысотаШтрихкода, ВыборкаДетальныеЗаписи.ШтрихКод, 1);  // 1 - EAN13
         Рисунок.Картинка = Картинка;            
     КонецЕсли;


Функция ПолучитьШтрихкод(ШиринаШтрихкода, ВысотаШтрихкода, ЗначШтрихкод, ЗначТипШтрихкода)
    
     ПараметрыШтрихкода = ГенерацияШтрихкода.ПараметрыГенерацииШтрихкода();
     ПараметрыШтрихкода.Ширина = ШиринаШтрихкода;
     ПараметрыШтрихкода.Высота = ВысотаШтрихкода;
     ПараметрыШтрихкода.ТипКода = ЗначТипШтрихкода;
     ПараметрыШтрихкода.Штрихкод = ЗначШтрихкод;
     ПараметрыШтрихкода.ПрозрачныйФон = Истина;
     ПараметрыШтрихкода.УровеньКоррекцииQR = 2;
     ПараметрыШтрихкода.ОтображатьТекст = Истина;
     ПараметрыШтрихкода.Вставить("РазмерШрифта"      , 10); // Число
     ПараметрыШтрихкода.Масштабировать = Истина;
     ПараметрыШтрихкода.СохранятьПропорции = Истина;
     ПараметрыШтрихкода.ВертикальноеВыравнивание  = 0;
     ПараметрыШтрихкода.GS1DatabarКоличествоСтрок = 1;
     ПараметрыШтрихкода.ТипВходныхДанных = 0;
    
     РезультатШтрихкод = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода);
    
     Возврат РезультатШтрихкод.Картинка;
    
КонецФункции
7 tomgen
 
23.01.24
13:36
Переписал модуль для получения штрих кода:
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакетНаСервере();	
Область = Макет.ПолучитьОбласть("ОбластьШтрихкода");
Рисунок = Область.Рисунки.РисунокШтрихКода;
КоличествоМиллиметровВПикселеВысота = Макет.Рисунки.РисунокШтрихКода.Высота / 100;
КоличествоМиллиметровВПикселеШирина = Макет.Рисунки.РисунокШтрихКода.Ширина / 100;
ШиринаШтрихкода = Окр(Рисунок.Ширина / КоличествоМиллиметровВПикселеШирина);
ВысотаШтрихкода = Окр(Рисунок.Высота / КоличествоМиллиметровВПикселеВысота);
	
	
ВходныеДанные = "(01)04600822901507(11)161109(30)2434";
Картинка = ПолучитьШтрихкод(ШиринаШтрихкода, ВысотаШтрихкода, ВходныеДанные, 24);  // 24 - Datamatrix GS1ASCII
Рисунок.Картинка = Картинка;
 
ТабДок.Вывести(Область); 
Возврат ТабДок;


Выдает ошибку На строке "Рисунок.Картинка=Картинка"
Поле объекта недоступно для записи (Картинка)
8 tomgen
 
23.01.24
13:35
Помогите пожалуйста! Рисунок.Картинка - недоступно для чтения и недоступно для записи.Смотрел отладчиком
9 ЖНЕЦ
 
23.01.24
14:05
(8) у тебя в макете есть Рисунок с именем

"РисунокШтрихКода" или там D1

в отладчике посмотри , что у тебя в Область.Рисунки
10 Fedor-1971
 
23.01.24
14:38
(8) Посмотри отладчиком что лежит в Область.Рисунки и Макет.Рисунки может не там получил
и нужно проверить что-бы рисунок лежал полностью в ОбластьШтрихкодов, бо он будет относиться к другой области
11 tomgen
 
23.01.24
14:39
В отладчике посмотрел Область.Рисунки.РисунокШтрихКода = РисунокТабличногоДокумента
12 tomgen
 
23.01.24
14:57
Попробовал изменить строку записи штрихКода:
Область.Рисунки.РисунокШтрихКода.Картинка = Картинка;

Вылетает таже ошибка Поле недоступно для записи(Картинка)
13 Pprog151713
 
23.01.24
15:04
Вот тебе это поле надо прописать
14 tomgen
 
23.01.24
15:14
Оно у меня и прописано
Рисунок = Область.Рисунки.РисунокШтрихКода;
15 tomgen
 
23.01.24
16:08
Не получается заполнить макет значением штрихкода. Во всех случаях появляется ошибка "Поле недоступно для записи (Картинка). Не понимаю, вижу такой же код в комментариях. Там пишут, что код работающий!((
16 Волшебник
 
23.01.24
16:14
гляньте тут Рисунок.Картинка = Поле объекта недоступно для записи (Картинка)

похоже проблема все таки с тем, что объект у картинки - активикс
заменил на обычную картинку из Таблица-рисунки-Картинка - и все заработало
17 Мимохожий Однако
 
23.01.24
16:14
Покажи содержание области в момент отладки и не в момент редактирования
18 tomgen
 
23.01.24
16:15
Если не жалко, прошу выложить фрагмент кода сохранения сгенерированного штрихкода в макет табличного документа!
19 Волшебник
 
23.01.24
16:18
(18) Лучше Вы
20 tomgen
 
23.01.24
16:23
В отладчике содержимое областей:
Выражение                           Значение
Картинка                            Картинка
Рисунок.Картинка                    Поле недоступно для чтен
Область.Рисунки.РисунокШтрихКода    РисунокТабличногоДокумен
Область                             ТабличныйДокумент
Рисунок                             РисунокТабличногоДокумент
21 Мимохожий Однако
 
23.01.24
16:26
(18) Подгляди в типовых конфигурациях
22 Fedor-1971
 
23.01.24
17:07
(20) Таки "Выражение" у картинки нет
Удали из шаблона твою картинку.
Вставь новую и именно картинку
присвой имя

можешь заполнять примерно так:
        ИмяКартинки = Врег(ИмяПараметраШтрихкода);
        Для Каждого Рисунок Из ОбластьТабличногоДокумента.Рисунки Цикл
            
            Если Врег(Рисунок.Имя) = ИмяКартинки Тогда
                
                ПараметрыШтрихкода = ГенерацияШтрихкода.ПараметрыГенерацииШтрихкода();
                
                ПараметрыШтрихкода.Ширина            = Окр(Рисунок.Ширина / КоличествоМиллиметровВПикселе);
                ПараметрыШтрихкода.Высота            = Окр(Рисунок.Высота / КоличествоМиллиметровВПикселе);
                ПараметрыШтрихкода.Штрихкод            = ЗначениеШтрихкода;
                ПараметрыШтрихкода.ТипКода            = ТипКода;
                ПараметрыШтрихкода.ОтображатьТекст    = ОтображатьСимволныйШК;
                ПараметрыШтрихкода.РазмерШрифта        = РазмерШрифта;
                
                РезультатОперации = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода);
                
                Если РезультатОперации.Результат = Истина Тогда
                    
                    Рисунок.Картинка = РезультатОперации.Картинка;
                    
                КонецЕсли;
                
                Прервать;
                
            КонецЕсли;
            
        КонецЦикла;
23 Инстанс
 
23.01.24
22:24
В последний раз что-то делал. Типа такого
ОбластьМакетаСтрока = Макет.ПолучитьОбласть("Строка");
...
ПараметрыШтрихкода = ГенерацияШтрихкода.ПараметрыГенерацииШтрихкода();
...
ИзображениеШтрихкода = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода);
...
ОбластьМакетаСтрока.Область("ТоварКод").Картинка = ИзображениеШтрихкода.Картинка;
24 tomgen
 
24.01.24
11:04
(22) Вставить в ОбластьШтрихКода не объект, а картинку ШтрихКодРаботаСНоменклатурой из Конфигурации?
25 Волшебник
 
24.01.24
11:09
(24) любую
Закон Брукера: Даже маленькая практика стоит большой теории.