Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Как уменьшить размер штрихкода в ценнике и развернуть его?

v7: Как уменьшить размер штрихкода в ценнике и развернуть его?
Я
   Georg68
 
02.08.19 - 17:05
Хочется штрихкод сделать поменьше и повернуть его на 90градусов.
Но если его уменьшать его не видно визуально при просмотре страницы печати.
А развернуть не получается, так как нет вкладки "положение" в свойствах штрихкода.
Как-то по другому надо выводить штрихкод наверное?
 
 
   Ёпрст
 
1 - 02.08.19 - 17:35
печатай шк через шрифт, там тупо ориентация 90
   Georg68
 
2 - 02.08.19 - 17:57
Шрифт установил, но как вывести не пойму. Направьте))
   Ёпрст
 
3 - 02.08.19 - 17:59
(2) в ячейке выбираешь тип шрифта и всё.. текст будет отображаться "полосочками", ориентация текста 90 и привет
Но, это только для одномерного шрифта, типа еан13
   Georg68
 
4 - 02.08.19 - 18:30
Тип Текст
Таб ТекущийОбъект.Text=Штрихкод

Шрифт EanGnvic 
Так? Не выводит штрихкод(
   Duke1C
 
5 - 03.08.19 - 11:36
(4) Объект там никакой не нужен уже. Тупо в нужной ячейке установи шрифт и циферки передавай туда
   Georg68
 
6 - 03.08.19 - 12:35
Квадратиками выдает. Чет не то. Что тогда в свойствах ячейки написать?
   Злопчинский
 
7 - 03.08.19 - 13:01
переменную написать, тип = выражение. на ячейку назначить упомянутый шрифт.
   Franchiser
 
8 - 03.08.19 - 13:07
(5) давно уже объект не нужен, зачем раньше использовали ВК?
   Georg68
 
9 - 03.08.19 - 13:10
(( Не знаю как, я не сталкивался с этим, поконкретнее можно. Что в Свойствах ячейки писать и в Модуле.
https://www.dropbox.com/s/gnkcq413zwnfbv5/1.jpg?dl=0
   Злопчинский
 
10 - 03.08.19 - 13:34
(9) млин, ты основы программирования знаешь?
выражение - это то, что возвращает результат.
оператор присваивания не возвращает результат.
убери присваивание оставь только выражение - правую часть оператора присваивания
   Злопчинский
 
11 - 03.08.19 - 14:36
ну шо, Данила-мастер, выходит каменный цветок?
   Georg68
 
12 - 03.08.19 - 15:45
Да какой цветок если руки из..
Я не программер, я типа юзер-админ-продавец )) Просто сам немного могу ценники делать, а вот со штрихкодом как-то застопорилось.
Можно простым языком, для особо не одаренных и совсем необученных?
Написать чего написать..))
   Злопчинский
 
13 - 03.08.19 - 15:48
там где у тебя на картинке на закладке выражение - я ж сказал - оставь только само выражение, т.е.
СокрЛП(тутчтовскобках).

при выводе печформы - выражение вычислится. результатом вычисления этого выражения будет некая строка - она выведется в отображение ячейки. на ячейку повесь шрифт тот что указан выше.
   Georg68
 
14 - 03.08.19 - 16:07
Понимание не пришло и код тоже. Извиняюсь.
Видимо в модуле надо исправлять.
   Злопчинский
 
15 - 03.08.19 - 16:15
ну стучись оперативоно скайп zlopun и готовь тимвьювер или удаленку
   Georg68
 
16 - 03.08.19 - 16:28
СПАСИБО !!!
   MWWRuza
 
17 - 03.08.19 - 23:08
Как-то все просто у вас получается...
А для чего тогда я вот эту функцию, для формирования ПРАВИЛЬНОГО ШК использую - ?!!

// Функция для печати ШК шрифтом EanGnivc. ВК баркоде.осх, иногда, особенно если ШК мелкий, не работает...

Функция СформироватьСтрокуEanGnivc(ШтрихкодСтрокойСимволов) Экспорт
    Перем СпособыКодированияЛевойЧасти[10];
    СимволыСпособовКодирования = "#$%&'()*+,";

    ЛевыйЗащитныйШаблон = "!";
    СреднийЗащитныйШаблон = "-";
    ПравыйЗащитныйШаблон = "!";
    СимволыШрифтаПоТипамКодов = СоздатьОбъект("ТаблицаЗначений");
    СимволыШрифтаПоТипамКодов.НоваяКолонка("Ключ");
    СимволыШрифтаПоТипамКодов.НоваяКолонка("Значение");
    СимволыШрифтаПоТипамКодов.НоваяСтрока();
    СимволыШрифтаПоТипамКодов.Ключ         = "L";
    СимволыШрифтаПоТипамКодов.Значение     = "0123456789";
    СимволыШрифтаПоТипамКодов.НоваяСтрока();
    СимволыШрифтаПоТипамКодов.Ключ         = "G";
    СимволыШрифтаПоТипамКодов.Значение     = "ABCDEFGHIJ";
    СимволыШрифтаПоТипамКодов.НоваяСтрока();
    СимволыШрифтаПоТипамКодов.Ключ         = "R";
    СимволыШрифтаПоТипамКодов.Значение     = "abcdefghij";
    СпособыКодированияЛевойЧасти[1]     = "LLLLLL";
    СпособыКодированияЛевойЧасти[2]     = "LLGLGG";
    СпособыКодированияЛевойЧасти[3]     = "LLGGLG";
    СпособыКодированияЛевойЧасти[4]     = "LLGGGL";
    СпособыКодированияЛевойЧасти[5]     = "LGLLGG";
    СпособыКодированияЛевойЧасти[6]     = "LGGLLG";
    СпособыКодированияЛевойЧасти[7]     = "LGGGLL";
    СпособыКодированияЛевойЧасти[8]     = "LGLGLG";
    СпособыКодированияЛевойЧасти[9]     = "LGLGGL";
    СпособыКодированияЛевойЧасти[10]     = "LGGLGL";
    СпособКодированияПравойЧасти         = "RRRRRR";
    Если СтрДлина(ШтрихкодСтрокойСимволов)     = 13 Тогда
        КоличествоСимволовВГруппе             = 6;
    ИначеЕсли СтрДлина(ШтрихкодСтрокойСимволов) = 8 Тогда
        КоличествоСимволовВГруппе     = 4;
        СимволыСпособовКодирования     = "";
        ШтрихкодСтрокойСимволов     = "0" + ШтрихкодСтрокойСимволов;
    Иначе
        Предупреждение("Поддерживаются только штрихкоды длиной 13 и 8 символов");
        Возврат "";
    КонецЕсли;
    ИндексСпособаКодирования = Число(Лев(ШтрихкодСтрокойСимволов,1));
    ЛеваяЧастьКода         = "";
    ПраваяЧастьКода     = "";
    Для ИндексСимвола     = 1 По КоличествоСимволовВГруппе Цикл
        СпосКодЛевЧаст    = СпособыКодированияЛевойЧасти[ИндексСпособаКодирования + 1];
        СимвКодКлюч        = Сред(СпосКодЛевЧаст,ИндексСимвола,1);
        Стр = "";
        Если СимволыШрифтаПоТипамКодов.НайтиЗначение(СимвКодКлюч,Стр,"Ключ") = 1 Тогда
            СимвПоТипу    = СимволыШрифтаПоТипамКодов.ПолучитьЗначение(Стр,"Значение");    
        КонецЕсли;
        ЛеваяЧастьКода     = ЛеваяЧастьКода     + Сред(СимвПоТипу,Число(Сред(ШтрихкодСтрокойСимволов,(ИндексСимвола+1),1))+1,1);
        Стр = "";
        СимвКодПравКлюч    = Сред(СпособКодированияПравойЧасти,ИндексСимвола,1);
        Если СимволыШрифтаПоТипамКодов.НайтиЗначение(СимвКодПравКлюч,Стр,"Ключ") = 1 Тогда
            СимвПоТипуПрав    = СимволыШрифтаПоТипамКодов.ПолучитьЗначение(Стр,"Значение");    
        КонецЕсли;
        ПраваяЧастьКода = ПраваяЧастьКода     +     Сред(СимвПоТипуПрав,Число(Сред(ШтрихкодСтрокойСимволов,(ИндексСимвола
                                            +    КоличествоСимволовВГруппе+1),1))+1,1);
    КонецЦикла;
    Результат = ""  + Сред(СимволыСпособовКодирования,ИндексСпособаКодирования+1,1)
                    + ЛевыйЗащитныйШаблон
                    + ЛеваяЧастьКода
                    + СреднийЗащитныйШаблон
                    + ПраваяЧастьКода
                    + ПравыйЗащитныйШаблон;
    Возврат Результат;
КонецФункции
   MWWRuza
 
18 - 03.08.19 - 23:28
+(17)
Макет ценника шрифтом EanGnivc: https://content.foto.my.mail.ru/mail/m_w_w/1/h-276.jpg
Результат, "узенький" ШК, barcode.ocx такой узкий не выводит: https://content.foto.my.mail.ru/mail/m_w_w/1/h-277.jpg
   Franchiser
 
19 - 04.08.19 - 00:25
(17) +
вот тоже интересно, когда я пробовал в свое время такой финт, сканер не читал такой штрихкод
   Garykom
 
20 - 04.08.19 - 00:39
1. 1С (в т.ч версии 7.7) умеет картинки в макеты для печати
2. Есть куча внешних хреней (банальный zint) чтобы создать картинку (но надо перекодировать в bmp или jpg) с ШК нужного вида и положения внутри
3. http://catalog.mista.ru/public/305476/
   Duke1C
 
21 - 04.08.19 - 08:42
(20) Если уж на то пошло, то проще Formex-ом
   Georg68
 
22 - 04.08.19 - 08:55
И таки да... сканер не читает этот штрихкод. (
И к тому же он вылазит за границы ценника в печатной форме если его сделать маленьким.
Вот на экране
https://www.dropbox.com/s/215jgvgx5rr5b3x/45.jpg?dl=0
И вот на бумаге
https://www.dropbox.com/s/vblklv0cr8lsbwu/IMG_20190804_094446.jpg?dl=0
   Georg68
 
23 - 04.08.19 - 09:08
(17) Куда вставить этот код и как заставить его работать? Хелп! Продавцы ждут от меня ценники((
   Garykom
 
24 - 04.08.19 - 12:04
(22) Ценники надеюсь не 30х20 мм ?
Потому что в 2 см нельзя ШК засунуть EAN13 по ширине
   Garykom
 
25 - 04.08.19 - 12:04
(24)+ В смысле читаемый засунуть
   Garykom
 
26 - 04.08.19 - 12:06
А так у тебя макеты кривые, сидишь и размеры подбираешь чтобы читалось.
   MWWRuza
 
27 - 04.08.19 - 13:00
(23)Ну, судя по ключевому слову "Экспорт", ясно куда - в глобальный модуль. Лучше куда-нибудь в конец, после последней имеющейся процедуры/функции, перед операторами программы, если такие имеются. Вот это Ваше - "ТаблицаТоваров.ШтрихКод" передать в функцию, типа так:
ПечШК = СформироватьСтрокуEanGnivc(СокрЛП(ТаблицаТоваров.ШтрихКод));
Полученную строку символов, в виде переменной "ПечШК", вставить в формулу ячейки табличного документа, шрифт в этой ячейке EanGnivc. Тип ячейки, естественно выражение. Можно совсем узенький ШК получить, играясь с параметрами этой ячейки, на грани читаемости сканером, но при этом он будет отображаться, и глазами будет виден.
Собственно, и все. Должно заработать. Не получится - пишите, смогу, пока дома сижу, по ТимВиеверу подключиться, помочь...

PS Кстати, Zint(во всех способах его использования, хоть через ФормЕкс, хоть еще через-что) тоже не очень любит рисовать узкие ШК. После определенного "порога сужения" просто перестает прорисовывать ШК, крестик рисует. Лучше конечно, чем стандартная ocx, но всему тоже есть предел. Шрифтом такая задача все равно лучше решается.
   MWWRuza
 
28 - 04.08.19 - 13:03
+(27)Вот это: ПечШК = СформироватьСтрокуEanGnivc(СокрЛП(ТаблицаТоваров.ШтрихКод));
поместить, естественно в процедуру печати, туда, где у Вас заполняются поля таблицы ценника, перед выводом заполненного мокселя.
   Franchiser
 
29 - 04.08.19 - 13:13
(17) интересная функция
   Georg68
 
30 - 04.08.19 - 13:17
MWWRuza, Стучусь в скайп..
 
 Рекламное место пустует
   MWWRuza
 
31 - 04.08.19 - 13:18
(29)Да. Не моя, где-то честно подсмотрел, давно, года три назад, уже и не помню где, возможно даже где-то здесь... С тех пор использую регулярно, работает отлично, спасибо ее автору :-)
   MWWRuza
 
32 - 04.08.19 - 13:19
(30)Ага.. Увидел.
   Franchiser
 
33 - 04.08.19 - 13:27
Для 1С 8:
Функция СформироватьСтрокуEanGnivc(ШтрихкодСтрокойСимволов) Экспорт
    Попытка
        Тест = Число(ШтрихкодСтрокойСимволов);
    Исключение
        ВызватьИсключение "Штрихкод может содержать только цифры";
    КонецПопытки;

    СимволыСпособовКодирования = "#$%&'()*+,";

    ЛевыйЗащитныйШаблон = "!";
    СреднийЗащитныйШаблон = "-";
    ПравыйЗащитныйШаблон = "!";

    СимволыШрифтаПоТипамКодов = Новый Соответствие;
    СимволыШрифтаПоТипамКодов.Вставить("L", "0123456789");
    СимволыШрифтаПоТипамКодов.Вставить("G", "ABCDEFGHIJ");
    СимволыШрифтаПоТипамКодов.Вставить("R", "abcdefghij");

    СпособыКодированияЛевойЧасти = Новый Массив;
    СпособыКодированияЛевойЧасти.Добавить("LLLLLL");
    СпособыКодированияЛевойЧасти.Добавить("LLGLGG");
    СпособыКодированияЛевойЧасти.Добавить("LLGGLG");
    СпособыКодированияЛевойЧасти.Добавить("LLGGGL");
    СпособыКодированияЛевойЧасти.Добавить("LGLLGG");
    СпособыКодированияЛевойЧасти.Добавить("LGGLLG");
    СпособыКодированияЛевойЧасти.Добавить("LGGGLL");
    СпособыКодированияЛевойЧасти.Добавить("LGLGLG");
    СпособыКодированияЛевойЧасти.Добавить("LGLGGL");
    СпособыКодированияЛевойЧасти.Добавить("LGGLGL");

    СпособКодированияПравойЧасти = "RRRRRR";

    Если СтрДлина(ШтрихкодСтрокойСимволов) = 13 Тогда
        КоличествоСимволовВГруппе = 6;
    ИначеЕсли СтрДлина(ШтрихкодСтрокойСимволов) = 8 Тогда
        КоличествоСимволовВГруппе = 4;
        СимволыСпособовКодирования = "";
        ШтрихкодСтрокойСимволов = "0"+ШтрихкодСтрокойСимволов;
    Иначе
        ВызватьИсключение "Поддерживаются только штрихкоды длиной 13 и 8 символов";
    КонецЕсли;

    ИндексСпособаКодирования = Число(Лев(ШтрихкодСтрокойСимволов,1));

    ЛеваяЧастьКода = "";
    ПраваяЧастьКода = "";

    Для ИндексСимвола = 1 По КоличествоСимволовВГруппе Цикл
        ЛеваяЧастьКода = ЛеваяЧастьКода
            + Сред(СимволыШрифтаПоТипамКодов[Сред(СпособыКодированияЛевойЧасти[ИндексСпособаКодирования],ИндексСимвола,1)]
                    ,Число(Сред(ШтрихкодСтрокойСимволов,(ИндексСимвола+1),1))+1
                    ,1);
        ПраваяЧастьКода = ПраваяЧастьКода
            + Сред(СимволыШрифтаПоТипамКодов[Сред(СпособКодированияПравойЧасти,ИндексСимвола,1)]
                    ,Число(Сред(ШтрихкодСтрокойСимволов,(ИндексСимвола+КоличествоСимволовВГруппе+1),1))+1
                    ,1);
    КонецЦикла;

    Результат = ""  + Сред(СимволыСпособовКодирования,ИндексСпособаКодирования+1,1)
                    + ЛевыйЗащитныйШаблон
                    + ЛеваяЧастьКода
                    + СреднийЗащитныйШаблон
                    + ПраваяЧастьКода
                    + ПравыйЗащитныйШаблон;
    Возврат Результат;
КонецФункции
   MWWRuza
 
34 - 04.08.19 - 13:45
Ну, как, теперь читается сканером? :-)))
   Garykom
 
35 - 04.08.19 - 13:49
(27) >не очень любит рисовать узкие ШК. После определенного "порога сужения" просто перестает прорисовывать ШК

Если у тебя картинка это глубоко пофиг, рисуешь широкий а затем манипуляцими с картинкой делаешь что надо.
Но не факт что результат будет читаться хоть на каких то сканерах.
   Georg68
 
36 - 04.08.19 - 14:21
Спасибо,  MWWRuza. Теперь читается сканером. Всё круто !
Осталось побороть границы ценника. Вылазит на бумаге за границу. Не как текст себя ведет.Не обрезается.
https://www.dropbox.com/s/vblklv0cr8lsbwu/IMG_20190804_094446.jpg?dl=0
   Georg68
 
37 - 04.08.19 - 14:23
Можно шире сделать поле для штрихкода, но тогда ценник больше и 5 в ряд не влазит. Бумаги больше уйдет, а лес надо беречь) Да и товар есть мелкий, где портянки просто закроют его весь.
   MWWRuza
 
38 - 04.08.19 - 14:51
(37)Ну, тут уж сам... Если уж совсем не будет получаться, брось на скайп моксель, я попробую у себя сделать правильно. Это - находясь в печатной форме в конфигураторе, "Сохранить как", файл с расширением *.mxl Но, так быстро не обещаю - я сейчас уже убегаю из дома, и появлюсь только вечером... Пробуй сам, поиграйся со свойством ячейти "Текст" => "Контроль", я думаю, все у тебя получится.
   Georg68
 
39 - 05.08.19 - 06:19
Отчитываюсь. Пришлось помучиться. Перенес штрихкод в правую часть, сделал поле пошире. Немного больше получился, чем я хотел, но вроде всё неплохо. Обработка внешняя, могу выслать желающим. Но вышеуказанный код надо вносить в глобальный модуль, только тогда код читается.
https://www.dropbox.com/s/qm7iqu08x11ia7t/ценник.jpg?dl=0
   DrZombi
 
40 - 05.08.19 - 07:00
(39) Если хочется поделиться, то просто размести ссылку на свою обработку.
Кому надо, посмотрят, оценят, поблагодарят :)
   DrZombi
 
41 - 05.08.19 - 07:00
+ На инфостарте не ложи, жадный он :)
   MWWRuza
 
42 - 05.08.19 - 10:47
(39)Но вышеуказанный код надо вносить в глобальный модуль, только тогда код читается.
Да ладно! :-)))
В глобальный модуль он вставляется для того, что-бы был ото-всюда доступен. Сейчас, Вам понадобилось в этой обработке его использовать, завтра - в какой-то другой. Так Вы просто в них используете вызов этой функции, и все. Но, если ее поместить в сам модуль обработки(в начало, ну или по крайней мере, выше той процедуры, откуда она вызывается), без ключевого слова "Экспорт", она тоже будет прекрасно работать. Но, тогда ее копию придется помещать в каждый модуль программы, где нужна эта функция. Зачем? Проще поместить ее в глобальник, и сделать экспотной. Такое действие может быть оправдано только тогда, когда по каким-то причинам конфу менять нельзя, и надо обойтись только внешней обработкой. И все. В остальных случаях, такие функции должны быть обще-доступными.
   MWWRuza
 
43 - 05.08.19 - 10:54
(40)Конфа там далеко не типовая ТиС, какая-то торговля партнерских фирм. Поэтому, толку от нее в "целом виде" для других будет не много. Поэтому, смысла ее выкладывать особо нет. Ну, можно моксель с дизайном ценника выложить, с вертикальным ШК выполненным шрифтом, может кого-то вдохновит...
   Злопчинский
 
44 - 05.08.19 - 13:36
на инфостарте для 77 обработок для печати ценников - вагон и тележка.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.