helpf.pro
Регистрация

v8: Что за тип Характеристика?

ashaxm
15.10.2012 12:18Прочитано: 8021
В конфигураторе для регистра сведений ШтрихКоды в свойствах измерения Штрихкод указан тип "Характеристика.ШтрихКоды"
Что это за тип, как с ним работать? В синтакс-помошнике не нашел.
В конфигурации еще есть план видов характеристик ТипыШтрихкодов, но он используется как тип ресурса ТипШтрихкода.
А с самим штрихкодом непонятно. Можно ли с ним работать как с просто строкой?
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
16.10.2012 16:20Ответ № 1
(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);

Возврат Штрихкод;

КонецФункции
Подсказка: Для быстрого перемещения к последнему ответу или к вопросу используйте или .
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.