CODE
Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные)
Перем СЗ, Товар, ШК, СпрТов, СпрШК;
Если ( Событие = "BarCodeValue") Тогда
СканерШК.ПосылкаДанных=0;
СпрШК = СоздатьОбъект("Справочник.ПартииТовара");
ШК=Прав(Данные,13);
Если СпрШК.НайтиПоКоду(ШК,0)=0 Тогда
ШК=СокрЛП(Данные);
СпрТов = СоздатьОбъект("Справочник.Номенклатура");
Если СпрТов.НайтиПоРеквизиту("ШтрихКод", ШК, 1)=0 Тогда
Предупреждение(" Товар с кодом "+ШК+" не найден !!!");
СканерШК.ПосылкаДанных=1;
Возврат;
Иначе
СЗ=СоздатьОбъект("СписокЗначений");
СЗ.УдалитьВсе();
СЗ.ДобавитьЗначение(0,"ШтрихКод");
СЗ.ДобавитьЗначение(СпрТов.ТекущийЭлемент(),"Товар");
СЗ.ДобавитьЗначение(1,"Количество");
СканерШК.ПосылкаДанных=1;
ОткрытьФорму("Документ.Чек", СЗ);
КонецЕсли;
Иначе
СЗ=СоздатьОбъект("СписокЗначений");
СЗ.УдалитьВсе();
СЗ.ДобавитьЗначение(ШК,"ШтрихКод");
СЗ.ДобавитьЗначение(СпрШК.ТекущийЭлемент().Владелец,"Товар");
СЗ.ДобавитьЗначение(1,"Количество");
СканерШК.ПосылкаДанных=1;
ОткрытьФорму("Документ.Чек", СЗ);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
CODE
Функция ШТ_КОД(товар) экспорт
ШтрКод = Строка(товар.ШтрихКод);
Префикс = "10";
Если СтрДлина(ШтрКод) <12 Тогда
Предупреждение("Печать данного типа штрих-кода не поддерживается");
возврат("");
ШтрКод =Префикс+ДобавитьСлева(Строка(товар.Владелец.код),5,"0")+ДобавитьСлева(Строка(товар.Код),5,"0");
ИначеЕсли (Лев(ШтрКод,2)="10") или (лев(ШтрКод,2)="21") Тогда
ШтрКод =Префикс+ДобавитьСлева(Строка(товар.Владелец.код),5,"0")+ДобавитьСлева(Строка(товар.Код),5,"0");
ИначеЕсли (СтрДлина(ШтрКод)<13) и (СтрДлина(ШтрКод)>8) Тогда
ШтрКод=ДобавитьСлева(ШтрКод,12,"0");
Иначе
ШтрКод=Лев(ШтрКод,12);
КонецЕсли;
ШтрКод = EAN13CodeGenerate(Число(ШтрКод));
возврат(ШтрКод);
КонецФункции