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

Шрифт EanGnvic
Так? Не выводит штрихкод(
5 Duke1C
 
03.08.19
11:36
(4) Объект там никакой не нужен уже. Тупо в нужной ячейке установи шрифт и циферки передавай туда
6 Georg68
 
03.08.19
12:35
Квадратиками выдает. Чет не то. Что тогда в свойствах ячейки написать?
7 Злопчинский
 
03.08.19
13:01
переменную написать, тип = выражение. на ячейку назначить упомянутый шрифт.
8 Franchiser
 
гуру
03.08.19
13:07
(5) давно уже объект не нужен, зачем раньше использовали ВК?
9 Georg68
 
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
ну шо, Данила-мастер, выходит каменный цветок?
12 Georg68
 
03.08.19
15:45
Да какой цветок если руки из..
Я не программер, я типа юзер-админ-продавец )) Просто сам немного могу ценники делать, а вот со штрихкодом как-то застопорилось.
Можно простым языком, для особо не одаренных и совсем необученных?
Написать чего написать..))
13 Злопчинский
 
03.08.19
15:48
там где у тебя на картинке на закладке выражение - я ж сказал - оставь только само выражение, т.е.
СокрЛП(тутчтовскобках).

при выводе печформы - выражение вычислится. результатом вычисления этого выражения будет некая строка - она выведется в отображение ячейки. на ячейку повесь шрифт тот что указан выше.
14 Georg68
 
03.08.19
16:07
Понимание не пришло и код тоже. Извиняюсь.
Видимо в модуле надо исправлять.
15 Злопчинский
 
03.08.19
16:15
ну стучись оперативоно скайп zlopun и готовь тимвьювер или удаленку
16 Georg68
 
03.08.19
16:28
СПАСИБО !!!
17 MWWRuza
 
гуру
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)
                    + ЛевыйЗащитныйШаблон
                    + ЛеваяЧастьКода
                    + СреднийЗащитныйШаблон
                    + ПраваяЧастьКода
                    + ПравыйЗащитныйШаблон;
    Возврат Результат;
КонецФункции
18 MWWRuza
 
гуру
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
19 Franchiser
 
гуру
04.08.19
00:25
(17) +
вот тоже интересно, когда я пробовал в свое время такой финт, сканер не читал такой штрихкод
20 Garykom
 
гуру
04.08.19
00:39
1. 1С (в т.ч версии 7.7) умеет картинки в макеты для печати
2. Есть куча внешних хреней (банальный zint) чтобы создать картинку (но надо перекодировать в bmp или jpg) с ШК нужного вида и положения внутри
3. http://catalog.mista.ru/public/305476/
21 Duke1C
 
04.08.19
08:42
(20) Если уж на то пошло, то проще Formex-ом
22 Georg68
 
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
23 Georg68
 
04.08.19
09:08
(17) Куда вставить этот код и как заставить его работать? Хелп! Продавцы ждут от меня ценники((
24 Garykom
 
гуру
04.08.19
12:04
(22) Ценники надеюсь не 30х20 мм ?
Потому что в 2 см нельзя ШК засунуть EAN13 по ширине
25 Garykom
 
гуру
04.08.19
12:04
(24)+ В смысле читаемый засунуть
26 Garykom
 
гуру
04.08.19
12:06
А так у тебя макеты кривые, сидишь и размеры подбираешь чтобы читалось.
27 MWWRuza
 
гуру
04.08.19
13:00
(23)Ну, судя по ключевому слову "Экспорт", ясно куда - в глобальный модуль. Лучше куда-нибудь в конец, после последней имеющейся процедуры/функции, перед операторами программы, если такие имеются. Вот это Ваше - "ТаблицаТоваров.ШтрихКод" передать в функцию, типа так:
ПечШК = СформироватьСтрокуEanGnivc(СокрЛП(ТаблицаТоваров.ШтрихКод));
Полученную строку символов, в виде переменной "ПечШК", вставить в формулу ячейки табличного документа, шрифт в этой ячейке EanGnivc. Тип ячейки, естественно выражение. Можно совсем узенький ШК получить, играясь с параметрами этой ячейки, на грани читаемости сканером, но при этом он будет отображаться, и глазами будет виден.
Собственно, и все. Должно заработать. Не получится - пишите, смогу, пока дома сижу, по ТимВиеверу подключиться, помочь...

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

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