&НаКлиенте
Функция ОпределитьТипШтрихКода(текШтрихКод)
Тип_ШтрихКода = "";
Длина_ШтрихКода = СтрДлина(текШтрихКод);
СуммаШтрихКода = 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>
Поиск свободного штрихкода (EAN-13) внутри одного префикса
Процедура Изобразить сканер штрих-кода
НеОпределенаУчетнаяСистемаПоТипу (БСП)
ТипОбъектаПоКодуСериализации (БСП)
ОпределитьСсылкуТипаИнформации (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)