К публикации этого счастья меня подвигла вот эта разработка //infostart.ru/projects/5818/ Почему ему можно, а мне нельзя?
Вот эта //infostart.ru/projects/5817/ , например, гораздо толковее и в ней есть функция КонтрольныйСимвол_EAN.
По просьбе 8-рочников вытаскиваю код. Перевести его на язык 8-ки нетрудно.
Перем А[10],В[10],С[10],ЭтикетокВСтроке,Таб,НомерКолонки,НомерСтроки;
//_____________________________________________________________________________
Процедура Этикетка(СНовойСтроки,Код)
// Цифра, стоящая на 13-й позиции (она-же первая при чтении кода справа налево) определяет,
// в какой комбинации A или B, согласно паритета цифрового знака, будет исполнена каждая из
// цифр левой половины символа кода. По таблице:
ПерваяЦифра=Строка(Число(Сред(Код,1,1)));
Если ПерваяЦифра="0" Тогда
ПеременностьПаритета=" ААААААСССССС";
ИначеЕсли ПерваяЦифра="1" Тогда
ПеременностьПаритета=" ААВАВВСССССС";
ИначеЕсли ПерваяЦифра="2" Тогда
ПеременностьПаритета=" ААВВАВСССССС";
ИначеЕсли ПерваяЦифра="3" Тогда
ПеременностьПаритета=" ААВВВАСССССС";
ИначеЕсли ПерваяЦифра="4" Тогда
ПеременностьПаритета=" АВААВВСССССС";
ИначеЕсли ПерваяЦифра="5" Тогда
ПеременностьПаритета=" АВВААВСССССС";
ИначеЕсли ПерваяЦифра="6" Тогда
ПеременностьПаритета=" АВВВААСССССС";
ИначеЕсли ПерваяЦифра="7" Тогда
ПеременностьПаритета=" АВАВАВСССССС";
ИначеЕсли ПерваяЦифра="8" Тогда
ПеременностьПаритета=" АВАВВАСССССС";
ИначеЕсли ПерваяЦифра="9" Тогда
ПеременностьПаритета=" АВВАВАСССССС";
КонецЕсли;
// Выведем разделитель перед штрихкодом (две удлиненные тонкие линии)
Если СНовойСтроки=1 Тогда
Таб.ВывестиСекцию("Р0|Штрих");
НомерКолонки=1;
НомерСтроки=НомерСтроки+5;
Иначе
Таб.ПрисоединитьСекцию("Р0|Штрих");
КонецЕсли;
Таб.ПрисоединитьСекцию("Р0|Штрих");
Таб.ПрисоединитьСекцию("Р0|Штрих");
Таб.ПрисоединитьСекцию("Р0|Штрих");
Таб.ПрисоединитьСекцию("Р0|Штрих");
Таб.ПрисоединитьСекцию("Р0|Штрих");
Таб.ПрисоединитьСекцию("Р0|Штрих");
Таб.ПрисоединитьСекцию("Р0|Штрих");
Таб.ПрисоединитьСекцию("Р1|Штрих");
Таб.ПрисоединитьСекцию("Р0|Штрих");
Таб.ПрисоединитьСекцию("Р1|Штрих");
НомерКолонки=НомерКолонки+11;
Обл=Таб.Область("R"+Строка(НомерСтроки+2)+"C"+Строка(НомерКолонки-11)+":R"+Строка(НомерСтроки+2)+"C"+Строка(НомерКолонки-4));
Обл.Объединить();
Обл.Текст=ПерваяЦифра;
//Таб.ПрисоединитьСекцию("Р0|Штрих");
Для Поз=2 По 13 Цикл
ИмяМассива=Сред(ПеременностьПаритета,Поз,1);
Позиция=Строка(Число(Сред(Код,Поз,1)));
КодЦифры=Шаблон("["+ИмяМассива+"["+?(Позиция="0","10",Позиция)+"]]");
Стр="";
Для Поз1=1 По 7 Цикл
НольОдин=Сред(КодЦифры,Поз1,1);
Стр=Стр+НольОдин;
Таб.ПрисоединитьСекцию(НольОдин+"|Штрих");
НомерКолонки=НомерКолонки+1;
КонецЦикла;
Обл=Таб.Область("R"+Строка(НомерСтроки+2)+"C"+Строка(НомерКолонки-7)+":R"+Строка(НомерСтроки+2)+"C"+НомерКолонки);
Обл.Объединить();
Обл.ВертикальноеПоложение(1);
Обл.Текст=Позиция;
Если Поз=7 Тогда
// Выведем разделитель
Таб.ПрисоединитьСекцию("Р0|Штрих");
Таб.ПрисоединитьСекцию("Р1|Штрих");
Таб.ПрисоединитьСекцию("Р0|Штрих");
Таб.ПрисоединитьСекцию("Р1|Штрих");
Таб.ПрисоединитьСекцию("Р0|Штрих");
НомерКолонки=НомерКолонки+5;
КонецЕсли;
КонецЦикла;
Таб.ПрисоединитьСекцию("Р1|Штрих");
Таб.ПрисоединитьСекцию("Р0|Штрих");
Таб.ПрисоединитьСекцию("Р1|Штрих");
Таб.ПрисоединитьСекцию("Р0|Штрих");
Таб.ПрисоединитьСекцию("1|Надпись");
НомерКолонки=НомерКолонки+6;
Обл=Таб.Область("R"+Строка(НомерСтроки+3)+"C"+Строка(НомерКолонки-106)+":R"+Строка(НомерСтроки+3)+"C"+Строка(НомерКолонки-2));
Обл.Объединить();
Обл.РазмерШрифта(10);
Обл.Контроль(4);
Обл.Полужирный(1);
Обл.Текст=?(ПустаяСтрока(Товар.ПолнНаименование)=1,Товар.Наименование,Товар.ПолнНаименование);
Обл=Таб.Область("R"+Строка(НомерСтроки+4)+"C"+Строка(НомерКолонки-106)+":R"+Строка(НомерСтроки+4)+"C"+Строка(НомерКолонки-2));
Обл.Объединить();
Обл.РазмерШрифта(7);
Обл.ВысотаСтроки(15);
Обл.Текст="Ед. изм: литр";//+Товар.БазоваяЕдиница;
КонецПроцедуры //Этикетка
//_____________________________________________________________________________
Процедура ПриОткрытии()
А[1] ="0011001";
А[2] ="0010011";
А[3] ="0111101";
А[4] ="0100011";
А[5] ="0110001";
А[6] ="0101111";
А[7] ="0111011";
А[8] ="0110111";
А[9] ="0001011";
А[10]="0001101";
В[1] ="0110011";
В[2] ="0011011";
В[3] ="0100001";
В[4] ="0011101";
В[5] ="0111001";
В[6] ="0000101";
В[7] ="0010001";
В[8] ="0001001";
В[9] ="0010111";
В[10]="0100111";
С[1] ="1100110";
С[2] ="1101100";
С[3] ="1000010";
С[4] ="1011100";
С[5] ="1001110";
С[6] ="1010000";
С[7] ="1000100";
С[8] ="1001000";
С[9] ="1110100";
С[10]="1110010";
ЭтикетокВСтроке=6;
КонецПроцедуры //ПриОткрытии
//_____________________________________________________________________________
Процедура ПечатаемНесколькоЭтикеток()
Таб=СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица2");
НомерКолонки=1;
НомерСтроки=-4;
Для Поз=0 По 13 Цикл
СНовойСтроки=?(Цел(Поз/ЭтикетокВСтроке)=Поз/ЭтикетокВСтроке,1,0);
Этикетка(СНовойСтроки,4600561021030+Поз*15);
КонецЦикла;
Таб.ТолькоПросмотр(1);
Таб.Опции(0,0,0,0);
Таб.Показать("");
КонецПроцедуры //ПечатаемНесколькоЭтикеток()
//_____________________________________________________________________________