|
Нужен код для метода ВК на С++ | ☑ | ||
---|---|---|---|---|
0
Вуглускр1991
23.04.13
✎
00:12
|
Привет!
Есть у меня внешняя компонента, в её методы теоретически можно передать параметрами любые объекты, используемые в модулях. Есть у меня процедура: &НаСервере Функция ПолучитьТабДокументЭтикетка(СписокШК) фРисунокШтрихКод = Новый COMОбъект("V8.Barcod"); ... И объект создается успешно. А вот когда в этой же процедуре далее ОбъектОбработки = РеквизитФормыВЗначение("Объект"); Макет = ОбъектОбработки.ПолучитьМакет("Этикетка"); В макете у рисунка (штрихкод) тип объекта Неизвестен и методов и свойств "V8.Barcod" у рисунка нет. И вот мне нужен в ВК метод ПоменятьМестамиУказателиОбъектов(фРисунокШтрихКод, Макет.Область.Рисунки.Штрихкод.Объект) Для дальнейшего счастья. Кто сможет подсказать как реализовать? |
|||
1
Вуглускр1991
23.04.13
✎
00:22
|
Даже не поменять указатели ...
мои скромные (более чем) познания в COM подсказывают, что и там и там будет указатель на IUnknown если просто воткнуть рисунку табличного документа насильно IUnknown от фРисунокШтрихКод и сделать ему AddRef(), то на тот объект, который пустышка и который был на этом месте можно забить, утечка по памяти будет мизерная. |
|||
2
Андрюха
23.04.13
✎
02:59
|
Указатель это адрес в памяти, по-идее можно ввести третью переменную и переприсвоить значения.
|
|||
3
Rie
23.04.13
✎
04:56
|
(0) А зачем здесь ВК? Я так понял, что V8.Barcod должен картинку отрисовывать? Тогда ему надо не ВК быть, а IPicture реализовать.
|
|||
4
Rie
23.04.13
✎
04:57
|
(1) Embedded-объекты имеют несколько более сложные отношения с контейнером. Так что просто заменой указателя вряд ли удастся обойтись.
|
|||
5
Вуглускр1991
23.04.13
✎
09:43
|
(4) Спасибо, в целях получения скорейшего результата, я уже выдернул из УТ11 все связанное с рисованием ШК на сервере, может уже через час, я забуду об этой задаче.
Была тоже такая мысля, что рисунок узнает про V8.Barcod, а V8.Barcod не узнает о контейнере и не сможет "нарисоваться", вот только как это с идеологией COM сочетается, мне вообразить трудно. Может у этого COMа какой-нибудь хитроперегруженный конструктор, мне лишь думалось вчера, что этот COM объект согласно идеологии должен иметь только public методы наружу, например Draw() и результатом - поток двоичных данных - растровая картинка заданных габаритов, которую уже РисунокТабличногоДокумента размещает в ячейках. Вот к примеру с ИТС кусок кода по печати ШК: Перем КомпонентШК; Попытка КомпонентШК = Новый COMОбъект("V8.Barcod"); Исключение // Элемент управления не установлен КомпонентШК = Неопределено; КонецПопытки; Если КомпонентШК <> Неопределено Тогда Попытка // Тип кода Code128 КомпонентШК.ТипКода = 4; КомпонентШК.Сообщение = "Text string to be encoded"; Исключение // Ошибка КонецПопытки; КонецЕсли; И? И куда мне девать этот КомпонентШК дальше? Он что картинкой стал или на его основе можно рисунок добавить (я все пробовал: Рисунки.Добавить(КомпонентШК), Рисунки.Добавить(ТипЗнч(КомпонентШК)), Рисунки.Добавить(ТипРисункаТабличногоДокумента.Объект ,КомпонентШК) - везде платформа встречала меня ошибкой) Я вообще понимать перестаю зачем надо добавлять рисунок вот так: Рисунки.Добавить(ТипРисункаТабличногоДокумента.Объект) если этот объект потом никак не проинициализировать? Вот я и искал способ инициализации такого рисунка. (2) Рисунок.Объект - только для чтения, увы. Переприсвоить может и в ВК не получится, без вскрытия структуры контейнера и запиливания ссылки прямо в private область. |
|||
6
Rie
23.04.13
✎
09:52
|
(5) Таблица - Рисунки - Вставить объект - Создать новый.
И в этот момент подсовываешь свой (зарегистрированный) V8.Barcod |
|||
7
Rie
23.04.13
✎
09:55
|
+(6) Но для этого V8.Barcod должен реализовывать все нужные интерфейсы.
|
|||
8
Вуглускр1991
23.04.13
✎
09:56
|
(6) "Таблица - Рисунки" имеет в 1С тип КоллекцияРисунковТабличногоДокумента у него нет метода "Вставить" или "ВставитьОбъект" согласно СП. Или это код для ВК?
|
|||
9
Вуглускр1991
23.04.13
✎
09:58
|
(7) Я уверен, что в hlp файле к V8.Barcod не все public методы раскрыты. Там ещё должен быть обязательно типа "СгенерироватьКартинку".
|
|||
10
Rie
23.04.13
✎
10:02
|
(8) Зато КоллекцияРисунковТабличногоДокумента имеет метод Добавить.
(9) Не должен. Этот метод есть в IPicture. |
|||
11
Вуглускр1991
23.04.13
✎
10:12
|
(10) "(я все пробовал: Рисунки.Добавить(КомпонентШК), Рисунки.Добавить(ТипЗнч(КомпонентШК)), Рисунки.Добавить(ТипРисункаТабличногоДокумента.Объект ,КомпонентШК) - везде платформа встречала меня ошибкой)" - я тоже так думал... Может не правильно добавлял?
|
|||
12
Rie
23.04.13
✎
10:19
|
(11) СП злые вороги похитили? :-)
Рис = Рисунки.Добавить(ТипРисункаТабличногоДокумента.Объект); Но зачем добавлять программно, если можно положить его в макет - как сказано в (6)? И там сразу задать нужный тип (твой V8.Barcod)ю |
|||
13
Вуглускр1991
23.04.13
✎
10:28
|
(12) Потому, что когда этот макет получаешь на сервере, тип объекта очищен и объект не работает.
Рис = Рисунки.Добавить(ТипРисункаТабличногоДокумента.Объект); - вот так добавляется неизвестный объект, который потом никак не проинициализировать. |
|||
14
Serginio1
23.04.13
✎
12:12
|
У тебя какой ШК. Если еан, коде 128 то можно легко обойтись шрифтами. Посмотри http://strokescribe.com/ru/1c-8-create-barcode.html
|
|||
15
Dolly_EV
23.04.13
✎
13:08
|
(0) Вуглускр1991, вот отсюда:
v8: v8: РИБ 7.7 - 8.2 поделка еще осталась? по ссылке - не работает. Можешь поделиться? |
|||
16
Dolly_EV
23.04.13
✎
13:08
|
вот отсюда:
http://217.149.181.74/v7/index.html |
|||
17
Вуглускр1991
23.04.13
✎
13:22
|
(14) Спасибо! Я смог напечатать ШК код 128 (как и было надо) при помощи УТ11 и зашитых в нее компонент и сервисных процедур. Все мой тонкий клиент печатает кода, осталось лишь убелиться, что Датамакс сможет их на ленту, а ТСД лазером.
|
|||
18
Вуглускр1991
23.04.13
✎
13:24
|
(16) Я тебе мылом отпишу которое у тебя в профиле. Рабочее?
|
|||
19
rutony
23.04.13
✎
13:29
|
(14) Ммм отличная штука, а я делал на базе сканопоса и шрифта..
|
|||
20
Вуглускр1991
23.04.13
✎
13:36
|
(16) К сожалению этот проект не ушел в серию, там были сделаны архитектурные просчеты большого масштаба. Он успешно работает в одной торговой сети, но затраты на его освоение могут быть соизмеримы с полной его переделкой.
Хотя я эти затраты до сих пор сравниваю в меньшую сторону с написанием обменов через КД. Стоило оно заказчику 40 тыр. За такие деньги сейчас, думаю, что в нем можно разобраться, настроить собственные правила, запустить и остаться в небольшом плюсе порядка 10 тыр. Очень бы хотелось реконструировать разработку в таком ключе: заделать архитектурный прокол с генерацией ссылок в 8-ке. Сейчас они генерируются случайно, нужно, чтобы на входящую из 7-ки ссылку "8445|34526|БЗД" генерировался соответствующий ей уникальный идентификатор, и чтобы если приходит укороченная ссылка "34526|БЗД" идентификатор генерировался бы тот же самый. Тогда я бы избавился от такого вида документов в 8-ке "v7НеизвестныйПокаДокумент" для ссылок о которых данных в пакете обмена пока нет. Анонс примерно такой. Мои консультации, опять же к сожалению, на данной стадии (замороженной) проекта будут необходимы. |
|||
21
Serginio1
23.04.13
✎
13:43
|
(19) Я уже стал большим сторонником 2D штрих кодов. Информации влезает много. Кстати strokescribe пользовался и для печать двухмерных кодов через Bitmap для печати на мобильные принтеры используя CPL.
|
|||
22
Dolly_EV
23.04.13
✎
13:59
|
(18) да, рабочее
(16) отправь ,что есть. меня интересует вот этот момент: "написана обработка раскрывающая посылку 7.7 в иерархическую структуру всех выгружаемых объектов (они не копятся в этой структуре, а выгружаются в XML по мере поступления, т.е. реализован некий стек)" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |