(0 ) ashaxm , это план видов характеристик
пример работы с этим:
Код 1C v 8.х // Проверка штрихкода на корректность
//
// Параметры:
// ШтрихКод - проверяемый штрихкод;
// ТипШтрихкода - элемент плана видов характеристик "ТипыШтрихкодов", содержит тип
// проверяемого штрихкода.
//
// Возвращаемое значение:
// Истина если штрих код корректен, иначе Ложь
//
Функция ПроверитьШтрихКод(ШтрихКод, ТипШтрихкода) Экспорт
ДлинаКода = СтрДлина(Штрихкод);
Если ДлинаКода = 0 Тогда
Возврат Ложь;
Иначе
Если ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13 Тогда
Если (ДлинаКода <> 13)
Или НЕ(ТолькоЦифры(Штрихкод)) // штрихкод должен состоять из цифр
Или КонтрольныйСимволEAN(Лев(Штрихкод,12), 13) <> Прав(Штрихкод, 1) Тогда
Возврат Ложь;
КонецЕсли;
ИначеЕсли ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN8 Тогда
Если (ДлинаКода <> 8)
Или НЕ(ТолькоЦифры(Штрихкод)) // штрихкод должен состоять из цифр
Или КонтрольныйСимволEAN(Лев(Штрихкод, 7), 8 ) <> Прав(Штрихкод, 1) Тогда
Возврат Ложь;
КонецЕсли;
ИначеЕсли ТипШтрихКода = ПланыВидовХарактеристик.ТипыШтрихкодов.Code39 Тогда
Условие = СтрДлина(ШтрихКод) - 1;
Для Индекс = 0 По Условие Цикл
Символ = Лев(Прав(Штрихкод, Условие - Индекс + 1), 1);
Если НЕ (((Символ >= "0") И (Символ <= "9"))
ИЛИ ((Символ >= "A") И (Символ <= "Z"))
ИЛИ (Символ = "-")
ИЛИ (Символ = ".")
ИЛИ (Символ = " ")
ИЛИ (Символ = "$")
ИЛИ (Символ = "/")
ИЛИ (Символ = "+")
ИЛИ (Символ = "%")
ИЛИ (Символ = "*")) Тогда
Возврат Ложь;
КонецЕсли
КонецЦикла;
ИначеЕсли ТипШтрихКода = ПланыВидовХарактеристик.ТипыШтрихкодов.Code128
ИЛИ ТипШтрихКода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN128 Тогда
Условие = СтрДлина(ШтрихКод) - 1;
Для Индекс = 0 По Условие Цикл
Если КодСимвола(ШтрихКод, Индекс) > 127 Тогда
Возврат Ложь;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Возврат Истина;
КонецЕсли;
Возврат Ложь;
КонецФункции // ПроверитьШтрихКод()
// Функция осуществляет формирование нового внутреннего штрихкода для
// штучного товара
//
// Параметры
// Код – <Число>
// – Измерение "Код" регистра сведений Штрихкоды
//
// Возвращаемое значение:
// <Строка>
// – сформированный штрихкод
//
Функция СформироватьШтрихКод(Знач ПрефиксШтучногоТовара = Неопределено, Знач ПрефиксВнутреннегоШтрихкода = Неопределено) Экспорт
Если ПрефиксШтучногоТовара = Неопределено Тогда
ПрефиксШтучногоТовара = СокрЛП(Константы.ПрефиксШтучногоТовара.Получить());
КонецЕсли;
Если ПрефиксВнутреннегоШтрихкода = Неопределено Тогда
ПрефиксВнутреннегоШтрихкода = Константы.ПрефиксВнутреннегоШтрихкода.Получить();
КонецЕсли;
ПрефиксШтучногоТовара = ?(ПустаяСтрока(ПрефиксШтучногоТовара), "0", ПрефиксШтучногоТовара);
ПрефиксВнутреннегоШтрихкода = Формат(ПрефиксВнутреннегоШтрихкода, "ЧЦ=2; ЧН=; ЧВН=");
Запрос = Новый Запрос("
|ВЫБРАТЬ
| МАКСИМУМ(ПОДСТРОКА(РегШтрихКоды.Штрихкод, 5, 8)) КАК Код
|ИЗ
| РегистрСведений.ШтрихКоды КАК РегШтрихКоды
|ГДЕ
| РегШтрихКоды.ТипШтрихкода = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ТипыШтрихкодов.EAN13)
| И РегШтрихКоды.Штрихкод ПОДОБНО ""2" + ПрефиксШтучногоТовара + ПрефиксВнутреннегоШтрихкода + "_________""
|");
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
ТекКод = ?(Выборка.Код = NULL, 1, Мин(ОбщегоНазначения.ПривестиСтрокуКЧислу(Выборка.Код) + 1, 99999999));
Штрихкод = "2" + ПрефиксШтучногоТовара + ПрефиксВнутреннегоШтрихкода + Формат(ТекКод, "ЧЦ=8; ЧВН=; ЧГ=");
Штрихкод = Штрихкод + КонтрольныйСимволEAN(ШтрихКод, 13);
Возврат Штрихкод;
КонецФункции