|
Помогите с макетом Active Document. Управляемое приложение. | ☑ | ||
---|---|---|---|---|
0
Erschalaim
27.02.12
✎
15:27
|
У документа есть макет с типом "ActiveDocument" и выбраным шаблоном ворда.
В файловом варианте с директивой &НаСервере это выполяется без проблем: Договор = ПолучитьМакет("МакетДоговора"); //ОболочкаActiveDocument // Получить объект из макета. MSWord = Договор.Получить(); //получаем OLE объект ворда В клиент серверном варианте выскакивает ошибка: {Документ.ДоговорБронирования.МодульМенеджера(8)}: Ошибка при вызове метода контекста (Получить) Все выполняется на одной и той же машине. |
|||
1
aleks-id
27.02.12
✎
15:28
|
получай олю на клиенте
|
|||
2
Erschalaim
27.02.12
✎
15:29
|
(1) а как это сделать?
|
|||
3
DexterMorgan
27.02.12
✎
15:30
|
(0) Я делал по-другому, создай файлик вордовский и загрузи как двоичные данные в макет. На сервере получаешь и передаешь на клиент. А на клиенте уже через ком объект открываешь и заполняешь как тебе нужно, мб на сервере ворда нет... да и не должно бытть
|
|||
4
aleks-id
27.02.12
✎
15:31
|
(2) как-как. на сервере получай макет и возвращай макет на клиента. а на клиенте уже открывай
|
|||
5
Erschalaim
27.02.12
✎
15:32
|
(3) стоит ворд на сервере
|
|||
6
DexterMorgan
27.02.12
✎
15:33
|
(5) Ну млин, кароче как хочешь, я тебе просто вариант предложил, не люблю я Active Document
|
|||
7
aleks-id
27.02.12
✎
15:34
|
&НаСервере
Функция ПолучитьМакетВорд(ИмяМакета) возврат ПолучитьМакет(ИмяМакета); конецФункции &НаКлиенте Процедура ТрамПаПам() МакетДоговора MSWord = ПолучитьМакетВорд("МакетДоговора"); Оля = MSWord.Получить(); ... |
|||
8
DexterMorgan
27.02.12
✎
15:36
|
(7) без временного хранилища не взлетит
|
|||
9
Erschalaim
27.02.12
✎
15:37
|
(7) а где узнать какие объекты можно получать с сервера на клиент?
|
|||
10
aleks-id
27.02.12
✎
15:37
|
в СП
|
|||
11
DexterMorgan
27.02.12
✎
15:38
|
(9) в СП =)
|
|||
12
Erschalaim
27.02.12
✎
15:38
|
(7) это не взлетит на тонком
|
|||
13
Erschalaim
27.02.12
✎
15:39
|
(11) буду благодарен, если путь в СП подскажете
|
|||
14
Erschalaim
27.02.12
✎
15:39
|
Непонятен сам нюанс, почему (0) не выполняется в клиент-серверном вариантЕ?
|
|||
15
Erschalaim
27.02.12
✎
15:41
|
Обалдеть, такой крутой форум, мне его друзья рекомендовали и никто не может подсказать как решить проблему (0)?
|
|||
16
aleks-id
27.02.12
✎
15:43
|
потому что в файловом варианте у тебя запускается как бы сервер на твоей локальной машине, а в клиент серверном сервак может стоять непойми где. и как ты на нем откроешь ворд?
|
|||
17
DexterMorgan
27.02.12
✎
15:43
|
&НаКлиенте
Процедура ЗаказПоставщикуExcel(Команда) //Путь для сохраняемого файла: ПутьКФайлуНаКлиенте = "С:\ЗаказПоставщику.xls"; //Получаем форму оплаты и сам экселевский файл: СтруктураДанных = ПолучитьСтруктуруДанных(); ФайлЕксель = ПолучитьИзВременногоХранилища(АдресФайлаЕксельВХранилище); ФайлЕксель.Записать(ПутьКФайлуНаКлиенте); Попытка Эксель = Новый COMОбъект("Excel.Application"); Исключение Сообщить("Установи Excel.."); Возврат; КонецПопытки; Книга = Эксель.WorkBooks.Open(ПутьКФайлуНаКлиенте); Лист = Книга.WorkSheets(1); БЛА БЛА БЛА Книга.Save(); Эксель.Application.Quit(); Эксель = Неопределено; ЗапуститьПриложение(ПутьКФайлуНаКлиенте); КонецПроцедуры &НаСервере Функция ПолучитьСтруктуруДанных() ФайлЕксель = ПолучитьМакет("КакойТамУТебяМакет"); АдресФайлаЕксельВХранилище = ПоместитьВоВременноеХранилище(ФайлЕксель); Возврат АдресФайлаЕксельВХранилище; КонецФункции |
|||
18
DexterMorgan
27.02.12
✎
15:44
|
Кароче это для двоичных данных
|
|||
19
DexterMorgan
27.02.12
✎
15:45
|
Млин у меня там больше было написано - я там еще кой че возвращал и не удалил, ну принцип такой =)
|
|||
20
Erschalaim
27.02.12
✎
15:50
|
(19) спасибо большое
|
|||
21
DexterMorgan
27.02.12
✎
15:58
|
(20)Кстати с активным документом - хз: макет с сервера на клиент не передашь, комобъект тоже не передашь, я вижу вариант только сам файл передавать и вообще это правильнее, имхо
|
|||
22
Erschalaim
27.02.12
✎
16:17
|
(19) Не работает, макет не может существовать на клиенте
{Документ.ДоговорБронирования.Команда.ДоговорБронирования.МодульКоманды(9)}: Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища) ФайлВорд = ПолучитьИзВременногоХранилища(АдресФайлаВХранилище); по причине: Ошибка получения значение из временного хранилища по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'response': форма: Элемент имя: {http://v8.1c.ru/8.2/mngsrv/ws}response по причине: Ошибка отображения типов: Отсутствует отображение для типа 'ОболочкаActiveDocument' &НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) ИмяФайлаНаКлиенте = ПолучитьИмяВременногоФайла(); АдресФайлаВХранилище = ПолучитьСсылкуНаВременноеХранилище(); ФайлВорд = ПолучитьИзВременногоХранилища(АдресФайлаВХранилище); КонецПроцедуры &НаСервере Функция ПолучитьСсылкуНаВременноеХранилище() Возврат Документы.ДоговорБронирования.ПоместитьМакетВоВременноеХранилище(); КонецФункции &НаСервере Функция ПоместитьМакетВоВременноеХранилище() Экспорт ФайлWord = ПолучитьМакет("ДоговорБронирования"); АдресФайлаWordВХранилище = ПоместитьВоВременноеХранилище(ФайлWord); Возврат АдресФайлаWordВХранилище; КонецФункции Получается, что макет по-любому надо сохранять в файл ворда на сервере, а потом уже передавать. Проблема не решена. Помогите! |
|||
23
DexterMorgan
27.02.12
✎
16:19
|
(22) Я ПИШУ ТЕБЕ ЭТО ДЛЯ ДВОИЧНЫХ ДАННЫХ
|
|||
24
DexterMorgan
27.02.12
✎
16:20
|
(22) Макет - двоичные данные - туда грузишь файл ворд
|
|||
25
Erschalaim
27.02.12
✎
16:22
|
(24) по-другому никак нельзя? Чтобы макет был ActiveDocument Ворда?
|
|||
26
DexterMorgan
27.02.12
✎
16:25
|
(25) Скажи зачем? Честно, сам не знаю, написал в (21)
|
|||
27
DexterMorgan
27.02.12
✎
16:26
|
(25) Какая разница какой у тебя макет - сам файл ворда в виде двоичных данных или твой ActiveDocument ??
|
|||
28
Erschalaim
27.02.12
✎
16:30
|
(27)
1.ActiveDocument я могу интерактивно редактировать и сохранять конфу. 2.Двоичные данные надо выгружать из макета и помнить их принадлежность. 3. Вопрос принципа, что за ерунда в (0), которая описана в документации, но не работает? |
|||
29
Erschalaim
27.02.12
✎
16:41
|
(27) Реализовал через двоичные данные, раз по другому нельзя :( Спасибо за помощь.
|
|||
30
DexterMorgan
27.02.12
✎
16:44
|
(28) Ну да лишнее действие по выгрузке..все. по 2. давай названия ясные. Ну вообще есть идея получать на сервере макет твоего любимого активного документа сохранять во временный файл и этот файл передавать на клиент. Другое дело что тут куча проблем начиная с неустановленого ворда, ограничение прав: на комобъект, на запись файла и т.д.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |