Программное добавление ActiveX (изображений/текста/ШК и т.д.) в табличный документ


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

Развитие разработки http://avprog.ru/public/138263/ для 1С 8.х

Что может:

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

Кроме того, при отсутствии зарегистрированного ActiveX в системе - обработка сама скопирует и зарегистрирует необходимый ActiveX (в ДЕМО присутствуют ActiveBMP и ActiveText).

Список поддерживаемых ActiveX ограничен (подробнее см. ниже). Для добавления в поддержку нового элемента ActiveX необходимо написать запрос автору.

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

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

Список поддерживаемых ActiveX:
1. ActiveX элемент управления  bmp_1c.ocx (ActiveBMP) - автор Морев Андрей (Z1) (http://1c.proclub.ru/modules/mydownloads/personal.php?lid=2725&cid=111) - используется непосредственно для отображения картинок в таблице (обязательно)
2. ActiveX GFLAx (http://www.xnview.com/en/download_gfl.html) - для возможности произвольного поворота вставляемого изображения и конвертации входящего изображения в BMP (опционально)
3. ActiveX элемент управления  text_1c.ocx (ActiveText) - автор Морев Андрей (Z1) (http://1c.proclub.ru/modules/mydownloads/personal.php?cid=129&lid=2726) - используется непосредственно для отображения картинок в таблице (опционально)

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

5. ActiveX элемент управления V8.Barcod - стандартный элемент управления "1С.V8.Печать штрих-кодов" для 1С 8.х

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

Для добавления в поддержку нового элемента ActiveX необходимо написать запрос автору.


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

Методы:
Функция ДобавитьИзображение(Таб, Лево, Верх, Право, Низ, Тип, Путь, Макет) - добавление стандартного изображения

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

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

Функция ДобавитьИзображение_Актив(Таб, Лево, Верх, Право, Низ, Тип, Путь, Макет) - добавление ActiveBMP

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

Функция ДобавитьШК_1С8(Таб, Лево, Верх, Право, Низ, Тип, ШК) - добавление стандартного "1С.V8.Печать штрих-кодов"

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

Функция ДобавитьActiveX(Таб, Лево, Верх, Право, Низ, Тип, Имя) - добавление произольного ActiveX (в обработке должна быть поддержка данного ActiveX)

Все функции возвращают ссылку на Рисунок табличного документа (тип "РисунокТабличногоДокумента"). Доступ к свойствам ActiveX осуществляется через СсылкаНаРисунок.Объект

Опсание параметров:

Таб - ссылка на табличный документ, куда добавляется объект

Лево, Верх, Право, Низ - координаты добавления объекта в таблицу (см. "тип")

Тип - тип системы координат:
        0 - пиксельная;
        1 - табличная;
        2 - левый верхний угол задается в табличной системе, в (право,низ) - задается смещение относительно левого верхнего угла
        3 - то же самое что и п.2, только смещение укзывается в реальных мм (при автомасштабе - вычисляется реальная ширина листа при печати и размер)

Путь - путь к файлу изображения, либо расширение файла при непустом Макете

Макет - Макет с двоичными данными (с картинкой)

Текст - текст для вывода

ШК - штрих-код для добавления в таблицу

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

Имя - имя ActiveX (должен быть среди списка поддерживаемых обработкой ActiveX)

 


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

    ...
    ТабДок = Новый ТабличныйДокумент;
   
Макет = ЭтотОбъект.ПолучитьМакет("Макет");
   
//вывод самого отчета
   
...

   
ТабДок.АвтоМасштаб = Истина;

    //подсоединим внешнюю обработку "ИзображениеДляТаблицы"
    //считаем что необходимая нам обработка лежит там же где и текущая обработка с примером
   
Обр = ВнешниеОбработки.Создать(СтрЗаменить(ЭтотОбъект.ИспользуемоеИмяФайла,"ПримерИспользования","ИзображениеДляТабличногоДокументаДЕМО"));

    //добавим двумерный ШК для упрощения документооборота с клиентами
   
Рис = Обр.ДобавитьШК_Оквита(ТабДок, 27, 2, 40, 40, 2, ТекстДляШК , "QR Code");

   
//для печати необходим поворот изображения и смещение + реальные размеры
    //установим признак произвольного вращения (по умолчанию от -15 до 15 градусов)
   
Обр.ЕстьПроизвольныйПоворот = Истина;
   
//установим признак произвольного смещения (по умолчанию от -5 до 5 мм)
   
Обр.ЕстьПроизвольноеСмещение = Истина;
   
Рис = Обр.ДобавитьИзображение_Актив(ТабДок, 13, 33, 40, 40, 3, "jpg",ЭтотОбъект.ПолучитьМакет("ТипаПечать"));

   
//для подписей необходим минимум смещений по оси Y и без поворота + реальные размеры
   
Обр.ЕстьПроизвольныйПоворот = Ложь;
   
Обр.ПроизвольноеСмещениеНач_Y = -2;
   
Обр.ПроизвольноеСмещениеКон_Y = 1;

   
Рис = Обр.ДобавитьИзображение_Актив(ТабДок, 20, 28, 55, 40, 3, "gif",ЭтотОбъект.ПолучитьМакет("Подпись_дир"));
   
Рис = Обр.ДобавитьИзображение_Актив(ТабДок, 21, 35, 33, 13, 3, "gif",ЭтотОбъект.ПолучитьМакет("Подпись_ГБ"));
   
Рис = Обр.ДобавитьИзображение_Актив(ТабДок, 19, 38, 43, 20, 3, "gif",ЭтотОбъект.ПолучитьМакет("Подпись_менеджер"));

    //вывод на экран
   
ТабДок.Показать("Пример использования обработки ""ИзображениеДляТабличногоДокумента.epf""");

    ...

 

Почему платная:

Закономерный вопрос - почему данная разработка платная, если практически аналогичная по функционалу разработка на 7.7 - бесплатна? Ответ: в данной разработке использована другая методика подключения элементов ActiveX. Если в 7.7 можно было воспользоваться TableDoc.dll для добавления объекта в таблицу, то в 8.2 добавление объекта в табличный документ осуществляется стандартными средствами! Проблема в том что при программном добавлении объекта в табличный документ нет программных возможностей для привязки к этому объекту конкретного элемента ActiveX. Автор потратил немало времени, прежде чем нашел решение этого вопроса. Поэтому подчеркиваю: данная разработка платная за счет решения вышеописанной проблемы, а не за счет предоставление доступа к бесплатным ActiveX. Набор поддерживаемых ActiveX может быть любым, соответсвенно и решаемые данной обработкой задачи могут варьироваться.

Отличие от "предка" на 7.7:

1. Самый главный плюс решения на 8.х: перед добавлением объекта в табличный документ не надо выводить его на экран. Это основное неудобство решения на 7.7 при выводе сразу на принтер.

2. Реализована возможность авторегистрации недостающего в системе ActiveX. Для этого необходимо просто добавить файл с данным элементом в список Макетов обработки (как ДвоичныеДанные). При выполнении добавления элемента в табличный документ, обработка проанализирует отсутствие регистрации данного элемента в системе и при наличии этого элемента в списке Макетов обработки - скопирует файл с элементом ActiveX в каталог программы и зарегистрирует его. После чего добавит уже зарегистрированный элемент в табличный документ.

3. Возможность указания реальных размеров добавляемого объекта в мм, независимо от ширины табличного документа.

4. Сама структура обработки сделана максимально удобно для добавления в поддержку нового ActiveX (программный код обработки при этом не модифицируется).

Ограничение ДЕМО версии:

ДЕМО версия ограничена количеством рисунков в табличном документе равным одному.  Если рисунков более одного - обработка сообщит об этом и не станет добавлять элемент.


Файлы обработки:

-