Класс 1С++ для программного добавления изображений/текста/ШК в таблицу

Необходимо добавить в сформированную таблицу изображения/текста/ШК (81 тип ШК) с прозрачным фоном? Вставить фирменный логотип? Быстро организовать оформление документов в корпоративном стиле? Данная разработка поможет в этом!

Буквально на днях встала задача программного размещения картинок в уже сформированной таблице, при этом картинки должны были быть с прозрачным фоном. Как результат изысканий появился данный класс — возможно кому-нибуть пригодится.

Что может:
Размещать в произвольном месте в таблице картинки с прозрачным фоном, с возможностью произвольного смещения картинки по оси X/Y, c возможностью поворота картинки на произвольный градус. С версии 1.3 — поддержка вывода 81 типа штрих-кодов, в том числе двухмерные QR Code, Data Matrix и т.д. (корректно кодирует кириллицу).

Где использовать:

  • при вставке подписей и печатей
  • при вставке фирменных логотипов
  • для реализации корпоративного оформления документов
  • при вставке текста
  • при вставке штрих-кодов (список доступных типов ШК см. ниже)
  • и т.д.

Что используется:
1. ВК TableDoc.dll — автор Трапезников Дмитрий (trad) (http://www.1cpp.ru/forum/YaBB.pl?num=1177688915/0) — используется возможность добавления в таблицу произвольного количество OLE-объектов произвольных размеров (обязательно)
2. ActiveX элемент управления  bmp_1c.ocx (ActiveBMP) — автор Морев Андрей (Z1) (http://1c.proclub.ru/modules/mydownloads/personal.php?lid=2725&cid=111) — используется непосредственно для отображения картинок в таблице (обязательно)
3. ActiveX GFLAx (http://www.xnview.com/en/download_gfl.html) — для возможности произвольного поворота вставляемого изображения и конвертации входящего изображения в BMP (опционально)
4. ActiveX элемент управления  text_1c.ocx (ActiveText) — автор Морев Андрей (Z1) (http://1c.proclub.ru/modules/mydownloads/personal.php?cid=129&lid=2726) — используется непосредственно для отображения картинок в таблице (опционально)

5. Шрифт EanG000.ttf — для вывода штрих-кодов EAN-13.

6. ActiveX элемент управления  OcvitaBarcode.ocx — Разработчик: Ocvita (http://ocvita.ru/content/view/89/1/) На основе библиотеки zint (www.sourceforge.net/projects/zint) — используется для отображения ШК всевозможных типов в таблице

При наличии GFLAx — входящий файл картинки может быть практически любого графического формата, иначе — только BMP.

Свойства:
ЕстьПроизвольноеСмещение — использовать произвольное смещение при размещении объекта в таблицу (0 — нет; 1 — да);
ПроизвольноеСмещениеНач_X, ПроизвольноеСмещениеКон_X, ПроизвольноеСмещениеНач_Y, ПроизвольноеСмещениеКон_Y — границы в пикселях для произвольного смещения;
ЕстьПроизвольныйПоворот — использовать поворот на произвольный градус при размещении объекта в таблицу  (0 — нет; 1 — да);
ПроизвольныйПоворотНач, ПроизвольныйПоворотКон — границы для ограничения градуса поворота;

Методы:
Процедура ПодключитьТаблицу(Таб) — подключение таблицы к классу

  • Таб — объект типа «Таблица»

Функция ДобавитьИзображение(Лево, Верх, Право, Низ, Путь, Тип) — добавление изображения в таблицу, возвращает ссылку на добавленный объект ActiveBMP

  • Лево, Право, Верх, Низ — координаты добавиления изображения в таблицу (см. «тип»)
  • Путь — путь к файлу изображения
  • Тип — тип системы координат: 0 — пиксельная; 1 — табличная; 2 — левый верхний угол задается в табличной системе, в «право,низ» — задается смещение относительно левого верхнего угла

Функция ДобавитьТекст_Актив(Лево, Верх, Право, Низ, Текст, Тип) — добавление текста (с помощью ActiveText) в таблицу, возвращает ссылку на добавленный объект ActiveText

  • Лево, Право, Верх, Низ — координаты добавиления изображения в таблицу (см. «тип»)
  • Текст— текст для добавления в таблицу
  • Тип — тип системы координат: 0 — пиксельная; 1 — табличная; 2 — левый верхний угол задается в табличной системе, в «право,низ» — задается смещение относительно левого верхнего угла

Функция ДобавитьШК_Актив(Лево, Верх, Право, Низ, ШК, Тип) — добавление штрих-кода (с помощью ActiveText) в таблицу, возвращает ссылку на добавленный объект ActiveText

  • Лево, Право, Верх, Низ — координаты добавиления изображения в таблицу (см. «тип»)
  • ШК— штрих-код для добавления в таблицу
  • Тип — тип системы координат: 0 — пиксельная; 1 — табличная; 2 — левый верхний угол задается в табличной системе, в «право,низ» — задается смещение относительно левого верхнего угла

Функция ДобавитьТекст(Лево, Верх, Право, Низ, Текст, Тип) — добавление текста (стандартный объект Текст) в таблицу, возвращает ссылку область таблицы добавленного объекта

  • Лево, Право, Верх, Низ — координаты добавиления изображения в таблицу (см. «тип»)
  • Текст— текст для добавления в таблицу
  • Тип — тип системы координат: 0 — пиксельная; 1 — табличная; 2 — левый верхний угол задается в табличной системе, в «право,низ» — задается смещение относительно левого верхнего угла

Функция ДобавитьШК(Лево, Верх, Право, Низ, ШК, Тип) — добавление штрих-кода (стандартный объект Текст) в таблицу, возвращает ссылку область таблицы добавленного объекта

  • Лево, Право, Верх, Низ — координаты добавиления изображения в таблицу (см. «тип»)
  • ШК — штрих-код для добавления в таблицу
  • Тип — тип системы координат: 0 — пиксельная; 1 — табличная; 2 — левый верхний угол задается в табличной системе, в «право,низ» — задается смещение относительно левого верхнего угла

Функция ДобавитьШК_Оквита(Лево, Верх, Право, Низ, ШК, ТипШК, Тип) — добавление штрих-кода (с помощью OcvitaBarcode) в таблицу, возвращает ссылку на добавленный объект OcvitaBarcode

  • Лево, Право, Верх, Низ — координаты добавиления изображения в таблицу (см. «тип»)
  • ШК — штрих-код для добавления в таблицу
  • ТипШК — тип штрих-код для добавления в таблицу, можно передавать цифровой код или строковое название (доступные типы ШК см. ниже)
  • Тип — тип системы координат: 0 — пиксельная; 1 — табличная; 2 — левый верхний угол задается в табличной системе, в «право,низ» — задается смещение относительно левого верхнего угла

Пример добавления в таблицу подписи с печатью

    ….
    Таблица = СоздатьОбъект(«Таблица»);
    //заполнение таблицы
    ….
    Таблица.Показать();

    Печ = СоздатьОбъект(«ИзображенияДляТаблицы»);
    Печ.ПодключитьТаблицу(Таблица);
    Печ.ЕстьПроизвольноеСмещение = 1;

    Печ.ЕстьПроизвольныйПоворот = 0;
    
    Печ.ДобавитьИзображение(2,5,70,50,»C:Подпись.gif»,2);

    Печ.ЕстьПроизвольныйПоворот = 1;
    Печ.ПроизвольныйПоворотНач = -15;
    Печ.ПроизвольныйПоворотКон = 15;

    Печ.ДобавитьИзображение(300,150,430,280,»C:Печать.gif»,0);

 

Обновление от 09.06.2012 версия 1.1

1. При повороте картинки — размер картинки увеличивается пропорционально углу поворота — раньше это увеличение картинки компенсировалось увеличением

втавляемого ОЛЕ-объекта, теперь новое изображение после поворота обрезается до первоначальных размеров — имхо — так более правильно.

2. Особенностью ActiveBMP является то, что изображение из файла подгружается в ОЛЕ-объект в момент визуального просмотра таблицы/отправки на печать. Поэтому при массовой вставке объектов с произвольным поворотом в таблицу получалось что при просмотре всей таблицы в ОЛЕ-объекты подгружалось последнее «повернутое» изображение (корректировка картинки работала через один файл во временном каталоге). Сейчас для каждого такого изображения создается свой уникальный файл во временном каталоге. Данные файлы удаляются при следующем создании объекта «ИзображенияДляТаблицы» — это накладывает некоторое ограничение — если сформировать таблицу несколько раз подряд (без печати и визуального просмотра всех страниц), то изображения на невидимых страницах всех таблиц, кроме последней, будут отсутствовать.

Обновление от 18.06.2012 версия 1.2

1. Добавлена возможность размещения в таблице текста и штрих-кода двумя способами: с помощью ActiveX элемент управления  bmp_1c.ocx (ActiveBMP) и с помощью стандартного объекта «Текст» (базовый функционал одинаков, но у ActiveX возможностей все таки больше — возможно кому то это будет критично). При этом работает возможность произвольного смещения и поворота добавляемого объекта.

2. Процедуры добавления объекта переделаны в функции, с возвратом ссылки на добавляемый объект, чтобы после добавления можно было «поиграть» со свойствами этих объектов.

Обновление от 20.06.2012 версия 1.3

 1. Добавлена поддержка ActiveX элемента управления OcvitaBarcode.ocx — с его помощью стал доступным вывод в таблицу практически любого ШК, в т.ч. дмухмерных с поддержой кириллицы. Фон для таких объектов непрозрачный (кстати, цвет изображения и фона можно настраивать в свойствах объекта), отсутствует возможность произваольного поворота (в свойствах объекта она есть, но при этом 1Ска закрывается с ошибкой).

Доступные типы ШК:

    1 : Code 11
    2 : Code 2 of 5
    3 : Interleaved 2 of 5
    4 : Code 2 of 5 IATA
    6 : Code 2 of 5 Data Logic
    7 : Code 2 of 5 Industrial
    8 : Code 3 of 9 (Code 39)
    9 : Extended Code 3 of 9 (Code 39+)
    13 : EAN (EAN-8/13 auto select)
    16 : GS1-128
    18 : Codabar
    20 : Code 128 (subset auto select)
    21 : Deutshe Post Leitcode
    22 : Deutshe Post Identcode
    23 : Code 16K
    24 : Code 49
    25 : Code 93
    28 : Flattermarken
    29 : GS1 DataBar-14
    30 : GS1 DataBar Limited
    31 : GS1 DataBar Expanded
    32 : Telepen Alpha
    34 : UPC A
    37 : UPS E
    40 : PostNet
    47 : MSI Plessey
    49 : FIM
    50 : LOGMARS
    51 : Pharmacode One-Track
    52 : PZN
    53 : Pharmacode Two-Track
    55 : PDF417
    56 : PDF417 Truncated
    57 : Maxicode
    58 : QR Code
    60 : Code 128 (Subset B)
    63 : Australia Post Standard Customer
    66 : Australia Post Reply Paid
    67 : Australia Post Routing
    68 : Australia Post Redirection
    69 : ISBN (EAN-13 with verification stage)
    70 : Royal Mail 4 State (RM4SCC)
    71 : Data Matrix
    72 : EAN-14
    75 : NVE-18
    76 : Japanese Post
    77 : Korea Post
    79 : GS1 DataBar-14 Stacked
    80 : GS1 DataBar-14 Stacked Omnidirectional
    81 : GS1 DataBar Expanded Stacked
    82 : PLANET
    84 : MicroPDF417
    85 : USPS OneCode
    86 : Plessey Code
    87 : Telepen Numeric
    89 : ITF-14
    90 : Dutch Post KIX Code
    92 : Aztec Code
    93 : DAFT Code
    97 : Micro QR Code
    98 : HIBC Code 128
    99 : HIBC Code 39
    102 : HIBC Data Matrix
    104 : HIBC QR Code
    106 : HIBC PDF417
    108 : HIBC MicroPDF417
    112 : HIBC Aztec Code
    128 : Aztec Runes
    129 : Code 32
    130 : Composite Symbol with EAN linear component
    131 : Composite Symbol with GS1-128 linear component
    132 : Composite Symbol with GS1 DataBar-14 linear component
    133 : Composite Symbol with GS1 DataBar Limited component
    134 : Composite Symbol with GS1 DataBar Extended component
    135 : Composite Symbol with UPC A linear component
    136 : Composite Symbol with UPC E linear component
    137 : Composite Symbol with GS1 DataBar-14 Stacked component
    138 : Composite Symbol with GS1 DataBar-14 Stacked Omnidirectional component
    139 : Composite Symbol with GS1 DataBar Expanded Stacked component
    140 : Channel Code
    141 : Code One
    142 : Grid Matrix

http://www.1cpp.ru/forum/YaBB.pl?num=1338556939

91 Comments

  1. CaSH_2004

    Пользоваться не буду т.к. 7.7 почти не пользуюсь, но автор красавчик!, столько разработок совместил, это непросто

    Кстати тут есть Разукрашка http://infostart.ru/public/19856/

    при помощи нее можно раскрасить код

    Reply
  2. Ёпрст

    Еще нужно как минимум добавить свойство масштабирования картинки.

    Reply
  3. zarius

    (2) Картинка масштабируется под размеры добавляемого в таблицу объекта… или я не так понял предложение в (2)?

    Reply
  4. BorisBelov

    Хорошо!

    Reply
  5. Доня

    А как этим пользоваться?

    это надо вставить в модуль формы или как ???

    Reply
  6. zarius

    (5) это класс 1С++. Более подробно можно узнать на http://www.1cpp.ru.

    Reply
  7. zarius

    (5) если необходимо без 1С++ — пожалуйста… код класса открыт — все процедуры/функции можно переносить непосредственно в модуль вывода таблицы и там их использовать…

    однако если используешь 7.7 — настоятельно рекомендую посмотреть в сторону 1С++ — временные затраты на это окупятся многократно…

    Reply
  8. soba

    Плюс однозначный.

    А как подобное с приличного объема картинками будет работать по скорости? Конкретнее- если использовать класс для пакетной печати пакета документов вместе с сертификатами (а они по 2-4Мб)? Тормоза будут?

    Reply
  9. zarius

    (8) добавление оле-объектов происходит довольно шустро. Как то пробовал — около 20 печатей добавляются в довольно объемную таблицу — около 3-4 секунд, с учетом что все это дело печатается несколько минут — время на добавление изображений не критично. Там есть ньюанс, если собираешься сразу же отправлять на печать, не выводя на экран…

    Reply
  10. soba

    (9) Именно так и нужно, пакетная печать напрямую. А что за нюанс?

    Reply
  11. zarius

    (10) ньюанс в том что добавление изображений происходит после метода таблицы «Показать()», поэтому в любом случае таблица будет отображена для пользователя.

    Самый простой вариант в этом случае — использовать:

    … заполнение таблицы
    Таблица.Показать(,,0);
    … заполнение таблицы изображениями
    
    Таблица.Напечатать(0);
    Таблица.Показать(,,-1);
    

    Однако при этом варианте пользователь все равно увидит мелькание выводимой таблицы

    Другой вариант — использовать элемент управления «ПолеТабличногоДокумента«, предоставляемый TableDoc.dll. Этот элемент управления можно поместить, например, в скрытый слой и выводить таблицу туда. Оттуда и печатать.

    Перем гТДОтчет;
    
    Функция  ПопыткаЗагрузкиТаблДок()
    Попытка
    мМен=СоздатьОбъект(«МенеджерТабличногоДокумента»);
    Исключение
    Если ЗагрузитьВнешнююКомпоненту(«TableDoc.dll») = 0 Тогда
    Сообщить(«Ошибка загрузки ВК TableDoc»);
    СтатусВозврата(0);
    Возврат 0;
    КонецЕсли;
    Попытка
    мМен=СоздатьОбъект(«МенеджерТабличногоДокумента»);
    Исключение
    Сообщить(«Ошибка загрузки ВК TableDoc»);
    СтатусВозврата(0);
    Возврат 0;
    КонецПопытки;
    
    ОткрытьФорму(«Отчет#»,, РасположениеФайла()); // обратить внимание на знак #
    СтатусВозврата(0);
    Возврат 0
    КонецПопытки;
    Возврат 1;
    КонецФункции
    
    Процедура Сформировать()
    
    …
    Таблица = гТДОтчет.Таблица; //вместо «Таблица = СоздатьОбъект(«Таблица»); »
    … заполнение таблицы
    Таблица.Показать();
    … заполнение таблицы изображениями
    
    Таблица.Напечатать(0);
    
    КонецПроцедуры
    
    Процедура ПриОткрытии()
    Если ПопыткаЗагрузкиТаблДок() = 0 Тогда
    Возврат;
    КонецЕсли;
    
    _Форма=СоздатьОбъект(«Форма»);
    _Форма.УстановитьФорму(Форма);
    КонецПроцедуры
    
    Процедура ФормаПриСоздании(_Форма)
    гТДОтчет=_Форма.СоздатьЭлементУправления(«ПолеТабличногоДокумента»,Форма.ПолеТДОтчет);
    гТДОтчет.Таблица.Опции(0,0,2,0);
    гТДОтчет.Таблица.ТолькоПросмотр(1);
    КонецПроцедуры
    

    Показать

    где ПолеТДОтчет — элемент «кнопка» на скрытом слое формы…

    Однако при данном методе уже не обойтись без 1С++ (либо как вариант можно попробовать FormEx)

    Reply
  12. soba

    (11) zarius Спасибо, буду пробовать второй вариант. 1С++ и extForms уже давно задействованы, без них никуда 🙂

    Reply
  13. Ёпрст

    (3)

    Картинка масштабируется под размеры добавляемого в таблицу объекта… или я не так понял предложение в (2)?

    Есть несколько же методов — растягивание под размер картинки, пропорцианально, оригинальный размер , сохранение пропорций + вписывание в окошко и т.д..

    Вот это нужно в свойство класса воткнуть, у активбмп это есть.

    А так, не совсем удобно размещать по пикселям — подходит только для статических форм.

    У меня по 3-4 печати с подписями за раз выводится — мне проще в макете разместить картинку в выводимой секции.

    Класс не качал, есть ли возможность вставить картинку относительно ячеек мокселя ?

    Скажем в R1C122 — в левый верхний угол этой ячейки ?

    Т.е задавать координаты ячейки, например.

    Reply
  14. Ёпрст

    Дочитал до пакетной печати… Не показывать не катит :((

    Ладно — по старинке как то проще.

    Reply
  15. zarius

    (13)

    нужно в свойство класса воткнуть, у активбмп это есть

    не вопрос — можно все свойства активбмп перенести в свойства класса — сейчас просто реализован самый простой — но самое главное — работающий вариант. Добавил объект необходимого размера на форму — и картинка будет именно этого размера. Когда игрался с другими свойствами активбмп — было какое то шаманство — на экране одно — при печати другое (читал http://www.1cpp.ru/forum/YaBB.pl?num=1297093976/10#10 — но рекомендации Z1 как то не особо помогли в этом плане).

    У меня по 3-4 печати с подписями за раз выводится

    а если надо не статические 3-4, а 20-30 в одной таблице, при этом места и состав подписей/печатей может меняться? 🙂

    Скажем в R1C122 — в левый верхний угол этой ячейки ?

    Может.

    ДобавитьИзображение(Лево, Верх, Право, Низ, Путь, Тип) — добавление изображения в таблицу
    
    Лево, Право, Верх, Низ — координаты добавиления изображения в таблицу (см. «тип»)
    Путь — путь к файлу изображения
    Тип — тип системы координат: 0 — пиксельная; 1 — табличная; 2 — левый верхний угол задается в табличной системе, в «право,низ» — задается смещение относительно левого верхнего угла
    

    Тип — тип системы координат: 0 — пиксельная; 1 — табличная; 2 — левый верхний угол задается в табличной системе, в «право,низ» — задается смещение относительно левого верхнего угла

    (14)

    Дочитал до пакетной печати… Не показывать не катит :((

    Так можно и показывать и не показывать — как душе угодно…

    Reply
  16. nirbolz

    А в 1с 8.2 такая прога будет работать?

    Reply
  17. zarius

    (16) именно эта — нет, однако нет ничего невозможного — уверен, что можно подобный функционал реализовать и на 8.2:

    1. GFLAx — точно заработает

    2. bmp_1c.ocx — скорее всего тоже должен заработать — надо пробовать

    Осталось найти возможность программно добавлять ОЛЕ-объекты в таблицу 8.2

    Reply
  18. zarius

    (16) да, для 8.2 все можно сделать…

    Reply
  19. Ёпрст

    >>

    .а если надо не статические 3-4, а 20-30 в одной таблице, при этом места и состав подписей/печатей может меняться? 🙂

    У меня все печати не статические, форма динамическая, размеры её разные, просто на 1 странице как правило 6 печатей и 6 подписей вылезает.

    Подписи и печати от разных фирм + забит массив печатей + вывод от одной фирмы идет рандомный — «иммитация» как от руки..

    Твоим способом, пришлось бы каждый раз вычислять положение 12 картинок на каждой страничке.. а как у меня — тупо вывод штатненько в макете, только картинки разные подсовываются.

    По поводу «обрезания» картинок в активбмп, дык Z1 показал же как надо делать:

    ActiveX.DstWidth = -1;

    ActiveX.DstHeight = -1;

    Да и .. Таб.Показать() как то не охота делать.

    Reply
  20. Ёпрст

    Да, страничек вылезает иной раз и по 100 штук.. следовательно картинок там — 600

    🙂

    Reply
  21. zarius

    (19) Если у тебя сейчас все работает — возможно лучше ничего и не трогать 🙂

    У тебя расположение изображений (печати/подписи) в таблице статическое — при визуальном сравнении большого объема страниц — сразу выявляется закономерность в расположении печатей и подписей (тем более если есть повторяющиеся страницы). При использовании подхода, реализованного в классе — каждую печать/подпись можно сделать уникальной — вот здесь уже полноценная ««иммитация» как от руки..»

    По поводу «обрезания» картинок в активбмп, дык Z1 показал же как надо делать:

    Эту рекомендацию и использую + «ActiveX.Function = 1;«, однако когда начинаю играть в другими свойствами — начинается шаманство… в общем думаю что самый простой вариант для доступа к свойствам АктивБМП — это переделать проц. ДобавитьИзображение(…) в функцию с возвратом ссылки на объект АктивБМП…

    Да и .. Таб.Показать() как то не охота делать.

    Чем не нравится решение в (11)? Конечно не совсем удобно — но тем не менее это решение…

    Да, страничек вылезает иной раз и по 100 штук.. следовательно картинок там — 600

    Знакомые объемы… 🙂

    Reply
  22. Ёпрст

    OcvitaBarcode.ocx, надеюсь, бесплатная ?

    Reply
  23. Ёпрст

    (21) решение в (11) не нравится скоростью, любой вывод формы на экран — всегда медленно, чем сразу на принтёр.

    Reply
  24. zarius

    (22)бесплатная, на сайте разработчика в архиве даже исходники есть http://ocvita.ru/content/view/89/1/, все это дело построено на основе опенсорсного проекта — библиотеки zint http://www.sourceforge.net/projects/zint

    Reply
  25. zarius

    кстати,

    можно установить прозрачный цвет фона штрихкода, для этого свойству bgcolour следует присвоить значение «» (пустая строка)

    , вот только надо ли оно — возможно изображение на слое под ШК сделает в этом случае ШК нечитаемым…

    Reply
  26. zarius

    (24) тоже верно, но мне другие варианты пока на ум не приходят…

    Reply
  27. dudf

    2. ActiveX элемент управления bmp_1c.ocx (ActiveBMP) — автор Морев Андрей (Z1) (http://1c.proclub.ru/modules/mydownloads/personal.php?lid=2725&cid=111) — используется непосредственно для отображения картинок в таблице (обязательно)

    Это разве обязательно? Через стандартную картинку запросто можно все вывести.

    Reply
  28. Ёпрст

    (27) што именно ты через стандартную картинку выведешь ?

    Печать с прозрачным фоном смогёшь?

    🙂

    Reply
  29. Ёпрст

    И не просто так, а что еще и «динамически» картинка из файла всосалась ?

    Reply
  30. dudf

    (28) Ёпрст, нет, но мне и не нужно.

    (29) Ёпрст, в свойствах картинки(текст) пишешь ПриВыводеКартинки(Таб.ТекущийОбъект,Файл) и добавляешь в код:

    Функция ПриВыводеКартинки(Картинка, Файл)
    
    Картинка.РежимРисования(3);
    Картинка.Загрузить(Файл);
    
    КонецФункции

    Где файл — путь к готовой картинке. И эта функция будет вызываться при Таб.ВывестиСекцию.

    Имхо если не нужны всякие повороты-перевороты, то в разы проще выходит.

    Reply
  31. dudf

    А понимает ли Ocvita кириллицу? Просто если верить «На основе библиотеки zint», а с зинтом я уже крупно обломался, то какие еще есть пути?

    Reply
  32. Ёпрст

    (30) :)))))))))

    Еще раз : «с прозрачным фоном»

    Reply
  33. Ёпрст

    Если че, активикс в этой работе нужен только для этих целей.

    А как вставить картинку с прозрачным фоном статическую куда угодно, я и сам кого хошь научу.

    Reply
  34. zarius

    (31) кириллицу понимает — проверено на QR Code

    Reply
  35. dudf

    (33) ну так то да 8)

    Reply
  36. pvlunegov

    Спасибо, полезно для начала.

    Пришлось долго копать о том, как подключать классы 1с++ к 1с.

    Просьба автору добавить файл с комментарием, как данный класс подключать.

    Мне как новичку пришлось угробить весь день элементарно для того чтобы понять что с этим файлом делать (.ert)/

    Сначала думал, что все процедуры надо прописать в глобальном модуле.

    Потом попробовал в обработке прописывать, не катило.

    Короче весь мозг сломал угробил 3 часа и ничего не понял, как это все работает.

    Все нужные плагину, указанные у вас установил, все норм.

    Просьба для новичков инструкцию о том, как енто дело подключать к 1с.

    Reply
  37. zarius

    (36) думаю нет смысла в каждой публикации классов 1С++ (а таких не мало на ИС) проводить ликбез для новичков. Вам достаточно ознакомиться с документацией ВК 1С++ чтобы понять как и что подключать…

    То, что Вам пришлось «долго копать» — думаю это время окупится многократно, если вы все еще на 7.7 и только начали смотреть в сторону 1С++.

    Reply
  38. zarius

    (36) для начала — очень простая и доступная статья 1С++ — это просто

    Reply
  39. YODDHA

    а в PDF, что бы сохранялась прозрачность, можно как то сделать?

    Reply
  40. zarius

    (39) а в чем проблема? формируете обычную таблицу (mxl), а потом сохраняете ее в PDF, например, через ёксель.

    Reply
  41. YODDHA

    (40) формирую, и сохраняю, и печать перестает быть прозрачной((((

    Reply
  42. YODDHA

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

    Reply
  43. zarius

    (42) Напрямую ёксель в этом классе не используется, но результат работы этого класса, полученный в виде таблицы можно легко этой ВК сохранить как PDF. Документация и сама компонента доступна на сайте автора: Yoksel

    Reply
  44. zarius

    (42) действительно сейчас есть проблемы с некоторыми ссылками на компоненты — напишите каких компонент не хватает — вышлю на почту

    Reply
  45. Zaletov

    Добрый день. немогу скачать компаненты TableDoc.dll и bmp_1c.ocx.

    Reply
  46. zarius

    (45)

    TableDoc.dllhttp://www.1cpp.ru/forum/YaBB.pl?num=1177688915/0

    bmp_1c.ocx — пришлите почту — вышлю индивидуально

    Reply
  47. dekom3

    Помогите найти bmp_1c.ocx. Пожалуйста.

    Reply
  48. zarius

    (48) bmp_1c.ocx — отправил по почте

    Reply
  49. dekom3

    (49)

    Низкий поклон.

    Но…

    Если ЗагрузитьВнешнююКомпоненту(«TableDoc.dll») = 0 Тогда
    Предупреждение(«Неудачная попытка загрузить TableDoc.dll»);
    СтатусВозврата(0);   Возврат;
    КонецЕсли;
    
    ………………..

    Печ = СоздатьОбъект(«ИзображенияДляТаблицы»);

    {Документ.ЗаказНаряд.Форма.Модуль(528)}: Неудачная попытка создания объекта (ИзображенияДляТаблицы)

    Кого забыл подгрузить?

    Reply
  50. zarius

    TableDoc не загрузился — соотв. класс ИзображенияДляТаблицы так же не грузится

    Файл TableDoc.dll есть?

    Reply
  51. dekom3

    (51)

    Есть FileVersion : 0, 1, 1, 45

    И в каталог базы пихал, и в Bin

    ЗагрузитьВнешнююКомпоненту(«TableDoc.dll») дает 1

    и в модуле формы пробовал и в Глоб.Модуле

    Может длл битый. Но больше найти тоже нигде не могу.

    Reply
  52. zarius

    (52) Такое ощущение, что класс не определен в defcls.prm

    Reply
  53. dekom3

    (53)

    Если честно — не понимаю что такое defcls.prm.

    А нет случайно маленького рабочего примера?

    Ну и с самой длл-кой.

    У меня задача следующая:

    Есть Документ — Заказ-Наряд. Печатная форма разделена на две части вертикально. Справа 3 табличные части в разными количествами строк (Может быть 15,2,4, а может 3,14,3). А слева рисунок примерно на 25 строк. Хочется как-то оптимальненько реализовать.

    Reply
  54. zarius

    (54) если внимательно почитать заголовок, то в нем можно увидеть «Класс 1С++»

    Как подключать классы 1С++ — необходимо смотреть документацию на 1cpp.ru. Если совсем по простому — статья 1С++ — это просто.

    В вашем случае надо создать файл в каталоге ИБ (если его еще нет) defcls.prm и добавить в него определение для класса ИзображенияДляТаблицы:

    класс ИзображенияДляТаблицы= КлассыИзображенияДляТаблицы.ert
    {
    };

    Соотв. в каталоге ИБ в каталог Классы положить обработку с классом из данной публикации.

    А вообще данные вопросы уже поднимались в обсуждении — (37) (38).

    Reply
  55. gamletspb77

    а не поможет кто с компонентой bmp_1c.ocx — нигде живую ссылку найти не могу??

    а то без нее походу не заводится

    email: gamlet77@gmail.com

    Reply
  56. zarius

    (56) отправил

    Reply
  57. gamletspb77

    (57) спасибо.

    Однако не работает: bmp картинку выводит (при этом цвета корявит со страшной силою), все что не bmp не выводит вообще — выдает пустой объект. GFLAx вроде подключен (по крайней мере не ругается на него). В чем может быть проблема?

     Таб = СоздатьОбъект(«Таблица»);
    Таб.ИсходнаяТаблица(«Таблица1»);
    
    Таб.Вывести();
    Таб.Показать();
    
    ИТаб = СоздатьОбъект(«ИзображенияДляТаблицы»);
    ИТаб.ПодключитьТаблицу(Таб);
    
    ИТаб.ДобавитьИзображение(1,2,100,100,»D:Локальные документы1С77Test_SQL — копияPicKoala.bmp»,2);
    ИТаб.ДобавитьИзображение(2,5,100,100,»D:Локальные документы1С77Test_SQL — копияPicKoala.jpg»,2);

    Показать

    Reply
  58. zarius

    (58) если не выводит ничего кроме bmp — значит проблемы с GFLAx, ибо именно он перед выводом конвертирует изображение в bmp.

    Reply
  59. OldCadet

    (57)

    Добрый день.

    И мне скиньте плиз bmp_1c.ocx на

    dutoff@rambler.ru

    Reply
  60. zarius

    (60) отправил

    Reply
  61. Maddy18

    Добрый вечер.

    Можно и мне bmp_1c.ocx на info@1carhipov.ru ?

    Reply
  62. zarius

    (62) вышлю в понедельник

    Reply
  63. james404

    (63)

    Добрый вечер.

    Пожалуйста пришлите и мне bmp_1c.ocx на 721505@bk.ru

    Заранее спасибо!

    Reply
  64. zarius

    (64)

    выслал

    Reply
  65. PNTRL

    Добрый вечер.

    Пожалуйста пришлите bmp_1c.ocx на penetralia@rambler.ru

    Заранее спасибо!

    Reply
  66. zarius

    (66)

    выслал

    Reply
  67. PNTRL

    Благодарю!

    Reply
  68. alexrav

    Добрый вечер.

    Можно и мне bmp_1c.ocx на alexregis@bk.ru ?

    Заранее спасибо!

    Reply
  69. zarius

    (69) выслал

    Reply
  70. kras_71

    Пожалуйста пришлите bmp_1c.ocx на kras_71@mail.ru

    Reply
  71. zarius

    (71) выслал

    Reply
  72. FAMыч

    Доброго времени суток!

    Если не трудно, вышлите bmp_1c.ocx на nk374@mail.ru

    Заранее спасибо.

    Reply
  73. zarius

    (73) выслал

    Reply
  74. sergu1963

    Доброе время суток!

    Пожалуйста, вышлите TableDoc.dll и bmp_1c.ocx на sergu1963@yandex.ru.

    Заранее благодарю.

    Reply
  75. zarius

    (78) выслал

    Reply
  76. aleksdbs

    Прошу скинуть bmp_1c.ocx и text_1c.ocx на aleksdbs@gmail.com

    Reply
  77. aleksdbs

    Прошу скинуть bmp_1c.ocx и text_1c.ocx на aleksdbs@gmail.com

    Спасибо!

    Reply
  78. zarius

    (81) выслал

    Reply
  79. Seneka7608

    Приветствую!

    Я со стандартным в этой теме вопросом, тоже прошу скинуть bmp_1c.ocx и text_1c.ocx на sergenii@mail.ru

    Заранее, спасибо!

    Reply
  80. zarius

    (83) выслал

    Reply
  81. demetrius2003

    Если Вас не затруднит — скиньте bmp_1c.ocx и text_1c.ocx на nikservice[собака]rambler.ru. Спасибо!

    P.S.: Если не сложно, с примером использования в 1с 77

    Reply
  82. zarius

    (85) Выслал. Пример добавления в таблицу подписи с печатью есть в описании публикации.

    Reply
  83. IMS

    Добрый день.

    Я с тем же вопросом, прошу скинуть bmp_1c.ocx и text_1c.ocx на igorms1342@gmail.com

    Заранее, спасибо!

    Reply
  84. zarius

    (87) выслал

    Reply
  85. IMS26

    Прошу скинуть bmp_1c.ocx и text_1c.ocx

    Заранее, спасибо!

    Reply
  86. zarius

    (87) (89) отправил ссылку через ЛС

    Reply
  87. systemaooo2007

    Прошу скинуть bmp_1c.ocx и text_1c.ocx на systemaooo@gmail.com

    Спасибо!

    Reply
  88. CheBurator

    проблема не вставить картинку. проблема чтобы прайс с каринками, даже достаточно маленькими не весил по 15-25 Мб в экселе.

    Reply
  89. zarius

    (92) выслал

    Reply
  90. zarius

    (93) ActiveBMP работает только с bmp — отсюда и размер. В моих задачах не было необходимости сохранять итоговые таблицы (только печать), поэтому проблемой размера не озадачивался. Возможно проблема решится архивированием итоговой таблицы?

    Reply
  91. CheBurator

    (95) частично решается. но это костыль.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *