Имя: Пароль:
1C
1C 7.7
v7: Картинка с прозрачным фоном
0 Масянька
 
12.09.12
14:07
День добрый!

Возможно ли, на печатную форму вставить картинку и сделать ее (картинки) фон прозрачным?


Спасибо.
1 Гефест
 
12.09.12
14:10
Вставляй объект word, а в него прозрачную гиф
2 Ёпрст
 
гуру
12.09.12
14:12
(0) можно.
способов много, самый простой, использовать ocx от z1 - activebmp
3 Ёпрст
 
гуру
12.09.12
14:12
4 aka AMIGO
 
12.09.12
14:13
5 Ёпрст
 
гуру
12.09.12
14:14
(4) давно неработоспособный способ
6 aka AMIGO
 
12.09.12
14:16
(5)да, уже увидел :)
7 Ёпрст
 
гуру
12.09.12
14:20
в принципе, можно, как и на харе ру написано слепить (есть там прикол с 2-мя картинками), вот только при просмотре формы в пофигураторе/предприятии - всё будет гут, а вот на предварительном просмотре или печати картинка исказится в размерах или обрежется
8 Масянька
 
12.09.12
14:21
(4) Не получилось - не прозрачный фон....
9 Ёпрст
 
гуру
12.09.12
14:24
(8) ээх..
ща
10 aka AMIGO
 
12.09.12
14:30
11 aka AMIGO
 
12.09.12
14:34
12 Масянька
 
12.09.12
14:34
(3) Скачала, сделала regedit (в BIN), сказал, что зарегистрил. перезапустила конфигуратор, вставляю OLE, а в списке его нет.....
13 Ёпрст
 
гуру
12.09.12
14:42
http://webfile.ru/6116586

вот те 3 версии прозрачных картинок

1. способ копи-паста с ворда
2. внедренный ole-объект типа word/excel
3. ocx от z1

Первый способ искажается при печати и предварительном просмотре, второй способ увеличивает в разы сам моксель (размер файла просто огромен), третий - самое то, но только для bmp картинок.
14 Ёпрст
 
гуру
12.09.12
14:48
+13 и для ocx, нужно еще его "поднастроить" :

Объект.Function     = 1 ;
Объект.DstWidth =   -1;
Объект.DstHeight =  -1;
15 Ёпрст
 
гуру
12.09.12
14:49
чтоб размерчик не уезжал при печати
16 Масянька
 
12.09.12
14:51
(13) Для bmp_1c.ocx - нужно вставлять OLE?
17 Ёпрст
 
гуру
12.09.12
14:55
(16) просто скопируй с моего примера к себе.
18 Ёпрст
 
гуру
12.09.12
14:56
или, открой офис, вставь туда оле -объект bmp_1c.ocx и оттуда скопиряй его в 1с
19 Ёпрст
 
гуру
12.09.12
14:56
есть глюк в 1с - не видит осх, например, barcode.ocx и им падобные
20 Масянька
 
12.09.12
15:37
Не могу сказать как - но получилось. :)))
НО - в пофигураторе фон прозрачный, в предприятии - нет. Но - в модуле ничего не прописывала.
21 Ёпрст
 
гуру
12.09.12
15:39
(20)
кидай сюда поделку
22 Масянька
 
12.09.12
15:39
Может имеет значение: форму (таблица с картинкой) сохраняю в Excel с помощью SpreadSheet. И вот в Excel'е - не прозрачная картинка......
23 Масянька
 
12.09.12
15:40
(21) Как - код?
24 Масянька
 
12.09.12
15:54
Перем Докум;
Перем ИсхТабл;
Перем Адрес;

// параметры подключения - РЕДАКТИРОВАТЬ ТОЛЬКО В КРАЙНЕМ СЛУЧАЕ
Перем SMTPСервер;
Перем SMTPПорт;
Перем Отправитель;

//******************************************************************************
Процедура ПриОткрытии()

   SMTPСервер        = "smtp.gmail.com";
   SMTPПорт        = "465";
   Отправитель    = "compsrvn@gmail.com";
   
   Если ПустоеЗначение(Форма.Параметр) = 0 Тогда
       
       Докум      = Форма.Параметр.Получить("Контекст");
       
       Адрес       = СокрЛП(Докум.Контрагент.ЭлПочта);

       Форма.SMTPСервер.Заголовок(SMTPСервер);
       Форма.SMTPПорт.Заголовок(SMTPПорт);
       Форма.Отправитель.Заголовок(Отправитель);
       Форма.Адрес.Заголовок(Адрес);
       
       Тема    = "От ""Компью-Сервис"": Счет N " + СокрЛП(глНомерНаПечать(Докум)) + " от " + СокрЛП(НРег(Формат(Докум.ДатаДок, "Д ДДММММГГГГ")));
       Текст    = "Это письмо автоматически сгенерировано программой." + РазделительСтрок +
                 "Пожалуйста, не отвечайте на него." + РазделительСтрок +
                 "Для обратной связи используйте адрес электронной почты: compsrv@nvr.ru";
   КонецЕсли;
   
КонецПроцедуры // ПриОткрытии

//******************************************************************************
Процедура Печать(ИсхТабл)

   Перем НачПовт, КонПовт;

   Форма.Отправка.Заголовок("Идет формирование печатной формы счета.");

   ИсхТабл = СоздатьОбъект("Таблица");
   НачПовт = 0; КонПовт = 0;
   
   Расшифровка = СоздатьОбъект("СписокЗначений");
   Расшифровка.ДобавитьЗначение("Мыло", "Мыло");
   ИсхТабл.ОбластьПечати(2);
   
   // Секция ЗаголовокСчета
   ПечФирма = ""; Банк = ""; Счет = ""; БИК = ""; СчетБанка = "";

   Параметры = СоздатьОбъект("СписокЗначений");
   Параметры.ДобавитьЗначение(Докум.БанковскийСчет, "БанковскийСчет");
   глРеквизитыПлательщикаПолучателя(Параметры);
   ПечФирма    = Параметры.Получить("Результат");
   Банк        = Параметры.Получить("СтрокаБанка");
   Счет        = Параметры.Получить("РасчетныйСчет");
   БИК            = Параметры.Получить("БИК");
   СчетБанка    = Параметры.Получить("КоррСчет");
   ИНН            = СокрЛП(Лев(Докум.Фирма.ЮрЛицо.ИНН, Найти(Докум.Фирма.ЮрЛицо.ИНН, "/") - 1));
   
   ИсхТабл.ВывестиСекцию("Шапка");
   НачПовт = НачПовт + ИсхТабл.ВысотаСекции("Шапка");
   
   // секция Заголовок
   ИсхТабл.ВывестиСекцию("ЗаголовокСчета");
   НачПовт = НачПовт + ИсхТабл.ВысотаСекции("ЗаголовокСчета");  
   
   // Секция Поставщик
   Поставщик = "ИНН/КПП " + СокрЛП(Докум.Фирма.ЮрЛицо.ИНН) + РазделительСтрок +
               СокрЛП(Докум.Фирма.ЮрЛицо.ПолнНаименование) + РазделительСтрок +
               глПредставлениеАдреса(Докум.Фирма.ЮрЛицо.ЮрАдрес) + РазделительСтрок + ".";
               
   ИсхТабл.ВывестиСекцию("Поставщик");
   НачПовт = НачПовт + ИсхТабл.ВысотаСекции("Поставщик");
   
   // Секция Покупатель
   Если ПустоеЗначение(Докум.Контрагент) = 0 Тогда
       Покупатель = СокрЛП(Докум.Контрагент.ЮрФизЛицо.ПолнНаименование);
       Если ПустоеЗначение(Докум.Контрагент.ЮрФизЛицо.ИНН) = 0 Тогда
           Покупатель = "ИНН/КПП " + СокрЛП(Докум.Контрагент.ЮрФизЛицо.ИНН) + РазделительСтрок + Покупатель + РазделительСтрок + ".";
       КонецЕсли;
   Иначе
       Покупатель = "";
   КонецЕсли;
   ИсхТабл.ВывестиСекцию("Покупатель");
   НачПовт = НачПовт + ИсхТабл.ВысотаСекции("Покупатель");
   
   // Секция Шапка таблицы
   ИсхТабл.ВывестиСекцию("ШапкаТаблицы");
   КонПовт = НачПовт + ИсхТабл.ВысотаСекции("ШапкаТаблицы");
   ИсхТабл.ПовторятьПриПечатиСтроки(НачПовт + 1, КонПовт);
   
   // выводим табличную часть
   НомСтроки = 0;
   Докум.ВыбратьСтроки();
   
   Пока Докум.ПолучитьСтроку() = 1 Цикл
       НомСтроки = НомСтроки + 1;
       ИсхТабл.ВывестиСекцию("Строка");
   КонецЦикла;
       
   СуммаИтог = Докум.Итог("Сумма");
       
   // секция Итого
   ИсхТабл.ВывестиСекцию("Итого");
   
   // секция ИтогоНДС
   Если Докум.УчитыватьНДС = 1 Тогда
       СуммаНДСИтог = Докум.Итог("СуммаНДС");
       Если Докум.СуммаВклНДС = 0 Тогда
           СуммаИтог = СуммаИтог + СуммаНДСИтог;
       КонецЕсли;
       ИсхТабл.ВывестиСекцию("ИтогоНДС");
   КонецЕсли;
       
   // секция ИтогоНП
   Если Докум.УчитыватьНП = 1 Тогда
       СуммаНПИтог = Докум.Итог("СуммаНП");
       Если Докум.СуммаВклНП = 0 Тогда
           СуммаИтог = СуммаИтог + СуммаНПИтог;
       КонецЕсли;
       ИсхТабл.ВывестиСекцию("ИтогоНП");
   КонецЕсли;
       
   // секция СуммаПрописью
   ИсхТабл.ВывестиСекцию("СуммаПрописью");
   
   // секция Подписи
   РуководительРасшифровка               = Шаблон("[Докум.Фирма.ЮрЛицо.Руководитель.Получить(Докум.ДатаДок)]");
   ГлБухгалтерРасшифровка                = Шаблон("[Докум.Фирма.ЮрЛицо.ГлБухгалтер.Получить(Докум.ДатаДок)]");
   ИсхТабл.ВывестиСекцию("Подписи");

КонецПроцедуры // Печать

//******************************************************************************
Функция Отправить(КаталогДляЗаписи)

   Форма.Отправка.Заголовок("Идет отправка сформированного письма по электронной почте.");

   Письмо = СоздатьОбъект("CDO.Message");
   
   Письмо.To    = Адрес;
   Письмо.From    = Отправитель;
   Письмо.Subject    = Тема;
   Письмо.TextBody = Текст;
   Письмо.TextBodyPart.Charset = "iso-8859-5";

   Письмо.AddAttachment(КаталогДляЗаписи);
   Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing").Value                = 2;
   Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value            = SMTPСервер;
   Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").Value        = 1;
   Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername").Value            = Отправитель;
   Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword").Value            = "polina97";
   Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport").Value        = SMTPПорт;
   Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout").Value    = 60;
   Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendmailaddress").Value        = Адрес;
   Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl").Value            = -1;
   Письмо.Configuration.Fields.Update();
   
   Попытка
       Письмо.Send();
       Форма.Отправка.Заголовок("");
       Предупреждение("Успешно отправлено на электронный адрес: " + Адрес);
   Исключение
       Форма.Отправка.Заголовок("");
       Предупреждение("Не удалось отправить по причине: " + РазделительСтрок + ОписаниеОшибки());
       Возврат 1;
   КонецПопытки;

КонецФункции // Отправить

//******************************************************************************
Функция ПодготовитьФайл(КаталогДляЗаписи)

   Ошибка = 0;

   Форма.Отправка.Заголовок("Идет формирование письма.");

   Попытка
       ЗагрузитьВнешнююКомпоненту("SpreadSheet.dll");
   Исключение
       Предупреждение("Не удалось загрузить компоненту SpreadSheet.dll.");
       Ошибка = 1;
       Возврат Ошибка;
   КонецПопытки;
   
   Йоксель        = СоздатьОбъект("ТабличныйДокумент");
   Конвертер    = СоздатьОбъект("КонвертерExcel");
   
   ВремТабл    = Конвертер.Создать();
   
   Йоксель.ЗагрузитьИзТаблицы(ИсхТабл);
   
   ВремТабл.Листы.Добавить("Счет", Йоксель);
   
   Параметры    =    Йоксель.ПараметрыПечати;
   Параметры.ПолеСверху    = 50;
   Параметры.ПолеСнизу        = 50;    
   Параметры.ПолеСлева        = 50;
   Параметры.ПолеСправа    = 50;
   Параметры.Ориентация    = 1;
   
   ВремТабл.Записать(КаталогДляЗаписи);
   Йоксель.Очистить();
   
   Возврат Ошибка;
   
КонецФункции // ПодготовитьФайл

//******************************************************************************
Процедура ПоКнопкеПечать()  
   
   Печать(ИсхТабл);
   ИмяФайла            = "Счет " + СокрЛП(глНомерНаПечать(Докум)) + " от " + СокрЛП(НРег(Формат(Докум.ДатаДок, "Д ДДММММГГГГ")));
   КаталогДляЗаписи    = Строка(КаталогИБ() + "Счета\" + ИмяФайла + "xls");
   
   Если ПодготовитьФайл(КаталогДляЗаписи) = 0 Тогда
       Отправить(КаталогДляЗаписи);
   КонецЕсли;

   // удаляем сохраненный файл
   Попытка
         //ФС.УдалитьФайл(КаталогДляЗаписи);
   Исключение
         Сообщить(ОписаниеОшибки());
   КонецПопытки;        
   
   Форма.Отправка.Заголовок("");
   Форма.Закрыть();
   
КонецПроцедуры // ПоКнопкеПечать
   
//******************************************************************************
cdoSendPassword              = "http://schemas.microsoft.com/cdo/configuration/sendpassword";      
cdoSendEmailAddress          = "http://schemas.microsoft.com/cdo/configuration/sendemailaddress";  
cdoAutoPromoteBodyParts      = "http://schemas.microsoft.com/cdo/configuration/autopromotebodyparts" ;
cdoFlushBuffersOnWrite       = "http://schemas.microsoft.com/cdo/configuration/flushbufferson;write" ;
cdoHTTPCookies               = "http://schemas.microsoft.com/cdo/configuration/httpcookies" ;
cdoLanguageCode              = "http://schemas.microsoft.com/cdo/configuration/languagecode" ;
cdoNNTPAccountName           = "http://schemas.microsoft.com/cdo/configuration/nntpaccountname" ;
cdoNNTPAuthenticate          = "http://schemas.microsoft.com/cdo/configuration/nntpauthenticate" ;
cdoNNTPConnectionTimeout     = "http://schemas.microsoft.com/cdo/configuration/nntpconnectiontimeout" ;
cdoNNTPServer                = "http://schemas.microsoft.com/cdo/configuration/nntpserver" ;
cdoNNTPServerPickupDirectory = "http://schemas.microsoft.com/cdo/configuration/nntpserverpickupdirectory" ;
cdoNNTPServerPort            = "http://schemas.microsoft.com/cdo/configuration/nntpserverport" ;
cdoNNTPUseSSL                = "http://schemas.microsoft.com/cdo/configuration/nntpusessl" ;
cdoPostEmailAddress          = "http://schemas.microsoft.com/cdo/configuration/postemailaddress" ;
cdoPostPassword              = "http://schemas.microsoft.com/cdo/configuration/postpassword" ;
cdoPostUserName             = "http://schemas.microsoft.com/cdo/configuration/postusername" ;
cdoPostUserReplyEmailAddress = "http://schemas.microsoft.com/cdo/configuration/postuserreplyemailaddress" ;
cdoPostUsingMethod           = "http://schemas.microsoft.com/cdo/configuration/postusing" ;
cdoSaveSentItems             = "http://schemas.microsoft.com/cdo/configuration/savesentitems" ;
cdoSendEmailAddress          = "http://schemas.microsoft.com/cdo/configuration/sendemailaddress" ;
cdoSendPassword              = "http://schemas.microsoft.com/cdo/configuration/sendpassword" ;
cdoSendUserName              = "http://schemas.microsoft.com/cdo/configuration/sendusername" ;
cdoSendUserReplyEmailAddress = "http://schemas.microsoft.com/cdo/configuration/senduserreplyemailaddress" ;
cdoSendUsingMethod           = "http://schemas.microsoft.com/cdo/configuration/sendusing" ;
cdoSMTPAccountName           = "http://schemas.microsoft.com/cdo/configuration/smtpaccountname" ;
cdoSMTPAuthenticate          = "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" ;
cdoSMTPConnectionTimeout     = "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout" ;
cdoSMTPServer                = "http://schemas.microsoft.com/cdo/configuration/smtpserver";
cdoSMTPServerPickupDirectory = "http://schemas.microsoft.com/cdo/configuration/smtpserverpickupdirectory";
cdoSMTPServerPort            = "http://schemas.microsoft.com/cdo/configuration/smtpserverport";
cdoSMTPUseSSL                = "http://schemas.microsoft.com/cdo/configuration/smtpusessl";
cdoURLGetLatestVersion       = "http://schemas.microsoft.com/cdo/configuration/urlgetlatestversion";
cdoURLProxyBypass            = "http://schemas.microsoft.com/cdo/configuration/urlproxybypass";
cdoURLProxyServer            = "http://schemas.microsoft.com/cdo/configuration/urlproxyserver";
cdoUseMessageResponseText    = "http://schemas.microsoft.com/cdo/configuration/usemessageresponsetext";
25 Ёпрст
 
гуру
12.09.12
16:02
(24) не, сам ert-ник
26 Масянька
 
12.09.12
16:04
http://webfile.ru/store?userfile=Счет_EMail.ert&sid=255908691

Который слева - моя картинка, который справа - только что вставила твой.
27 Ёпрст
 
гуру
12.09.12
16:14
(26) ссылка кривая.
28 Масянька
 
12.09.12
16:20
29 Ёпрст
 
гуру
12.09.12
16:30
(28) в свойствах картинки напиши в поле текст
Настроить(ИсхТаб.ТекущийОбъект)


в модуле формы:

Процедура Настроить(Объект,Имя="")
  //Объект.BmpFile = глКаталогПечФорм+"Stamp\"+Имя+счОбласть%5+".bmp";
   Объект.Function     = 1 ;
   Объект.DstWidth =   -1;
   Объект.DstHeight =  -1;
КонецПроцедуры
30 Масянька
 
12.09.12
16:33
Сделала. Ругается:
Настроить(ИсхТаб.ТекущийОбъект)
Переменная не определена (ИсхТаб)
31 Ёпрст
 
гуру
12.09.12
16:34
(30) ИсхТабл.ТекущийОбъект
32 Ёпрст
 
гуру
12.09.12
16:34
у тя переменная ИсхТабл
33 Масянька
 
12.09.12
16:36
Спасибо! Не ругается, но фон не прозрачный. :((((
34 Ёпрст
 
гуру
12.09.12
16:41
(33) ты же в xls конвертишь ?
35 Масянька
 
12.09.12
16:41
(34) Да. Там и не прозрачное.....
36 Ёпрст
 
гуру
12.09.12
16:42
йоксель, какой версии..
Попробовал - у меня всё с прозрачным фоном в экселе на выходе.
37 Масянька
 
12.09.12
16:43
А где версию посмотреть?
38 Ёпрст
 
гуру
12.09.12
16:44
да посмотрел.. не конвертит, только в pdf нормально катит
39 Ёпрст
 
гуру
12.09.12
16:45
ну, тогда можешь через оле объект ворд слепить - там точно будет с прозрачным фоном всегда.
40 Ёпрст
 
гуру
12.09.12
16:45
только сам моксель попухнет в размере и динамически картинку проблематично впихнуть будет
41 Масянька
 
12.09.12
16:46
(38) А как в pdf сконвертить?
42 Ёпрст
 
гуру
12.09.12
16:46
либо отказ от йокселя и тупо Таб.Записать(,2)
43 Ёпрст
 
гуру
12.09.12
16:46
(41) ну, тем же йокселем, он умеет
44 Ёпрст
 
гуру
12.09.12
16:47
типа того:

   Конвертер = СоздатьОбъект ("Йоксель.ГрафическийКонвертер.PDF");
   Конвертер.ВысотаСтраницы = 297*56.7;
   Конвертер.ШиринаСтраницы = 210*56.7;
       Конвертер.КоличествоБитНаПиксел = 24;
       Конвертер.Документ = Документ;//это табличный документ от йокселя
       Конвертер.ПолеСлева = 0;
       Конвертер.ПолеСверху = 0;
       Конвертер.ПолеСправа = 0;
       Конвертер.ПолеСнизу = 0;
       Конвертер.ЗаписатьВФайл (ВыбИмяФайла);
45 Ёпрст
 
гуру
12.09.12
16:48
только там нужно еще с размерами играться..
46 Масянька
 
12.09.12
16:50
Спасибо ОГРОМНОЕ!!!!!!
47 Масянька
 
12.09.12
16:55
Извини, еще не много помучаю.....
Конвертер.Документ = Документ;//это табличный документ от йокселя - чего туда пихать: исхТабл - ругается, загрузить из таблицы - ругается.....
48 Масянька
 
12.09.12
16:59
Все - разобралась......

ГЕНИЙ!!!! СПАСИБО!!!!!!!!!
49 Ёпрст
 
гуру
12.09.12
17:02
Надо ужаста спросить, конвертится ли бмп-ка вообще с прозрачным фоном в йоксель..
И еще, в йокселе и так есть свои картинки с прозрачностью, надо смотреть в этом направлении (Объект Йоксель.Картинка)
50 Масянька
 
12.09.12
17:06
(49) ОГРОМНОЕ СПАСИБО!!!!!!!!!!!!!!!!!
Получилось в pdf - очень красиво. Начальству - нравится!!!!!!!!