Печать штрих-кодов ЕАН 13 средствами 1С без внешних компонент и специальных шрифтов

04.09.09

Задачи пользователя - Этикетки, ценники

В далёкие времена, когде не было достойных внешних компонент и шрифтов, я сподобился написать обработку для печати штрих-кодов средствами 1С. Вот что получилось.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Бесплатно
-
.1252048993 36,50Kb
499
499 Скачать бесплатно

К публикации этого счастья меня подвигла вот эта разработка //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);
    Таб.Показать("");
КонецПроцедуры //ПечатаемНесколькоЭтикеток()

//_____________________________________________________________________________

См. также

Пакетная печать Этикетки, ценники Пользователь Платформа 1С v7.7 Конфигурации 1cv7 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Легкая промышленность, мода и одежда Россия Управленческий учет Платные (руб)

С помощью обработки 1С 7.7 можно коды маркировки вводить вручную или загружать файлы в формате csv и печатать либо на ленту (принтер этикеток) либо на лист (офисный принтер). Есть возможность создать разные шаблоны этикеток с настраиваемым выводом текста и логотипа, с указанием числа рядов и столбцов при печати этикеток на офисный принтер. Имеется проверка штрихкодов на соответствие форматам согласно документа "Протокол информационного обмена (ОФД). Поддерживаются форматы всех товарных групп, подлежащих маркировке или участвующих в эксперименте (алкоголь, изделия из меха, табак, обувь, лекарства, текстиль, шины и т.д.) Выделение из ШК идентификаторов применения (AI) и их показ. Расшифровка максимальной розничной цены (МРЦ) из Datamatrix табака.

2400 руб.

12.03.2020    20282    16    4    

20

Этикетки, ценники Пользователь Платформа 1С v7.7 Конфигурации 1cv7 Здравоохранение, медицина, стоматология Россия Абонемент ($m)

Поскольку в еФарма нет печати кодов DataMatrix в нормальном виде, только в виде QR-кода, возникла идея написать данную обработку.

1 стартмани

03.05.2023    2245    1    Eisent    0    

0

Этикетки, ценники Программист Пользователь Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

Предназначено для тех, кто еще и в классике программирует, но уже начал подзабывать.

1 стартмани

20.08.2020    7654    14    AlexHelmer    5    

1

Розничная торговля Этикетки, ценники Бухгалтер Пользователь Платформа 1С v7.7 Оперативный учет 7.7 1С:Торговля и склад 7.7 Россия Абонемент ($m)

Печать ценников для конфигурации "Торговля и склад ред . 9.2". Платформа "1С:Предприятие 7.7"

2 стартмани

28.11.2017    20747    6    dbolotin    0    

2

Розничная торговля Этикетки, ценники Пользователь Оперативный учет 7.7 1С:Торговля и склад 7.7 Розничная и сетевая торговля (FMCG) Россия Абонемент ($m)

Внешняя печатная форма для документов Перемещение ТМЦ, Поступление ТМЦ и любых других с реквизитами табличной части Номенклатура, Количество, Цена.

1 стартмани

17.11.2017    15542    19    aksyoma    2    

0
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Арчибальд 2709 04.09.09 11:36 Сейчас в теме
Добро пожаловать в мастер-класс от Трактора :))
2. sound 536 04.09.09 11:47 Сейчас в теме
Все должно измеряться в литрах! :)
3. Трактор 1254 04.09.09 11:49 Сейчас в теме
(2) Это потому что мне лень было ставить ТиС и проверял перед выкладкой на Бухгалтерии, а там нет базовой единицы измерения.
4. Арчибальд 2709 04.09.09 11:52 Сейчас в теме
(2,3) БАЗОВАЯ единица измерения, т.е. литр есть везде, имхо.
6. sound 536 04.09.09 11:53 Сейчас в теме
(4) я и говорю, хорошо когда есть литр, а лучше 2 :)
5. sound 536 04.09.09 11:52 Сейчас в теме
Все таки хотелось бы видеть файлик 8-шный
7. Трактор 1254 04.09.09 11:56 Сейчас в теме
(5) Зачем он тебе? Сейчас эта обработка не более чем прикол.
8. sound 536 04.09.09 11:58 Сейчас в теме
(7) поприкалываться хотел:)
17. TSvetlakova2008 22 21.10.09 11:25 Сейчас в теме
(7) не такой уж и прикол, при небольшой модификации очень полезная штука! :D
9. CheBurator 2712 10.09.09 02:47 Сейчас в теме
Чего-то я при первоначальном просмотре - протащился, но плюсануть забыл... исправляюсь!
.
Решение - супер! Не надо ВК, не надо ocx, не надо шрифтов. Нужен инструмент, который есть - 1Ска! и все! - ее в отличие от ВК/осх/шрифтов - не надо настраивать! она - уже есть! вот если бы автор доделал не только еан13, а любой линейный шрифт 2 из 5 - коде39, коде 128... ммм вкусняшка...
aleks_cons; v.l.; murat_; +3 Ответить
12. Трактор 1254 10.09.09 10:01 Сейчас в теме
(9)>> вот если бы автор доделал
Восемь лет прошло. Я уж и забыл об этой обработке. Вспомнил только из-за того что candy выложил генератор шрихкодов, уж совсем бесполезную вещь.
13. Арчибальд 2709 11.09.09 10:19 Сейчас в теме
(9) Ты плюсанул при первоначальном просмотре. Только тогда это еще в лайфе было. :)))
10. Valerich 1636 10.09.09 06:33 Сейчас в теме
11. jerokee 10.09.09 06:43 Сейчас в теме
Класс! От BarCode.ocx отказался давно из за геморроя с печатью очень мелких этикеток (20х30), на шрифтах работаю... Однако их можно забыть установить на комп, где надо печатать и все, приехали... Буду пробовать!
14. Трактор 1254 11.09.09 11:54 Сейчас в теме
(11) Чтобы не забывать ставить шрифты есть такой путь решения:
1. Поднять на внутреннем web сервере сервис генерации штрихкодов http://pear.php.net/manual/ru/package.images.image-barcode.intro.php
2. 1С обращается на этот сервер, а тот отвечает сформированной картинкой.
3. Получаешь картинку и встрямляй куда хочешь.
web сервер может работать как обычный хттп сервер. Или как soap сервер. Так будет "1С совместимее" :-) и штрихкоды можно будет формировать на сервере 1С.
15. jerokee 12.09.09 06:16 Сейчас в теме
(14) - ну это уж совсем извращение - поднимать WEB-сервак ради генерации штрихкодов... У меня большинство клиентов используют однопользовательскую версию 1С-ки и городить огород ради этого... Проще уж тогда класть штрихкодовский шрифт в базу и, при необходимости, регистрировать его средствами 1С-ки...
16. Трактор 1254 20.10.09 12:22 Сейчас в теме
18. fixin 4273 15.02.12 10:30 Сейчас в теме
как говорится, голь на выдумки хитра! ;-)
19. sanfoto 502 02.11.12 12:27 Сейчас в теме
"+1" за то что исключительно средствами 1с-ины)) за силу мысли так сказать))
"-1" т.к. практическое применение .... увы подойдет далеко не всем т.к. тормозно)) даже по сравнению с картинками.
"||"
"0" (ноль)

я таки все буду продолжат печатать на ШРИФТАХ.
ИБО - активно используем принтеры штрих-кодов и нужна высокая потоковая скорость печати.
20. Трактор 1254 02.11.12 12:46 Сейчас в теме
(19) Дык ясно-понятно что шрифтами лучше. Потому публикация и начинается словами
[quote]В далёкие времена, когде не было достойных внешних компонент и шрифтов[/quote]
Оставьте свое сообщение