gifts2017

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

Опубликовал Alexey (zarius) в раздел Программирование - Работа с интерфейсом

Необходимо добавить в сформированную таблицу изображения/текста/ШК (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

Скачать файлы

Наименование Файл Версия Размер
Класс "ИзображенияДляТаблицы" вер. 1.3 136
.ert 48,50Kb
29.10.15
136
.ert 48,50Kb Скачать
Класс "ИзображенияДляТаблицы" вер. 1.2 8
.ert 47,00Kb
29.10.15
8
.ert 47,00Kb Скачать
Класс "ИзображенияДляТаблицы" вер. 1.1 11
.ert 45,50Kb
29.10.15
11
.ert 45,50Kb Скачать
Класс "ИзображенияДляТаблицы" вер. 1.0 19
.ert 45,00Kb
29.10.15
19
.ert 45,00Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Олег Шалимов (CaSH_2004) 03.06.12 11:32
Пользоваться не буду т.к. 7.7 почти не пользуюсь, но автор красавчик!, столько разработок совместил, это непросто
Кстати тут есть Разукрашка http://infostart.ru/public/19856/
при помощи нее можно раскрасить код
2. Епрст (Ёпрст) 04.06.12 12:23
Еще нужно как минимум добавить свойство масштабирования картинки.
3. Alexey (zarius) 04.06.12 13:37
(2) Картинка масштабируется под размеры добавляемого в таблицу объекта... или я не так понял предложение в (2)?
4. Борис Белов (BorisBelov) 04.06.12 14:49
5. Дониэла Иванова (Доня) 04.06.12 16:02
А как этим пользоваться?
это надо вставить в модуль формы или как ???
6. Alexey (zarius) 04.06.12 16:27
(5) это класс 1С++. Более подробно можно узнать на www.1cpp.ru.
7. Alexey (zarius) 04.06.12 16:45
(5) если необходимо без 1С++ - пожалуйста... код класса открыт - все процедуры/функции можно переносить непосредственно в модуль вывода таблицы и там их использовать...
однако если используешь 7.7 - настоятельно рекомендую посмотреть в сторону 1С++ - временные затраты на это окупятся многократно...
8. soba (soba) 06.06.12 02:56
Плюс однозначный.
А как подобное с приличного объема картинками будет работать по скорости? Конкретнее- если использовать класс для пакетной печати пакета документов вместе с сертификатами (а они по 2-4Мб)? Тормоза будут?
9. Alexey (zarius) 06.06.12 09:53
(8) добавление оле-объектов происходит довольно шустро. Как то пробовал - около 20 печатей добавляются в довольно объемную таблицу - около 3-4 секунд, с учетом что все это дело печатается несколько минут - время на добавление изображений не критично. Там есть ньюанс, если собираешься сразу же отправлять на печать, не выводя на экран...
10. soba (soba) 06.06.12 10:40
(9) zarius, Именно так и нужно, пакетная печать напрямую. А что за нюанс?
11. Alexey (zarius) 06.06.12 12:37
(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)
12. soba (soba) 06.06.12 12:42
(11) zarius Спасибо, буду пробовать второй вариант. 1С++ и extForms уже давно задействованы, без них никуда :)
13. Епрст (Ёпрст) 07.06.12 09:39
(3) zarius,
Картинка масштабируется под размеры добавляемого в таблицу объекта... или я не так понял предложение в (2)?


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

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

А так, не совсем удобно размещать по пикселям - подходит только для статических форм.
У меня по 3-4 печати с подписями за раз выводится - мне проще в макете разместить картинку в выводимой секции.

Класс не качал, есть ли возможность вставить картинку относительно ячеек мокселя ?
Скажем в R1C122 - в левый верхний угол этой ячейки ?
Т.е задавать координаты ячейки, например.
14. Епрст (Ёпрст) 07.06.12 09:40
Дочитал до пакетной печати... Не показывать не катит :((
Ладно - по старинке как то проще.
15. Alexey (zarius) 07.06.12 10:33
(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)
Дочитал до пакетной печати... Не показывать не катит :((

Так можно и показывать и не показывать - как душе угодно...
16. nirbolz 08.06.12 20:33
А в 1с 8.2 такая прога будет работать?
17. Alexey (zarius) 09.06.12 10:57
(16) именно эта - нет, однако нет ничего невозможного - уверен, что можно подобный функционал реализовать и на 8.2:
1. GFLAx - точно заработает
2. bmp_1c.ocx - скорее всего тоже должен заработать - надо пробовать
Осталось найти возможность программно добавлять ОЛЕ-объекты в таблицу 8.2
18. Alexey (zarius) 09.06.12 11:18
(16) да, для 8.2 все можно сделать...
19. Епрст (Ёпрст) 09.06.12 11:27
>>
.а если надо не статические 3-4, а 20-30 в одной таблице, при этом места и состав подписей/печатей может меняться? :)


У меня все печати не статические, форма динамическая, размеры её разные, просто на 1 странице как правило 6 печатей и 6 подписей вылезает.
Подписи и печати от разных фирм + забит массив печатей + вывод от одной фирмы идет рандомный - "иммитация" как от руки..

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

По поводу "обрезания" картинок в активбмп, дык Z1 показал же как надо делать:
ActiveX.DstWidth = -1;
ActiveX.DstHeight = -1;


Да и .. Таб.Показать() как то не охота делать.
20. Епрст (Ёпрст) 09.06.12 11:28
Да, страничек вылезает иной раз и по 100 штук.. следовательно картинок там - 600
:)
21. Alexey (zarius) 09.06.12 12:46
(19) Если у тебя сейчас все работает - возможно лучше ничего и не трогать :)
У тебя расположение изображений (печати/подписи) в таблице статическое - при визуальном сравнении большого объема страниц - сразу выявляется закономерность в расположении печатей и подписей (тем более если есть повторяющиеся страницы). При использовании подхода, реализованного в классе - каждую печать/подпись можно сделать уникальной - вот здесь уже полноценная ""иммитация" как от руки.."

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

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

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

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

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

Знакомые объемы... :)
22. Епрст (Ёпрст) 20.06.12 13:20
OcvitaBarcode.ocx, надеюсь, бесплатная ?
23. Епрст (Ёпрст) 20.06.12 13:22
(21) решение в (11) не нравится скоростью, любой вывод формы на экран - всегда медленно, чем сразу на принтёр.
24. Alexey (zarius) 20.06.12 15:30
(22)бесплатная, на сайте разработчика в архиве даже исходники есть http://ocvita.ru/content/view/89/1/, все это дело построено на основе опенсорсного проекта - библиотеки zint http://www.sourceforge.net/projects/zint...
25. Alexey (zarius) 20.06.12 15:37
кстати,
можно установить прозрачный цвет фона штрихкода, для этого свойству bgcolour следует присвоить значение "" (пустая строка)
, вот только надо ли оно - возможно изображение на слое под ШК сделает в этом случае ШК нечитаемым...
26. Alexey (zarius) 20.06.12 15:39
(24) тоже верно, но мне другие варианты пока на ум не приходят...
27. Федор Дударев (dudf) 13.07.12 11:25
2. ActiveX элемент управления bmp_1c.ocx (ActiveBMP) - автор Морев Андрей (Z1) (http://1c.proclub.ru/modules/mydownloads/personal.php?lid=2725&cid=111) - используется непосредственно для отображения картинок в таблице (обязательно)

Это разве обязательно? Через стандартную картинку запросто можно все вывести.
28. Епрст (Ёпрст) 13.07.12 11:27
(27) што именно ты через стандартную картинку выведешь ?
Печать с прозрачным фоном смогёшь?
:)
29. Епрст (Ёпрст) 13.07.12 11:27
И не просто так, а что еще и "динамически" картинка из файла всосалась ?
30. Федор Дударев (dudf) 13.07.12 14:56
(28) Ёпрст, нет, но мне и не нужно.
(29) Ёпрст, в свойствах картинки(текст) пишешь ПриВыводеКартинки(Таб.ТекущийОбъект,Файл) и добавляешь в код:

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


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

Имхо если не нужны всякие повороты-перевороты, то в разы проще выходит.
31. Федор Дударев (dudf) 13.07.12 15:03
А понимает ли Ocvita кириллицу? Просто если верить "На основе библиотеки zint", а с зинтом я уже крупно обломался, то какие еще есть пути?
32. Епрст (Ёпрст) 13.07.12 15:20
(30) :)))))))))

Еще раз : "с прозрачным фоном"
33. Епрст (Ёпрст) 13.07.12 15:22
Если че, активикс в этой работе нужен только для этих целей.
А как вставить картинку с прозрачным фоном статическую куда угодно, я и сам кого хошь научу.
Прикрепленные файлы:
СмотриСам.ert
34. Alexey (zarius) 13.07.12 15:24
(31) кириллицу понимает - проверено на QR Code
Ёпрст; dudf; +2 Ответить
35. Федор Дударев (dudf) 13.07.12 15:31
36. Петр Лунегов (pvlunegov) 21.10.13 15:58
Спасибо, полезно для начала.
Пришлось долго копать о том, как подключать классы 1с++ к 1с.
Просьба автору добавить файл с комментарием, как данный класс подключать.
Мне как новичку пришлось угробить весь день элементарно для того чтобы понять что с этим файлом делать (.ert)/
Сначала думал, что все процедуры надо прописать в глобальном модуле.
Потом попробовал в обработке прописывать, не катило.
Короче весь мозг сломал угробил 3 часа и ничего не понял, как это все работает.
Все нужные плагину, указанные у вас установил, все норм.

Просьба для новичков инструкцию о том, как енто дело подключать к 1с.
37. Alexey (zarius) 21.10.13 16:29
(36) думаю нет смысла в каждой публикации классов 1С++ (а таких не мало на ИС) проводить ликбез для новичков. Вам достаточно ознакомиться с документацией ВК 1С++ чтобы понять как и что подключать...
То, что Вам пришлось "долго копать" - думаю это время окупится многократно, если вы все еще на 7.7 и только начали смотреть в сторону 1С++.
38. Alexey (zarius) 21.10.13 17:40
(36) для начала - очень простая и доступная статья 1С++ - это просто
39. Вячеслав Уразов (YODDHA) 30.04.15 10:58
а в PDF, что бы сохранялась прозрачность, можно как то сделать?
40. Alexey (zarius) 30.04.15 14:26
(39) а в чем проблема? формируете обычную таблицу (mxl), а потом сохраняете ее в PDF, например, через ёксель.
41. Вячеслав Уразов (YODDHA) 31.05.15 23:19
(40) zarius, формирую, и сохраняю, и печать перестает быть прозрачной((((
42. Вячеслав Уразов (YODDHA) 31.05.15 23:52
возможно использую не те длл, пути к ним в статье битые, и наверно то что нашел не совсем удачно, вы не могли бы мне прислать работающие дллки
43. Alexey (zarius) 01.06.15 12:09
(42) Напрямую ёксель в этом классе не используется, но результат работы этого класса, полученный в виде таблицы можно легко этой ВК сохранить как PDF. Документация и сама компонента доступна на сайте автора: Yoksel
44. Alexey (zarius) 01.06.15 12:28
(42) действительно сейчас есть проблемы с некоторыми ссылками на компоненты - напишите каких компонент не хватает - вышлю на почту
45. Игорь Залетов (Zaletov) 28.10.15 13:11
Добрый день. немогу скачать компаненты TableDoc.dll и bmp_1c.ocx.
46. Alexey (zarius) 29.10.15 10:38
(45)
TableDoc.dll - http://www.1cpp.ru/forum/YaBB.pl?num=1177688915/0
bmp_1c.ocx - пришлите почту - вышлю индивидуально
48. Валерий Парфентьев (dekom3) 13.12.15 21:18
Помогите найти bmp_1c.ocx. Пожалуйста.
49. Alexey (zarius) 14.12.15 10:08
(48) bmp_1c.ocx - отправил по почте
50. Валерий Парфентьев (dekom3) 14.12.15 11:58
(49) zarius,

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

Но...


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

....................
...Показать Скрыть


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

Кого забыл подгрузить?
51. Alexey (zarius) 14.12.15 16:04
TableDoc не загрузился - соотв. класс ИзображенияДляТаблицы так же не грузится
Файл TableDoc.dll есть?
52. Валерий Парфентьев (dekom3) 14.12.15 16:27
(51) zarius,

Есть FileVersion : 0, 1, 1, 45
И в каталог базы пихал, и в Bin
ЗагрузитьВнешнююКомпоненту("TableDoc.dll") дает 1
и в модуле формы пробовал и в Глоб.Модуле
Может длл битый. Но больше найти тоже нигде не могу.


53. Alexey (zarius) 14.12.15 18:36
(52) Такое ощущение, что класс не определен в defcls.prm
54. Валерий Парфентьев (dekom3) 14.12.15 19:01
(53) zarius,
Если честно - не понимаю что такое defcls.prm.
А нет случайно маленького рабочего примера?
Ну и с самой длл-кой.

У меня задача следующая:
Есть Документ - Заказ-Наряд. Печатная форма разделена на две части вертикально. Справа 3 табличные части в разными количествами строк (Может быть 15,2,4, а может 3,14,3). А слева рисунок примерно на 25 строк. Хочется как-то оптимальненько реализовать.
55. Alexey (zarius) 15.12.15 11:09
(54) если внимательно почитать заголовок, то в нем можно увидеть "Класс 1С++"
Как подключать классы 1С++ - необходимо смотреть документацию на 1cpp.ru. Если совсем по простому - статья 1С++ - это просто.

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

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

А вообще данные вопросы уже поднимались в обсуждении - (37) (38).
56. Андрей Яковлев (gamletspb77) 18.01.16 16:47
а не поможет кто с компонентой bmp_1c.ocx - нигде живую ссылку найти не могу??
а то без нее походу не заводится

email: gamlet77@gmail.com
57. Alexey (zarius) 18.01.16 20:21
58. Андрей Яковлев (gamletspb77) 19.01.16 09:36
(57) zarius, спасибо.
Однако не работает: bmp картинку выводит (при этом цвета корявит со страшной силою), все что не bmp не выводит вообще - выдает пустой объект. GFLAx вроде подключен (по крайней мере не ругается на него). В чем может быть проблема?


	Таб = СоздатьОбъект("Таблица");
	Таб.ИсходнаяТаблица("Таблица1");
	
	Таб.Вывести();
	Таб.Показать();
	
	ИТаб = СоздатьОбъект("ИзображенияДляТаблицы");
	ИТаб.ПодключитьТаблицу(Таб);
	
	ИТаб.ДобавитьИзображение(1,2,100,100,"D:\Локальные документы\1С77\Test_SQL - копия\Pic\Koala.bmp",2);
	ИТаб.ДобавитьИзображение(2,5,100,100,"D:\Локальные документы\1С77\Test_SQL - копия\Pic\Koala.jpg",2);
...Показать Скрыть
Прикрепленные файлы:
59. Alexey (zarius) 28.01.16 16:21
(58) если не выводит ничего кроме bmp - значит проблемы с GFLAx, ибо именно он перед выводом конвертирует изображение в bmp.
60. Игорь Дутов (OldCadet) 17.04.16 19:43
(57) zarius,

Добрый день.

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

dutoff@rambler.ru
61. Alexey (zarius) 18.04.16 15:51
62. Ilya Arhipov (Maddy18) 06.12.16 19:31
Добрый вечер.

Можно и мне bmp_1c.ocx на info@1carhipov.ru ?
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа