Определить тип штрих кода

&НаКлиенте
Функция ОпределитьТипШтрихКода(текШтрихКод)

   Тип_ШтрихКода = "";
   Длина_ШтрихКода = СтрДлина(текШтрихКод);
   СуммаШтрихКода = 0;

   Если Длина_ШтрихКода = 0 Тогда
       Возврат Тип_ШтрихКода;
   КонецЕсли;

   Если Длина_ШтрихКода = 14 Тогда // ITF14

       КоэффициентШК = 1;
       Для Сч = 1 По 13 Цикл
           ВремКодСимвола = КодСимвола(текШтрихКод, Сч);
           Если ВремКодСимвола < 48 Или ВремКодСимвола > 57 Тогда
               Прервать;
           КонецЕсли;
           СуммаШтрихКода = СуммаШтрихКода + КоэффициентШК * (ВремКодСимвола - 48);
           КоэффициентШК = 4 - КоэффициентШК;
       КонецЦикла;
       СуммаШтрихКода = (10 - СуммаШтрихКода % 10) % 10;
       Если КодСимвола(текШтрихКод, 14) = СуммаШтрихКода + 48 Тогда
           Тип_ШтрихКода = "ITF14";
       КонецЕсли;

   ИначеЕсли Длина_ШтрихКода = 13 Тогда // EAN13

       EAN13_Булево = Истина;
       КоэффициентШК = 1;
       Для Сч = 1 По 12 Цикл
           ВремКодСимвола = КодСимвола(текШтрихКод, Сч);
           Если ВремКодСимвола < 48 Или ВремКодСимвола > 57 Тогда
               EAN13_Булево = Ложь;
               Прервать;
           КонецЕсли;
           СуммаШтрихКода = СуммаШтрихКода + КоэффициентШК * (ВремКодСимвола - 48);
           КоэффициентШК = 4 - КоэффициентШК;
       КонецЦикла;
       СуммаШтрихКода = (10 - СуммаШтрихКода % 10) % 10;
       ПроверочныйСимвол = Символ(СуммаШтрихКода + 48);
       Если EAN13_Булево И ПроверочныйСимвол = Прав(текШтрихКод, 1) Тогда
           Тип_ШтрихКода = "EAN13";
       КонецЕсли;

   ИначеЕсли Длина_ШтрихКода = 8 Тогда // EAN8

       EAN8_Булево = Истина;
       КоэффициентШК = 3;
       Для Сч = 1 По 7 Цикл
           ВремКодСимвола = КодСимвола(текШтрихКод, Сч);
           Если ВремКодСимвола < 48 Или ВремКодСимвола > 57 Тогда
               EAN8_Булево = Ложь;
               Прервать;
           КонецЕсли;
           СуммаШтрихКода = СуммаШтрихКода + КоэффициентШК * (ВремКодСимвола - 48);
           КоэффициентШК = 4 - КоэффициентШК;
       КонецЦикла;
       СуммаШтрихКода = (10 - СуммаШтрихКода % 10) % 10;
       Если EAN8_Булево И (КодСимвола(текШтрихКод, 8) = СуммаШтрихКода + 48) Тогда
           Тип_ШтрихКода = "EAN8";
       КонецЕсли;

   КонецЕсли;

   Если Тип_ШтрихКода= "" Тогда // CODE39

       CODE39_Булево = Истина;
       Для Сч = 1 По Длина_ШтрихКода Цикл
           ВремКодСимвола = КодСимвола(текШтрихКод, Сч);
           Если (ВремКодСимвола <> 32)
               И (ВремКодСимвола < 36 Или ВремКодСимвола > 37)
               И (ВремКодСимвола <> 43)
               И (ВремКодСимвола < 45 Или ВремКодСимвола > 57)
               И (ВремКодСимвола < 65 Или ВремКодСимвола > 90) Тогда
               CODE39_Булево = Ложь;
               Прервать;
           КонецЕсли;
       КонецЦикла;

       Если CODE39_Булево Тогда
           Тип_ШтрихКода = "CODE39";
       КонецЕсли

   КонецЕсли;

   Если Тип_ШтрихКода= "" Тогда // CODE128
       // CODE128 символы ASCII от 0 до 127
       // (цифры от 0 до 9, буквы от A до Z и от a до z) и специальные символы
       CODE128_Булево = Истина;
       Для Сч = 1 По Длина_ШтрихКода Цикл
           ВремКодСимвола = КодСимвола(текШтрихКод, Сч);
           Если (ВремКодСимвола > 127) Тогда
               CODE128_Булево = Ложь;
               Прервать;
           КонецЕсли;
       КонецЦикла;

       Если CODE128_Булево Тогда
           Тип_ШтрихКода = "CODE128";
       КонецЕсли

   КонецЕсли;

   Если Тип_ШтрихКода = "CODE128" Тогда // EAN128
       // В коде EAN128 регламентирован словарь CODE128
       // но регламентированы группы кодов
       Если КодСимвола(текШтрихКод, 1) = 40 Тогда
           Тип_ШтрихКода = "EAN128";
       КонецЕсли;
   КонецЕсли;

   Возврат Тип_ШтрихКода;

КонецФункции
Тип кода параметра штрих кода в 1С 8.3:
0    <EAN8>
1     <EAN13>
2     <EAN128>
3     <CODE39>
4     <CODE128>
5     <CODE16K>
6     <PDF417>
7     <Industrial2of5>
8     <Interleaved2of5>
9     <Code39FullASCII>
10    <CODE93>
11    <ITF14>
12    <RSS14>
13    <CodaBar>
14    <EAN13 AddOn 2>
15    <EAN13 AddOn 5>
16    <QR>
17    <GS1 databar extended stacked>
18    <DataMatrix ASCII>
19    <DataMatrix Base256>
20    <DataMatrix Text>
21    <DataMatrix C40>
22    <DataMatrix X12>
23    <DataMatrix Edifact>

Источник

0

См. также

Поиск свободного штрихкода (EAN-13) внутри одного префикса

Процедура Изобразить сканер штрих-кода

НеОпределенаУчетнаяСистемаПоТипу (БСП)

Использование в Мобильном Приложении (Андроид) сканера ШтрихКодов с компонентой Драйвер1СУстройствоВводаNative от 1С

КодыТиповСсылок (БСП)

ТипОбъектаПоКодуСериализации (БСП)

ОпределитьСсылкуТипаИнформации (БСП)

ПолучитьКодКартинкиШаблонаАнкеты (БСП)

ТекстНеОпределено (БСП)

Определить это Linux или Windows

Модератору