Генерация штрихкодов с помощью БСП для программистов

Публикация № 1356920 09.01.21

Инструментарий разработчика - БСП (Библиотека стандартных подсистем)

БСП генерация штрихкода типовые методы

В данной публикации рассмотрим базовый функционал библиотеки стандартных подсистем (БСП) формирования штрихкодов для вывода на печать.

 

Введение

Привет всем! В данной статье предлагаю небольшой обзор возможностей актуальной библиотеки стандартных подсистем (БСП) на предмет формирования большинства существующих штрихкодов. На момент написания статьи точка актуальности - это БСП версии 3.1.4.104.

Для чего это нужно и чем может быть полезная эта статья? Поскольку, у нас в России сейчас активно наращивает обороты маркировка продукции (сигареты, обуви, текстиля и т.п), функционал формирования штрихкодов был включен в основу всех типовых конфигураций - БСП. Думаю, что изучение данных типовых методов стандартных подсистем, значительно сократит время разработки ваших программ и не заставит вас ничего придумывать самостоятельно.

 

Основные возможности БСП инструментов разработчика "Генерация штрихкодов"

Базовой "входящей" серверной функцией-структурой для вывода штрих-кода является функция ПараметрыГенерацииШтрихкода() Экспорт

Выглядит она вот так:

 
 ПараметрыГенерацииШтрихКода() Экспорт

 

Функция ПараметрыГенерацииШтрихкода() Экспорт
	
	ПараметрыШтрихкода = Новый Структура;
	ПараметрыШтрихкода.Вставить("Ширина"            , 100); // Число
	ПараметрыШтрихкода.Вставить("Высота"            , 100); // Число
	ПараметрыШтрихкода.Вставить("ТипКода"           , 99);  // Число
	ПараметрыШтрихкода.Вставить("ОтображатьТекст"   , Истина); //Булево
	ПараметрыШтрихкода.Вставить("РазмерШрифта"      , 10); // Число
	ПараметрыШтрихкода.Вставить("УголПоворота"      , 0); // Число
	ПараметрыШтрихкода.Вставить("Штрихкод"          , ""); // Строка
        ПараметрыШтрихкода.Вставить("ПрозрачныйФон"     , Истина); // Булево
	ПараметрыШтрихкода.Вставить("УровеньКоррекцииQR", 1); // Число (0 - L, 1 - M, 2 - Q, 3 - H)
	ПараметрыШтрихкода.Вставить("Масштабировать"  , Ложь); // Булево
	ПараметрыШтрихкода.Вставить("СохранятьПропорции"  , Ложь); // Булево
	ПараметрыШтрихкода.Вставить("ВертикальноеВыравнивание" , 1); // Число (1 - верх, 2 - центр, 3 - низ)
	ПараметрыШтрихкода.Вставить("GS1DatabarКоличествоСтрок", 2); // Число
	ПараметрыШтрихкода.Вставить("ТипВходныхДанных", 0); // Число (0 - Строка, 1 - Base64)
	ПараметрыШтрихкода.Вставить("УбратьЛишнийФон" , Ложь);  // Булево
	ПараметрыШтрихкода.Вставить("ЛоготипКартинка"); // Строка (base64 png)
   	ПараметрыШтрихкода.Вставить("ЛоготипРазмерПроцентОтШК"); // Число
	
	Возврат ПараметрыШтрихкода;
	
КонецФункции

 

Здесь, я хочу обратить ваше внимание на параметр структуры "ТипКода". Поддерживаются следующие типы кодов:

 
 Возможные значения параметра "ТипКода"
// 99 -  Авто выбор
// 0 - EAN8
// 1 - EAN13
// 2 - EAN128
// 3 - Code39
// 4 - Code128
// 5 - Code16k
// 6 - PDF417
// 7 - Standart (Industrial) 2 of 5
// 8 - Interleaved 2 of 5
// 9 - Code39 Расширение
// 10 - Code93
// 11 - ITF14
// 12 - RSS14
// 14 - EAN13AddOn2
// 15 - EAN13AddOn5
// 16 - QR
// 17 - GS1DataBarExpandedStacked
// 18 - Datamatrix ASCII
// 19 - Datamatrix BASE256
// 20 - Datamatrix TEXT
// 21 - Datamatrix C40
// 22 - Datamatrix X12
// 23 - Datamatrix EDIFACT
// 24 - Datamatrix GS1ASCII:

 

Далее, все достаточно просто - мы отправляем структуру параметров в серверную функцию ПодготовитьИзображениеШтрихкода(ВнешняяКомпонента, ПараметрыШтрихкода) через экспортную функцию ИзображениеШтрихкода(ПараметрыШтрихкода) Экспорт

 
 ИзображениеШтрихкода(ПараметрыШтрихкода)
Функция ИзображениеШтрихкода(ПараметрыШтрихкода) Экспорт
	
	СистемнаяИнформация = Новый СистемнаяИнформация;
	ТипПлатформыКомпоненты = Строка(СистемнаяИнформация.ТипПлатформы);
	
	ВнешняяКомпонента = ГенерацияШтрихкодаСерверПовтИсп.ПодключитьКомпонентуГенерацииИзображенияШтрихкода(ТипПлатформыКомпоненты);
	
	Если ВнешняяКомпонента = Неопределено Тогда
		ТекстСообщения = НСтр("ru = 'Ошибка подключения внешней компоненты печати штрихкода.'");
		ЗаписьЖурналаРегистрации(НСтр("ru = 'Ошибка генерации штрихкода'", 
			ОбщегоНазначения.КодОсновногоЯзыка()),
			УровеньЖурналаРегистрации.Ошибка,,, 
			ТекстСообщения);
		ВызватьИсключение ТекстСообщения;
	КонецЕсли;
	
	Возврат ПодготовитьИзображениеШтрихкода(ВнешняяКомпонента, ПараметрыШтрихкода); 
	 
КонецФункции

 

выглядит это так:

 
 ПодготовитьИзображениеШтрихкода(ВнешняяКомонента, ПараметрыШтрихкода)
Функция ПодготовитьИзображениеШтрихкода(ВнешняяКомпонента, ПараметрыШтрихкода)
	
	// Результат 
	РезультатОперации = Новый Структура();
	РезультатОперации.Вставить("Результат", Ложь);
	РезультатОперации.Вставить("ДвоичныеДанные");
	РезультатОперации.Вставить("Картинка");
	
	// Зададим размер формируемой картинки.
	ШиринаШтрихкода = Окр(ПараметрыШтрихкода.Ширина);
	ВысотаШтрихкода = Окр(ПараметрыШтрихкода.Высота);
	Если ШиринаШтрихкода <= 0 Тогда
		ШиринаШтрихкода = 1
	КонецЕсли;
	Если ВысотаШтрихкода <= 0 Тогда
		ВысотаШтрихкода = 1
	КонецЕсли;
	ВнешняяКомпонента.Ширина = ШиринаШтрихкода;
	ВнешняяКомпонента.Высота = ВысотаШтрихкода;
	ВнешняяКомпонента.АвтоТип = Ложь;
	
	ШтрихкодВрем = Строка(ПараметрыШтрихкода.Штрихкод); // Преобразуем явно в строку.
	
	Если ПараметрыШтрихкода.ТипКода = 99 Тогда
		ВнешняяКомпонента.АвтоТип = Истина;
	Иначе
		ВнешняяКомпонента.АвтоТип = Ложь;
		ВнешняяКомпонента.ТипКода = ПараметрыШтрихкода.ТипКода;
	КонецЕсли;
	
	Если ПараметрыШтрихкода.Свойство("ПрозрачныйФон") Тогда
		ВнешняяКомпонента.ПрозрачныйФон = ПараметрыШтрихкода.ПрозрачныйФон;
	КонецЕсли;
	
	Если ПараметрыШтрихкода.Свойство("ТипВходныхДанных") Тогда
		ВнешняяКомпонента.ТипВходныхДанных = ПараметрыШтрихкода.ТипВходныхДанных;
	КонецЕсли;
	
	Если ПараметрыШтрихкода.Свойство("GS1DatabarКоличествоСтрок") Тогда
		ВнешняяКомпонента.GS1DatabarКоличествоСтрок = ПараметрыШтрихкода.GS1DatabarКоличествоСтрок;
	КонецЕсли;
	
	Если ПараметрыШтрихкода.Свойство("УбратьЛишнийФон") Тогда
		ВнешняяКомпонента.УбратьЛишнийФон = ПараметрыШтрихкода.УбратьЛишнийФон;
	КонецЕсли;
	
	ВнешняяКомпонента.ОтображатьТекст = ПараметрыШтрихкода.ОтображатьТекст;
	// Формируем картинку штрихкода.
	ВнешняяКомпонента.ЗначениеКода = ШтрихкодВрем;
	// Угол поворота штрихкода.
	ВнешняяКомпонента.УголПоворота = ?(ПараметрыШтрихкода.Свойство("УголПоворота"), ПараметрыШтрихкода.УголПоворота, 0);
	// Уровень коррекции QR кода (L=0, M=1, Q=2, H=3).
	ВнешняяКомпонента.УровеньКоррекцииQR = ?(ПараметрыШтрихкода.Свойство("УровеньКоррекцииQR"), ПараметрыШтрихкода.УровеньКоррекцииQR, 1);
	
	// Для обеспечения совместимости с предыдущими версиями БПО.
	Если Не ПараметрыШтрихкода.Свойство("Масштабировать")
		Или (ПараметрыШтрихкода.Свойство("Масштабировать") И ПараметрыШтрихкода.Масштабировать) Тогда
		
		Если Не ПараметрыШтрихкода.Свойство("СохранятьПропорции")
				Или (ПараметрыШтрихкода.Свойство("СохранятьПропорции") И Не ПараметрыШтрихкода.СохранятьПропорции) Тогда
			// Если установленная нами ширина меньше минимально допустимой для этого штрихкода.
			Если ВнешняяКомпонента.Ширина < ВнешняяКомпонента.МинимальнаяШиринаКода Тогда
				ВнешняяКомпонента.Ширина = ВнешняяКомпонента.МинимальнаяШиринаКода;
			КонецЕсли;
			// Если установленная нами высота меньше минимально допустимой для этого штрихкода.
			Если ВнешняяКомпонента.Высота < ВнешняяКомпонента.МинимальнаяВысотаКода Тогда
				ВнешняяКомпонента.Высота = ВнешняяКомпонента.МинимальнаяВысотаКода;
			КонецЕсли;
		ИначеЕсли ПараметрыШтрихкода.Свойство("СохранятьПропорции") И ПараметрыШтрихкода.СохранятьПропорции Тогда
			Пока ВнешняяКомпонента.Ширина < ВнешняяКомпонента.МинимальнаяШиринаКода 
				Или ВнешняяКомпонента.Высота < ВнешняяКомпонента.МинимальнаяВысотаКода Цикл
				// Если установленная нами ширина меньше минимально допустимой для этого штрихкода.
				Если ВнешняяКомпонента.Ширина < ВнешняяКомпонента.МинимальнаяШиринаКода Тогда
					ВнешняяКомпонента.Ширина = ВнешняяКомпонента.МинимальнаяШиринаКода;
					ВнешняяКомпонента.Высота = (ВнешняяКомпонента.МинимальнаяШиринаКода / Окр(ПараметрыШтрихкода.Ширина)) * Окр(ПараметрыШтрихкода.Высота);
				КонецЕсли;
				// Если установленная нами высота меньше минимально допустимой для этого штрихкода.
				Если ВнешняяКомпонента.Высота < ВнешняяКомпонента.МинимальнаяВысотаКода Тогда
					ВнешняяКомпонента.Высота = ВнешняяКомпонента.МинимальнаяВысотаКода;
					ВнешняяКомпонента.Ширина = (ВнешняяКомпонента.МинимальнаяВысотаКода / Окр(ПараметрыШтрихкода.Высота)) * Окр(ПараметрыШтрихкода.Ширина);
				КонецЕсли;
			КонецЦикла;
		КонецЕсли;
	КонецЕсли;
	
	// ВертикальноеВыравниваниеКода: 1 - по верхнему краю, 2 - по центру, 3 - по нижнему краю.
	Если ПараметрыШтрихкода.Свойство("ВертикальноеВыравнивание") И (ПараметрыШтрихкода.ВертикальноеВыравнивание > 0) Тогда
		ВнешняяКомпонента.ВертикальноеВыравниваниеКода = ПараметрыШтрихкода.ВертикальноеВыравнивание;
	КонецЕсли;
	
	Если ПараметрыШтрихкода.Свойство("РазмерШрифта") И (ПараметрыШтрихкода.РазмерШрифта > 0) 
		И (ПараметрыШтрихкода.ОтображатьТекст) И (ВнешняяКомпонента.РазмерШрифта <> ПараметрыШтрихкода.РазмерШрифта) Тогда
			ВнешняяКомпонента.РазмерШрифта = ПараметрыШтрихкода.РазмерШрифта;
	КонецЕсли;
	
	Если ПараметрыШтрихкода.Свойство("РазмерШрифта") И ПараметрыШтрихкода.РазмерШрифта > 0
		И ПараметрыШтрихкода.Свойство("МонохромныйШрифт") Тогда
		Если ПараметрыШтрихкода.МонохромныйШрифт Тогда
			ВнешняяКомпонента.МаксимальныйРазмерШрифтаДляПринтеровНизкогоРазрешения = ПараметрыШтрихкода.РазмерШрифта + 1;
		Иначе
			ВнешняяКомпонента.МаксимальныйРазмерШрифтаДляПринтеровНизкогоРазрешения = -1;
		КонецЕсли;
	КонецЕсли;
	
	Если ПараметрыШтрихкода.ТипКода = 16 Тогда // QR
		Если ПараметрыШтрихкода.Свойство("ЛоготипКартинка") И Не ПустаяСтрока(ПараметрыШтрихкода.ЛоготипКартинка) Тогда 
			ВнешняяКомпонента.ЛоготипКартинка = ПараметрыШтрихкода.ЛоготипКартинка;
		КонецЕсли;
		Если ПараметрыШтрихкода.Свойство("ЛоготипРазмерПроцентОтШК") И Не ПустаяСтрока(ПараметрыШтрихкода.ЛоготипРазмерПроцентОтШК) Тогда 
			ВнешняяКомпонента.ЛоготипРазмерПроцентОтШК = ПараметрыШтрихкода.ЛоготипРазмерПроцентОтШК;
		КонецЕсли;
	КонецЕсли;
		
	// Сформируем картинку
	ДвоичныеДанныеКартинки = ВнешняяКомпонента.ПолучитьШтрихкод();
	РезультатОперации.Результат = ВнешняяКомпонента.Результат = 0;
	// Если картинка сформировалась.
	Если ДвоичныеДанныеКартинки <> Неопределено Тогда
		РезультатОперации.ДвоичныеДанные = ДвоичныеДанныеКартинки;
		РезультатОперации.Картинка = Новый Картинка(ДвоичныеДанныеКартинки); // Формируем из двоичных данных.
	КонецЕсли;
	
	Возврат РезультатОперации;
	
КонецФункции

 

Данная функция возвращает структуру РезультатОперации следующего содержания

РезультатОперации = Новый Структура();
РезультатОперации.Вставить("Результат", Ложь); // сработало или нет
РезультатОперации.Вставить("ДвоичныеДанные");  // двоичные данные изображения штрихкода
РезультатОперации.Вставить("Картинка");        // картинка

Так же, обратите внимание, что Внешняя компонента - основной объект для формирования "картинки" штрихкода, встроенный в ОбщийМакет.КомпонентаПечатиШтрихкодов конфигурации БСП. Получить его можно вот так:

СистемнаяИнформация = Новый СистемнаяИнформация;
ТипПлатформыКомпоненты = Строка(СистемнаяИнформация.ТипПлатформы);
ВнешняяКомпонента = ГенерацияШтрихкодаСерверПовтИсп.ПодключитьКомпонентуГенерацииИзображенияШтрихкода(ТипПлатформыКомпоненты);

Собственно, на этом базовых знаний достаточно, чтобы перейти от теории к практике - в следующем разделе привожу рабочий пример использования данного функционала.

 

Рабочий пример использования функционала БСП для формирования штрихкода

Здесь я привожу набор процедур и функций для формирования штрихкода:

 
 Рабочий пример

 

&НаКлиенте
Процедура Команда1(Команда)
	
	СформироватьНаСервере();

КонецПроцедуры

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

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

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

 

Этого достаточно, чтобы получить сгенерированную картинку на основе входящей строки штрихкода.

 

Заключение и выводы

В данной статье мы рассмотрели основную выжимку настройки и применения методов генерации штрихкодов с системе БСП. Данные методы вы можете использовать в любой стандартной конфигурации 1с, основой которой является библиотека стандартных подсистем.

Данный материал не претендует на какие-то "сверхсложные знания"  - скорее всего, в текущих реалиях жизни - это методичка "в тренде" специально для вас - готовый инструмент для работы со штрихкодами. Как говориться - взял и применил сразу.

Для написания этой статьи я использовал Платформу 1с - 8.3.18.1208 и конфигурацию БСП 3.1.4.104.

Спасибо, что прочитали данную статью.

 

Другие мои материалы по БСП

Так же прошу ознакомиться с другими моими статьями по функционалу библиотеки стандартных подсистем и типовым конфигурациям:

Работаем с контактной информацией в конфигурациях на БСП

Полезные встроенные функции для работы с печатными формами и не только на УТ 11.4 и БП 3.0 (сравнение)

Типовые методы конфигурации "Зарплата и управление персоналом", которые пригодятся каждому ЗУП программисту и не только

Базовые вещи БСП, которые облегчат жизнь программисту 1С

Возможности работы со строками при помощи БСП, которые должен знать каждый программист

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Tiger77 69 09.01.21 15:16 Сейчас в теме
Почему нельзя все привести в одну функцию ?
Если нужно дописать - передаем в ДопПараметрах, если нужна оптимизация - оптимизируем создание внешней компоненты и передаем в доп.параметрах...



Функция ПолучитьШтрихкод(ШиринаШтрихкода, ВысотаШтрихкода, ЗначШтрихкод, ЗначТипШтрихкода, ДопПараметры)
	СистемнаяИнформация = Новый СистемнаяИнформация;
	ВнешняяКомпонента = ГенерацияШтрихкодаСерверПовтИсп.ПодключитьКомпонентуГенерацииИзображенияШтрихкода(Строка(СистемнаяИнформация.ТипПлатформы));
	
	Если ВнешняяКомпонента = Неопределено Тогда
		ТекстСообщения = НСтр("ru = 'Ошибка подключения внешней компоненты печати штрихкода.'");
		ЗаписьЖурналаРегистрации(ТекстСообщения, 
			ОбщегоНазначения.КодОсновногоЯзыка()),
			УровеньЖурналаРегистрации.Ошибка,,, 
			ТекстСообщения);
		ВызватьИсключение ТекстСообщения;
	КонецЕсли;

	ВнешняяКомпонента.Ширина = ШиринаШтрихкода;
	ВнешняяКомпонента.Высота = ВысотаШтрихкода;
	ВнешняяКомпонента.АвтоТип = Ложь;
	ВнешняяКомпонента.ТипКода = ЗначТипШтрихкода;
	ВнешняяКомпонента.ПрозрачныйФон = Истина;
	ВнешняяКомпонента.ТипВходныхДанных = 0;
	ВнешняяКомпонента.GS1DatabarКоличествоСтрок = 1;
	ВнешняяКомпонента.УровеньКоррекцииQR = 2;
	
	ВнешняяКомпонента.ОтображатьТекст = Ложь;
	ВнешняяКомпонента.ЗначениеКода = ЗначШтрихкод;
	
	// Если установленная нами ширина меньше минимально допустимой для этого штрихкода.
	Если ВнешняяКомпонента.Ширина < ВнешняяКомпонента.МинимальнаяШиринаКода Тогда
		ВнешняяКомпонента.Ширина = ВнешняяКомпонента.МинимальнаяШиринаКода;
	КонецЕсли;
	// Если установленная нами высота меньше минимально допустимой для этого штрихкода.
	Если ВнешняяКомпонента.Высота < ВнешняяКомпонента.МинимальнаяВысотаКода Тогда
		ВнешняяКомпонента.Высота = ВнешняяКомпонента.МинимальнаяВысотаКода;
	КонецЕсли;
	
	ДвоичныеДанныеКартинки = ВнешняяКомпонента.ПолучитьШтрихкод();
	Если ДвоичныеДанныеКартинки = Неопределено Тогда
		ТекстСообщения = НСтр("ru = 'Не удалось получить картинку штрихкода.'");
		ВызватьИсключение ТекстСообщения;
	КонецЕсли
	
	Возврат  Новый Картинка(ДвоичныеДанныеКартинки);
КонецФункции

Показать
2. quazare 1405 09.01.21 15:48 Сейчас в теме
(1) ну что я могу сказать - создание картинки штрихкода в рамках БСП идет по принципу моего примера, через неэкспортную функцию ПодготовитьИзображениеШтрихкода(ВнешняяКомпонента, ПараметрыШтрихкода)
3. Rustig 1277 09.01.21 20:48 Сейчас в теме
(0) 1) при получении кода допустим через цсв, как узнать тип кода?
2) при сканировании марки как определяется тип кода по марке?
столкнулся с тем, что тип кода 18 и 24 у марок визуально похожи ... сканер не различает марки этих типов
5. tsugancov 09.01.21 21:09 Сейчас в теме
(3) Например через специальные программы. А вообще есть верификатор, штука дорогая, но показывает все ошибки при формировании и печати штрихкодов. Да и многие программы из одной и тойже строки формируют разный датаматрикс ГС1. Странно все это.
4. tsugancov 09.01.21 21:07 Сейчас в теме
Зачем ПараметрыШтрихкода.УровеньКоррекцииQR = 2; что это означает? и Чем отличается от 1 или 3 ? Это точно актуально для типа 24???
6. anosin 28 09.01.21 22:51 Сейчас в теме
17 тип правильно генерирует? Почему не похож по рисунку со стандартным gs1?
7. naf2000 10.01.21 10:43 Сейчас в теме
(6) GS1DatabarКоличествоСтрок выставлено верно?
8. pavel06 10.01.21 18:02 Сейчас в теме
Что за входные данные у Вас написаны
ВходныеДанные = "(01)04600822901507(11)161109(30)2434"; ?

Код Честного знака обычно бывает другой.
9. quazare 1405 10.01.21 18:53 Сейчас в теме
предлагаю всем у кого вопросы - скопировать рабочий пример статьи и поиграться с настройками и входными данными
10. Rustig 1277 11.01.21 12:39 Сейчас в теме
(9) на какой конфигурации тестировали?
БСП в разных конфигурациях отличается.
11. quazare 1405 11.01.21 12:47 Сейчас в теме
(10) на "голой" БСП версии 3.1.4.104
12. Rustig 1277 11.01.21 12:49 Сейчас в теме
13. Serg O. 199 13.01.21 08:09 Сейчас в теме
подключение внешней компоненты .... каждый раз ... на каждом штрихКоде?!
как тут написано

Функция ИзображениеШтрихкода(ПараметрыШтрихкода) Экспорт

СистемнаяИнформация = Новый СистемнаяИнформация;
ТипПлатформыКомпоненты = Строка(СистемнаяИнформация.ТипПлатформы);

ВнешняяКомпонента = ГенерацияШтрихкодаСерверПовтИсп.ПодключитьКомпонентуГенерацииИзображенияШтрихкода(ТипПлатформыКомпоненты);

.... это оооочень не оптимально.... замеры производительности не делали?

--------------------------------------------------------------------------------------------------------------------
например надо 1 000 ШК сделать... какой % отнимает это ещеШтрихКодное подключение?

лучше 1 раз подключить компоненту где нибудь ПриНачалеРаботыСистемы... или ещё где-то, так наверное лучше будет
aspiid; fomix; +2 1 Ответить
16. Petrosyanc 7 08.06.21 16:16 Сейчас в теме
(13) Да там ужас как зашкаливает, даже если компоненту сразу подключишь.
У меня 2000 этикеток формировалось где-то час. Перешел на шрифт, формирует меньше 2 минут.
17. serejkin 02.09.21 11:58 Сейчас в теме
(16) Коллега, а какой шрифт использовали?
18. Petrosyanc 7 23.09.21 13:04 Сейчас в теме
(17) Шрифт Code128
Но там надо писать еще функцию кодирования ШК. Все не просто так(
14. aspiid 4 25.01.21 10:17 Сейчас в теме
Пытался разобраться, как заставить компоненту сформировать эталонный ШК SSCC, точно такой же как в методичке. Мне не удалось.
Подскажите, может есть способ заставить компоненту выдавала такой ШК, как прописано в спецификациях GS1?
15. websamson 303 18.02.21 12:39 Сейчас в теме
Спасибо! Очень помогла статья!
19. ИНТЕГРА 25 04.10.21 11:15 Сейчас в теме
Статья дельная. Код рабочий и лаконичный.
С позволения автора прикладываю обработку, созданную по коду в статье.
Прикрепленные файлы:
интеграПечатьQR.epf
20. vat-74 166 13.10.21 11:23 Сейчас в теме
Как можно картинку форматировать? Смысл в том, что штрих получается узким и сканер его не распознает. Если вручную ее расширить, то распознает. Не смог найти параметров, где можно растянуть картинку по ширине печатного поля.
21. igor-gtc 18.11.21 09:15 Сейчас в теме
Вдруг кому-то еще будет полезно: функция генерации картинки ШК в УТ 11.2 называется
МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода).
Просто чтобы время не тратить на ее поиск.
Оставьте свое сообщение

См. также

Библиотека стандартных подсистем (Механизм БСП) Промо

БСП (Библиотека стандартных подсистем) Практика программирования v8 1cv8.cf Бесплатно (free)

Конфигурации в 1С пишутся для пользователей и по их «правилам» (клиент всегда прав), поэтому в основном все конфигурации разные, но достаточно часто в них используются одни и те же объекты, которые незначительно отличаются друг от друга. Действительно, сложно представить конфигурацию, где не фигурировали бы такие сущности как номенклатура, контрагенты, пользователи, валюта. И некоторые задачи являются типичными: возможность базового разграничения прав, работа с электронной почтой, задачи пользователям и т.д. Но...!

03.03.2017    82306    V.Stavinsky    22    

Подключение функционала "Присоединенные файлы" для нового объекта (БСП)

БСП (Библиотека стандартных подсистем) v8 v8::УФ БП3.0 Россия Бесплатно (free)

Данная статья поможет добавить "скрепку", т.е. возможность пользоваться функционалом БСП для присоединения файлов к любому документу.

24.11.2021    1017    kalyuzhnyyp    22    

Профили управления доступом к объектам в любой конфигурации на БСП

БСП (Библиотека стандартных подсистем) Роли и права v8 1cv8.cf Бесплатно (free)

В данной статье рассмотрим механизмы стандартного управления профилями доступа к объектам в любой типовой конфигурации, в основе которой лежит БСП.

17.11.2021    1776    quazare    3    

Журнал регистрации - основные методы работы через БСП

Журнал регистрации БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

В данной небольшой статье я привожу практические примеры работы с журналом регистрации средствами и методами библиотеки стандартных подсистем.

11.11.2021    2593    quazare    8    

Базовые приемы работы с кластером 1С при помощи БСП

Администрирование СУБД БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

В данной публикации я рассматриваю базовые приемы работы с кластером серверных баз 1С, используя типовые типовые возможности библиотеки стандартных подсистем (БСП).

26.10.2021    3088    quazare    6    

Подключение нового справочника к подсистемам БСП (дополнительные реквизиты, файлы, запрет редактирования)

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

В данной статье я привожу пример подключения нового справочника к подсистемам БСП. Статья будет применима как к самописным конфигурациям на базе БСП, так и к типовым УТ, ERP, БП и прочим конфигурациям на базе БСП.

17.08.2021    2260    maraty    10    

Префиксация объектов - полезный типовой функционал БСП

Универсальные функции БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия БУ УУ Бесплатно (free)

В данной публикации предлагаю рассмотреть основные типовые возможности библиотеки стандартных подсистем (БСП), касаемые префиксации объектов конфигураций.

21.06.2021    4865    quazare    4    

Особенности online-обмена между старыми и новыми типовыми

Перенос данных из 1C8 в 1C8 БСП (Библиотека стандартных подсистем) v8 8.3.14 8.3.6 8.3.8 КА1 КД ДО Бесплатно (free)

Столкнулся с неприятной особенностью потери части данных при обмене УСО (УПП) - ДО.

01.06.2021    3037    echo77    7    

Обзор полезных методов БСП 3.1.4. Часть 2

БСП (Библиотека стандартных подсистем) v8 Бесплатно (free)

Библиотека стандартных подсистем (далее - БСП) является частью любой типовой конфигурации, поэтому умение применять готовые процедуры и функции повышает качество разработки и избавляет от написания лишнего кода. К сожалению, не у всех есть время и упорство овладеть всей документацией, поэтому я собрал воедино наиболее популярный функционал.

27.04.2021    16415    rayastar    7    

Обзор полезных методов БСП 3.1.4

БСП (Библиотека стандартных подсистем) Практика программирования v8 1cv8.cf Бесплатно (free)

Библиотека стандартных подсистем (далее - БСП) является частью любой типовой конфигурации, поэтому умение применять готовые процедуры и функции повышает качество разработки и избавляет от написания лишнего кода. К сожалению, не у всех есть время и упорство овладеть всей документацией, поэтому я собрал воедино наиболее популярный функционал.

25.03.2021    41912    rayastar    51    

Печать макета MS Word в любом документе с помощью БСП

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

В данной статье рассмотрим типовой функционал вывода на печать макетов печатных форм MS Word (*.docx) для любого документа конфигурации, основанной на библиотеке стандартных подсистем. Вариант клиент-серверный.

23.02.2021    6551    quazare    3    

Базовое понимание внедрения механизма печати в любом документе конфигурации на БСП

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

В данной статье рассмотрим базовое применение методов вывода на печать макетов печатных форм с помощью БСП любых типовых или собственных документов.

17.02.2021    9082    quazare    20    

Перенос/копирование и установка отбора/фильтра/периода при интерактивном переключении или смене варианта отчета/СКД в БСП 3.1 (1C ERP, УТ, БП, ...)

БСП (Библиотека стандартных подсистем) Практика программирования v8 1cv8.cf Бесплатно (free)

Пользователи ругаются - не хотят заново заполнять период, отборы при смене варианта отчета - в публикации с открытым кодом решим эту боль.

18.01.2021    1474    SizovE    4    

Асинхронное выполнение длительных операций

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

Демонстрация использования функционала БСП для выполнения длительных операций. Механизм может быть полезен, например, при загрузке/выгрузке больших объемов данных.

28.12.2020    2340    prog_mayskiyse    8    

Метаданные и их идентификаторы

Структура метаданных БСП (Библиотека стандартных подсистем) v8 Бесплатно (free)

Идентификаторы (GUID'ы) метаданных конфигурации. Немного о том, как их получить.

05.12.2020    12733    YPermitin    27    

Сохранение настроек

Универсальные функции БСП (Библиотека стандартных подсистем) Практика программирования v8 1cv8.cf Бесплатно (free)

Делюсь еще одним не самым очевидным способом хранения настроек в базах на БСП без доработки конфигурации. Весь код в статье.

22.11.2020    4492    the1    8    

Дополнительные реквизиты формы (простой вариант взаимодействия)

БСП (Библиотека стандартных подсистем) Работа с интерфейсом Практика программирования v8 Россия Бесплатно (free)

Упрощаем взаимодействия с дополнительными реквизитами на форме с помощью фиксированного соответствия.

14.11.2020    2346    samvani    0    

Запуск почти любых процедур и функции конфигураций в асинхронном режиме - БСП - Длительные операции [Часть 2]

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

В данной статье я привожу описание рекомендуемых 1С функций к использованию в работе с длительными операциями в рамках БСП.

30.10.2020    7623    quazare    5    

Программное создание характеристик с дополнительными реквизитами в УНФ 1.6

БСП (Библиотека стандартных подсистем) v8 УНФ Бесплатно (free)

В статье опишу порядок создания объектов и вариант их заполнения.

29.10.2020    2113    malikov_pro    7    

Гарантированно рабочий пример использования длительных операций на БСП с отображением прогресса. [Часть 1]

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

В данной статье я предлагаю вам гарантированно действующий пример работы с длительными операциями в рамках Библиотеки стандартных подсистем. Так же рассмотрим некоторые новые функции последней версии БСП для работы с длительными операциями.

29.10.2020    11087    quazare    34    

Простой пример разработки регулярного обмена с использованием БСП на примере ERP 2.4 и УПП 1.3

БСП (Библиотека стандартных подсистем) Перенос данных из 1C8 в 1C8 v8 1cv8.cf УПП1 КД ERP2 Россия Бесплатно (free)

Данный вариант подойдет тем, кто хочет настроить "свой" регулярный обмен с добавлением "своих" планов обмена с использованием правил обмена на КД 2.1.

27.10.2020    7342    байт    30    

Вычислить РАЗНОСТЬДАТ в рабочих днях

БСП (Библиотека стандартных подсистем) Практика программирования v8::Запросы v8::СКД ERP2 БП3.0 УТ11 ЗУП3.x Бесплатно (free)

Вычисление количества рабочих днях между двумя датами в запросе.

20.10.2020    3877    antonivan    17    

Разработка функционала обмена с несколькими внешними точками

Обмен данными и распределенная БД БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

В статье приводятся несколько практических советов по организации обмена с несколькими точками, прежде всего «не 1С». Рассматривается создание плана обмена, использование параметров, программирование и настройка регламентных заданий. Доработка системы проводится без изменения конфигурации с использованием расширения и внешней обработки.

21.09.2020    1272    Sergey1CSpb    2    

Работаем с контактной информацией в конфигурациях на БСП

БСП (Библиотека стандартных подсистем) Практика программирования v8 1cv8.cf Россия Бесплатно (free)

В статье приведены базовые работы с контактной информацией в конфигурациях, включающих в себя БСП.

14.09.2020    21833    quazare    20    

Базовые вещи БСП, которые облегчат жизнь программисту 1С

БСП (Библиотека стандартных подсистем) Практика программирования v8 1cv8.cf Россия Бесплатно (free)

В данной публикации я опишу полезные процедуры и функции модуля общего назначения библиотеки стандартных подсистем, обязательные к использованию любым программистом 1С.

30.08.2020    20481    quazare    34    

Выполнение внешней обработки по расписанию для управляемого и обычного приложения

БСП (Библиотека стандартных подсистем) Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Использование БСП для выполнения внешних обработок в управляемом и обычном приложении

06.08.2020    13699    RPGrigorev    0    

RLS добавление ограничения доступа к данным по произвольному справочнику через штатные механизмы

БСП (Библиотека стандартных подсистем) Информационная безопасность Роли и права v8 КА2 Россия УУ Бесплатно (free)

Решал задачу ограничения доступ к объектам по справочнику "Банковские счета" штатными средствами БСП. Конфигурация КА 2.2. В остальных на БСП должно работать так же. Хотел сделать инструкцию для себя на будущее, решил поделиться.

05.08.2020    3879    ER34    2    

Возможности работы со строками при помощи БСП, которые должен знать каждый программист

БСП (Библиотека стандартных подсистем) Практика программирования v8 Бесплатно (free)

Переходим на следующий уровень работы со строками, уходим от типовых возможностей платформы. Узнаем, как применить функционал БСП конфигурации.

05.07.2020    14018    quazare    37    

Мастер-класс "Ведение проектов в типовых конфигурациях 1С"

Методология CI/CD БСП (Библиотека стандартных подсистем) v8 Бесплатно (free)

При адаптации типовой конфигурации под особенности учета в компании важно обеспечить возможность легкого обновления поставки. Как организовать архитектуру решения и продумать процесс быстрой и эффективной разработки без ущерба типовой функциональности, на конференции Infostart Event 2019 Inception рассказал ведущий программист компании BIA-Teсhnologies Алексей Князьков.

05.06.2020    5084    AKnyazkov    4    

Способ хранения данных расширения или дополнительной обработки

БСП (Библиотека стандартных подсистем) v8 Бесплатно (free)

Описание способа хранения данных расширения или дополнительной обработки в информационной базе с использованием функционала Библиотеки стандартных подсистем.

01.06.2020    5943    Sedaiko    17    

Переопределение настроек отчета на СКД. 1С: БСП

БСП (Библиотека стандартных подсистем) v8::СКД ERP2 Россия Бесплатно (free)

Изменение настроек СКД отчета без доработки модулей БСП

24.04.2020    4198    klimsrv    6    

Картинка в форме списка номенклатуры для УТ 11.4

БСП (Библиотека стандартных подсистем) Практика программирования v8 1cv8.cf Россия Бесплатно (free)

В публикации приведу код, позволяющий выводить картинку номенклатуры в форме списка.

23.03.2020    2442    malikov_pro    2    

Полезные функции БСП (Часть 2)

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

Список полезных функций из состава Библиотеки стандартных подсистем 3.1.

10.03.2020    21025    user5300    20    

Механизмы проведения документов при обмене по универсальному формату

Перенос данных из 1C8 в 1C8 БСП (Библиотека стандартных подсистем) v8 Бесплатно (free)

Как проводятся документы при обмене по универсальному формату. Пример доработки типовых правил обмена с переносом состояния документа: проведен/не поведен/пометка удаления.

04.03.2020    6666    partizand    7    

[БСП] Внешняя печатная форма: как перед печатью выводить форму настроек

Печатные формы документов БСП (Библиотека стандартных подсистем) v8 КА2 Бесплатно (free)

Во внешней печатной форме перед печатью нужно выводить форму настроек. Для примера рассматриваю печатную форму "Акт сверки взаимных расчетов " .

19.12.2019    14266    John_d    9    

Реализация печати QR кодов "Библиотека стандартных подсистем", редакция 3.1 (3.1.1.151)

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Рассмотрим, как реализовать печать QR кодов с помощью механизмов БСП.

16.10.2019    8309    paulis    4    

Реализация команды печати "Библиотека стандартных подсистем", редакция 3.1 (3.1.1.151)

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

В новом релизе "БСП" произошли изменения в процедурах общих модулей, связанных с механизмом печати, и в процедурах их вызова в формах документов и в формах списков. Рассмотрим их.

12.10.2019    8854    paulis    4