#0
by VanoZZZ
Требуется выгрузить этикетку номенклатуры в корел. Есть шаблон этикетки в кореле. Обработкой подменяю надписи в шаблоне на нужные и сохраняю в отдельный файл. С этим проблем нет. Но на этикетке есть штрих-код. Вот как бы его сформировать и в виде картинки передать в корел?
#1
by Vladal
А в шаблоне корела картинка штрихкода в каком виде хранится? Бинарно или ссылка на внешний файл?
#2
by Базис
В кореле можно использовать VBA или что-то ещё скриптовое. Передавать корелу надо не картинку (он сам по себе неплохо картинки рисует), а строку.
#3
by Vladal
Тогда, по идее, передали строку со штрихкодом, а VBA или чем-там-еще этот код преобразовать в картинку. Вот еще одна тема:
#5
by VanoZZZ
Там вроде как картинка. При двойном клике по нему пишет приложение сервер не найдено или что то типа того (я не рисовал этот шаблон, мне его переслали). В менеджере объектов стоит тип OLE
#6
by VanoZZZ
Владал спасибо за ссылки. Завтра посмотрю. В половине девятого вечера уже все равно ничего не пойму
#11
by VanoZZZ
Подниму темку, может все же кто-нибудь подскажет. Пока выяснил только то, что на самом деле корел нифига сам штрих-коды рисовать не умеет. Штрих-код формирует внешняя прога (BarCode.exe) и к сожалению через оле к ней не подключится. Я так понял только параметры можно передать, а дальше сендкейсами только и она вернет картинку штрих-кода. Может и не правильно понял что то.
#12
by kittystark
не смотрел (3,4), на VBA можно поступить так: пробежать в цикле по всем шейпам на кореловской странице, если shape.Type = cdrOLEObjectShape то текущий объект - штрих-код (если других OLE объектов не вставлял) и ему уже подпихнуть "нажатия" нужных клавиш, для EAN-13 подойдет For Each shape In ActiveLayer.Shapes shape.OLE.Activate Next корректно будет работать в кореле начиная с 13-ой версии, в 12-ой были замечены глюки
#13
by VanoZZZ
мне кажется этот код не может работать в 1С. Только в самом кореле. Да и сендкейсы то куда посылать, если у меня корел то не открыт когда по оле подключаюсь
#14
by DGorgoN
Тупой вопрос - а что мешает экспортировать из корела в 1с, а уже в 1с всякую инфу добавлять. Имхо печатать этикетки постоянно через корел это изврат =)
#15
by VanoZZZ
Да я понимаю, что рисовать 1Ской в кореле мягко говоря не умно, но почему то только корел катит. Я не знаю почему. Это для поставщиков из Китая.
#16
by kittystark
лень корел ставить, проверять, ты случайно не макеты для пластиковых карточек с уникальными штрих-кодами шарашишь? если после вызова objCorelApp.BarcodeShape.OLE.Activate окошко для ввода данных штрих-кода не появится, можно попытаться главному окну процесса OLE-corela послать виндовое сообщение SW_SHOW, окошко самого корела станет видимым... и тогда... вообщем надо экспериментировать как вариант в макет отчета 1С вставить все нужные объекты, а CorelBarcode заменить на ActiveBarcode и с ним уже упражняться
#17
by kittystark
да, кстати, если уж так надо китайским поставщикам макеты корела, а что мешает написать VBA-скрипт для корела, который будет подрубаться по OLE к нужной базе 1С и из нее тянуть данные, подставляя в макет ?
#18
by VanoZZZ
Не. Этикетки на коробки с товаром. после вызова objCorelApp.BarcodeShape.OLE.Activate Doc.Pages.Shapes.OLE {}: Ошибка при получении значения атрибута контекста (OLE) А вот сделать штрих-код в 1Ске и подменить его в кореле надо попробовать Не подойдет к сожалению. Пользователь выбирает группы товаров на которые нужны этикетки
#19
by VanoZZZ
Вообще конечно можно попробовать скриптом, но боюсь как бы там та же фигня не была как в 1С. Такое впечатление, что чтобы поменять штрих-код в кореле, корела не достаточно. Надо видимо как то передавать его в прогу, в которой он был сформирован (ActiveBARCODE или Corel BARCODE).
#20
by kittystark
не боись и верь в себя, код подобный , правда чуть более навороченный (с проверками успешности подпихивания всех данных, в т.ч. с работой через буфер обмена), а здесь приведен только "цимус", работает уже не первый год по нескольким пластиково-карточным конторам, правда в качестве источника данных используется экселевский файл, открываемый по OLE, заменить эксель на OLE-1с совсем не проблема
#21
by VanoZZZ
Vladal kittystark Спасибо!!! Моя проблема в том, что я не только тупой, но и слепой((((( Вместо Doc.Pages.Shapes.OLE.Activate писал Doc.Pages.Shapes.Activate
#22
by VanoZZZ
У меня почему то останавливается выполнение кого на строчке shape.OLE.Activate открывается окно для редактирования штрих-кода. Дальше код выполняется только после закрытия этого окна. Пробовал и скриптом и в 1С
#25
by VanoZZZ
Я смотрел ссылки и не раз. Да я уже весь инет перерыл и так и не нашел ничего, чтобы работало
#27
by kittystark
странно, попробуй после активэйта вместо одинарного вызова цикл shape.OLE.Activate While shape.OLE.IsServerRunning DoEvents Wend задержку Sleep с каким параметром вызываешь ?
#30
by VanoZZZ
это пока черновик. вот весь скрипт Set Doc=Corel.OpenDocument("C:Documents and SettingssmivanРабочий столH625A-02-1810-LIANXUN.cdr") For Each Shape IN Doc.Pages.Shapes Shape.OLE.Activate Doc.Save
#31
by kittystark
смущает то, что DoEvents вызывается вне кореловского контекста, попробуй сначала это код (без первых трех строк) выполнить из-под VBA самого корела (открытие из корела вроде по комбинации Alt+F11) или же попробовал бы вызвать конструкции что-то типа Corel.DoEvents или Corel.Application.DoEvents - вдруг прокатит (лень ставить корел и самому проверять), хотя больше уверен, что не сработает ну и судя по коду у тебя в макете шейпы это только штрих-коды и никаких текстов/линий/фигурок, т.к. проверки If shape.Type = cdrOLEObjectShape Then ... я не вижу кстати, что с вариантом ?
#32
by VanoZZZ
В кореле у меня только один штрих-код, все остальное удалил пока. Так отлаживать удобнее. Не получилось. Я же говорю, что на строчке shape.OLE.Activate открывается окно редактирования штрих-кода и дальше код не выполняется, пока окно не закроешь. Соответственно окно уже закрыто, сендкейсы уже не кому посылать. Щас идейка появилась. Штрих-код сформировать в 1С, копирнуть в буфер (CopyToClipboard или CopyToClipboardBySize(,)). Предварительно сделать рамку в кореле нужного размера в нужном месте на листе. Потом уже программно выделить его и сендкейсом вставить из буфера, т.е. заменить рамку на штрих-код из буфера. Онанизм конечно, но меня уже любой вариант устроит, неделю сделать не могу.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- v7: v7 : НДС при возврате
- v7: Что нужно чтоб подключить ККМ Меркурий 112F к 1с V7 Торговля + склад
- v7: v7.7 премещение элемента справочника
- v7: v8: v7: Кто-нибудь сумел скачать комплект отчетности за I квартал 2007 года
- v7: 1С V7.7 в сети
- v7: 1C:V7 starter program (for SQL) - обнаружена ошибка
- v7: Перенос данных Бухгалтерия из v7 в v8
- v7: v7 Перехват глобального события ПриЗаписи() или ОбработкаПроведения()
В этой группе 1С
- Конвертация внешних обработок из 8.2 в 8.1
- v7: запятые вместо точек в печ.форме
- Как фильтровать по "верхней" группировке запроса на СКД (УТ 10.3, 8.1)
- Ошибка при попытке печати 2-НДФЛ для сотрудников
- v7: ЗиК не могу вернуть человека из дЕкретного отпуска
- v7: Не могу понять, откуда ЗиК берет паспортные данные.
- XBASE читает строку "ЧЪ000229" как "Ћђ000229"
- ОбработкаЗаполнения()
- ЗУП или ЗБУ Доплата за ночные и праздничные от расчетной базы
- Не сохраняются размеры окон
- v7: Как зарегистрировать библиотеку formex.dll d windows7?
- Работа с макета и вывод таб документа в таб документа
- Как прочитать цифровую подпись в письме Outlook средствами vba или vbs?
- Недостаточно прав для работы с таблицей
- v7: 1С 7.7 SQL база то тормозит, то не тормозит
- закрытие 69 счета
- Перенос остатков в УТ 10.3 с одной организации на другую
- Автоматический выбор группы справочника
- v7: Как запустить PHP скрипт на сервере средствами 1с7 ?
- Конвертация данных V8... Как провести все выгруженные документы...