Имя: Пароль:
1C
1С v8
ActiveX в управляемых формах
,
0 vSobolev
 
18.10.12
16:14
Еще раз об ActiveX на управляемых формах. По Инету гуляет замечательная тема как выложить на УФ WMP (http://devtrainingforum.v8.1c.ru/forum/getfile.jsp?name=1Cv8_WMP.cf). У меня схожая задача. Надо на управляемую форму выложить таблицу из Excel. Делаю все как в вышеупомянутом примере (естественно, CLSID подменяю, пробую через Excel и через SpadSheet). Но в обоих случаях натыкаюсь на то, что в ActivX объекте должно быть свойство ContentDocument (тип COMОбъект), и для воспроизведения в ActivX какой-либо информации, необходимо работать со свойствами этого COMОбъекта (FileOpen, URL или XMLData). Но у меня в обоих ActivX объектах свойство ContentDocument = НеОпределено.

Вопрос: Как вывести информацию в этих ActivX объектах?

Привожу код как я работаю с формой:

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
 SpeadSheet = "<HTML>
  |<OBJECT id=SpeadSheet classid=CLSID:0002E559-0000-0000-C000-000000000046 width=""100"" height=""100"">
  |</OBJECT>
  |</HTML>";
  Excel = "<HTML>
  |<OBJECT id=Excel classid=CLSID:00024500-0000-0000-C000-000000000046 width=""100"" height=""100"">
  |</OBJECT>
  |</HTML>";
КонецПроцедуры

// Воспроизвести в окне данные

&НаКлиенте
Процедура Команда1(Команда)
 Элемент = Элементы.SpeadSheet.Документ.getElementById("SpeadSheet");
 // Элемент.ContentDocument = НеОпределено
 Элемент = Элементы.Excel.Документ.getElementById("Excel");
 // Элемент.ContentDocument = НеОпределено
КонецПроцедуры

У кого есть опыт работы с этими компонентами? Буду благодарен за любые советы.
1 aleks-id
 
18.10.12
16:16
а зачем эти потуги в процедуре на сервере?
2 vSobolev
 
18.10.12
16:20
МОжно и не на сервере, если есть другие варианты прописать код ПриСоздании
3 aleks-id
 
18.10.12
16:31
(2) откуда classid брал?
4 vSobolev
 
18.10.12
16:32
Из регистра
5 drcrasher
 
18.10.12
16:33
(3) классид лежит в реестре
(0) может что-то с ид-ами напутал?
6 olegves
 
18.10.12
16:33
(0) а не проще на форме УФ поместить табличный документ, а в него грузить из файла mxl?
7 vSobolev
 
18.10.12
16:38
ID - не более, чем идентификатор класса. С CLSID можно было напутать, но я смотрел по инету, что не я один через такие CLSID вызываю классы. Для SpeadSheet даже примеры кода видел. Но не встречал ни одной работающей обработки. Если у кага есть - поделитесь (обработкой или ссылкой на нее).
8 vSobolev
 
18.10.12
16:39
а не проще на форме УФ поместить табличный документ, а в него грузить из файла mxl?
Для меня было бы проще. Можно просто Excel открыть, но хотят этот Excel видеть в окне 1С.
9 drcrasher
 
18.10.12
16:42
(8) ну я кагбэ открывал и ворд и эксель в 1Се как приложения. Но это на толстеньком было.
Ща попробую скрин найти
10 AaNnDdRrEeYy
 
18.10.12
16:47
создай текстовый документ кинь в него этот текст
<HTML>
  <OBJECT id=Excel classid=CLSID:00024500-0000-0000-C000-000000000046 width=""100"" height=""100"">
  </OBJECT>
  </HTML>
, измени расширение на html и открой файл браузером.

у меня нифига не вывилось, это точно у тебя работает без 1С?
11 vSobolev
 
18.10.12
16:57
(10) Пусто. Но еще не один файл Экселем не открыт, может просто пока нечего показывать? Я просто первый раз этим занимаюсь, даже не знаю как сам объект без данных должен выглядеть.
SpeadSheet на форме 1С отображается рамкой с крестиком, но сейчас попробовал этот объект записать в файл и файл открыть IE - тоже пустая страница.
12 drcrasher
 
18.10.12
17:00
(11) а версия офиса какая?
13 vSobolev
 
18.10.12
17:01
2010
14 aleks-id
 
18.10.12
17:31
у меня с 2003 офисом получилось открыть форму с экселем на ней с такой строкой:
"<HTML><OBJECT ID=""Spreadsheet1"" WIDTH=""100%"" HEIGHT=""100%"" CLASSID=""CLSID:0002E541-0000-0000-C000-000000000046""></OBJECT></HTML>";
15 aleks-id
 
18.10.12
17:34
получить правильный класс для своего компа поможет вот эта прога http://download.cnet.com/Microsoft-ActiveX-Control-Pad/3000-2070_4-127950.html
16 drcrasher
 
18.10.12
17:36
http://content.screencast.com/users/drcrasher/folders/Snagit/media/a3bd5f69-6125-4d79-9197-4cbb5c813fd9/03.30.2012-15.30.53.png - типа такого хочешь?

CLSID Excel = 00020812-0000-0000-С000-000000000046
17 vSobolev
 
18.10.12
17:43
Да. КРоме CLSID еще что-то надо менять в моем коде? Как файл открыть компоненой ActiveX?
18 vSobolev
 
18.10.12
17:44
А как ссылку ставить, кому я отвечаю?
19 aleks-id
 
18.10.12
17:51
файл компонентой не открыть. можно втащить туда данные запросом
20 aleks-id
 
18.10.12
17:53
надо бы в базу знаний потом темку.
21 aleks-id
 
18.10.12
17:54
(16) у тебя обычные формы а не управляемые
22 vSobolev
 
18.10.12
17:54
(19)Мне надо из Excel-я данные отобразить в этой компоненте. И как их туда передать? Куда и в каком формате записывать?
23 aleks-id
 
18.10.12
19:07
(22) я попробовал через CSS. но до конца не разобрался как делать
24 vSobolev
 
19.10.12
10:24
(23) За прогу спасибо. Я продолжаю с этим ковыряться, вопрос остается открытым. Если какой-нибудь WEB сайт сохранить в файл, то достаточно в свойство DOCUMENT.URL записать полное имя файла. Но Excel не умеет выгружать данные в формате HTML. Если еще какие соображения появятся - поделись.
25 vSobolev
 
19.10.12
13:44
(16)Можешь выложить обработку, которая на скриншоте?