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

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

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

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

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

 

Введение

Привет всем! В данной статье предлагаю небольшой обзор возможностей актуальной библиотеки стандартных подсистем (БСП) на предмет формирования большинства существующих штрихкодов. На момент написания статьи точка актуальности - это БСП версии 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 728 09.01.21 15:48 Сейчас в теме
(1) ну что я могу сказать - создание картинки штрихкода в рамках БСП идет по принципу моего примера, через неэкспортную функцию ПодготовитьИзображениеШтрихкода(ВнешняяКомпонента, ПараметрыШтрихкода)
3. Rustig 1638 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 728 10.01.21 18:53 Сейчас в теме
предлагаю всем у кого вопросы - скопировать рабочий пример статьи и поиграться с настройками и входными данными
10. Rustig 1638 11.01.21 12:39 Сейчас в теме
(9) на какой конфигурации тестировали?
БСП в разных конфигурациях отличается.
11. quazare 728 11.01.21 12:47 Сейчас в теме
(10) на "голой" БСП версии 3.1.4.104
12. Rustig 1638 11.01.21 12:49 Сейчас в теме
13. Serg O. 190 13.01.21 08:09 Сейчас в теме
подключение внешней компоненты .... каждый раз ... на каждом штрихКоде?!
как тут написано

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

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

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

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

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

лучше 1 раз подключить компоненту где нибудь ПриНачалеРаботыСистемы... или ещё где-то, так наверное лучше будет
aspiid; fomix; +2 Ответить
14. aspiid 25.01.21 10:17 Сейчас в теме
Пытался разобраться, как заставить компоненту сформировать эталонный ШК SSCC, точно такой же как в методичке. Мне не удалось.
Подскажите, может есть способ заставить компоненту выдавала такой ШК, как прописано в спецификациях GS1?
Оставьте свое сообщение

См. также

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

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

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

03.03.2017    71976    V.Stavinsky    22    

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

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

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

18.01.2021    322    SizovE    0    

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

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

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

28.12.2020    1367    prog_mayskiyse    7    

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

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

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

05.12.2020    3807    YPermitin    23    

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

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

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

22.11.2020    2533    the1    8    

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

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

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

14.11.2020    1215    samvani    0    

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

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

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

30.10.2020    5704    quazare    5    

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

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

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

29.10.2020    4570    quazare    27    

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

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

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

27.10.2020    3617    байт    8    

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

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

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

20.10.2020    2744    antonivan    17    

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

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

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

21.09.2020    868    Sergey1CSpb    2    

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

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

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

14.09.2020    5146    quazare    8    

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

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

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

30.08.2020    9805    quazare    33    

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

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

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

06.08.2020    3277    RPGrigorev    0    

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

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

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

05.08.2020    1959    ER34    2    

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

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

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

05.07.2020    9728    quazare    36    

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

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

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

05.06.2020    4314    AKnyazkov    3    

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

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

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

01.06.2020    3935    Sedaiko    17    

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

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

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

24.04.2020    3287    klimsrv    6    

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

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

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

23.03.2020    1931    malikov_pro    1    

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

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

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

10.03.2020    14214    user5300    18    

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

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

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

04.03.2020    5326    partizand    6    

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

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

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

19.12.2019    11426    John_d    8    

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

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

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

16.10.2019    7081    paulis    4    

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

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

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

12.10.2019    6658    paulis    4    

Шпаргалка (БСП). Добавление в новый документ механизма печати дополнительных печатных форм

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

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

10.10.2019    20786    John_d    17    

От чего можно отказаться при разработке расширений 1С

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

Разработка расширений 1С и оптимизация через механизм БСП: Дополнительные отчеты и обработки.

23.09.2019    10970    independ    33    

БСП: Дополнительные отчеты и обработки - одна обработка, несколько форм

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

Как в одной дополнительной обработке разместить несколько форм с типом команды "ОткрытиеФормы"?

29.07.2019    11404    dsdred    9    

Подсистема "Варианты отчетов". Используете ли Вы ее правильно?

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

Небольшая история про использование подсистемы "Варианты отчетов" из БСП. Используете ли Вы ее правильно?

04.06.2019    45538    YPermitin    52    

Подсистема БСП «Управление доступом», основные объекты и регистры

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

Основные принципы работы подсистемы «Управление доступом» из состава БСП. Виды доступа, ограничение доступа на уровне записей. Описание основных объектов и регистров, используемых подсистемой.

23.05.2019    24624    ids79    9    

Как программно открыть внешний отчет из "Дополнительных отчетов и обработок" и передать параметры (при помощи БСП)

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

Пример, как при помощи БСП программно открыть внешний отчет/обработку из "Дополнительные отчеты и обработки" и передать параметры...

25.03.2019    26942    ellavs    15    

Добавление отчетов в типовые конфигурации 1С

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

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

07.03.2019    60337    ids79    46    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

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

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    44645    ids79    11    

Добавление команд печати в конфигурациях на БСП 2.4.3 (в частности, в самописных документах в Бухгалтерии 3.0 после релиза 3.0.52.35)

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

В статье https://infostart.ru/public/237013/ пользователя nick max рассматривался список действий для подключения команд печати в Бухгалтерии 3.0, работающей на БСП 2.3.6. В новом релизе Бухгалтерии 3.0.52.35 от 15.09.2017г. стала использоваться БСП 2.4.3, из-за чего произошли изменения в процедурах общих модулей, связанных с механизмом печати, и в процедурах их вызова в формах документов и в формах списков. Рассмотрим их.

18.09.2017    72830    bugtester    52    

Фоновое формирование отчета СКД на УФ средствами БСП

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

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

16.05.2017    28674    herfis    10    

Используем механизмы обмена данными БСП для произвольного обмена

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

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

23.08.2016    35104    Патриот    28    

Отладка конвертации данных 2.1 в конфигурациях, построенных на БСП 2.1 (БП 3.0, УТ 11 etc.)

Практика программирования Распределенная БД (УРИБ, УРБД) Обмен через XML БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Отладка процесса выгрузки/загрузки данных при проведении синхронизации в новых конфигурациях 1С может вызвать (у меня вызвала) некоторые затруднения. О них и пойдёт речь.

29.10.2015    40843    NittenRenegade    23