|
Печатная форма WORD | ☑ | ||
---|---|---|---|---|
0
LeoKeyn
24.01.18
✎
15:29
|
Люди добрые, помогите, пожалуйста решить проблему. Клиент-серверный вариант базы:
&НаКлиенте Процедура ок(Команда) //Попытка создать COM объект Попытка ОбъектВорд = Новый COMОбъект("Word.Application"); Исключение Сообщить("Ошибка при запуске Microsoft Word: " + ОписаниеОшибки(), СтатусСообщения.Внимание); Возврат; КонецПопытки; // Получим шаблон документа из макета объекта на сервере и активируем его ИмяФайлаШаблона = ПолучитьИмяВременногоФайла(".dot"); ПолучитьМакетСервер().Записать(ИмяФайлаШаблона); ОбъектВорд.Documents.Add(ИмяФайлаШаблона); ШаблонВорд = ОбъектВорд.ActiveDocument; Замена = ШаблонВорд.Content.Find; Замена.Execute("<Параметр>", Ложь, Истина, Ложь, Ложь, , Истина, , Ложь, "ПОЛУЧИЛОСЬ!", 2); //После заполнения шаблона сделаем его видимым и активным для пользователя ОбъектВорд.Application.Visible = Истина; ОбъектВорд.Activate(); КонецПроцедуры &НаСервере Функция ПолучитьМакетСервер() ЭтотОбъектФ = РеквизитФормыВЗначение("Объект"); Макет = ЭтотОбъектФ.ПолучитьМакет("Макет"); Возврат Макет; КонецФункции Ошибка: {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(14)}: Ошибка при вызове метода контекста (ПолучитьМакетСервер) ПолучитьМакетСервер().Записать(ИмяФайлаШаблона); по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'ret': форма: Элемент имя: {http://v8.1c.ru/8.2/managed-application/modules}ret по причине: Ошибка отображения типов: Отсутствует отображение для типа 'ОболочкаActiveDocument' Обчитался форумов, говорят так сделать можно, а нельзя почему-то ((( |
|||
1
LeoKeyn
24.01.18
✎
15:31
|
(0) Не бросайте в беде :-)
|
|||
2
MrCoffin
24.01.18
✎
15:35
|
(1) Вы держитесь! Счастья, здоровья...
Попробуй через хранилище. |
|||
3
Вафель
24.01.18
✎
15:35
|
записывай на сервере - на клиенте получай готовый файл
|
|||
4
LeoKeyn
24.01.18
✎
15:36
|
(2) Пробовал
&НаКлиенте Процедура ок(Команда) //Попытка создать COM объект Попытка ОбъектВорд = Новый COMОбъект("Word.Application"); Исключение Сообщить("Ошибка при запуске Microsoft Word: " + ОписаниеОшибки(), СтатусСообщения.Внимание); Возврат; КонецПопытки; // Получим шаблон документа из макета объекта на сервере и активируем его Файл = ПолучитьИзВременногоХранилища(ПолучитьМакетСервер()); Файл.Documents.Add(); ШаблонВорд = Файл.ActiveDocument; Замена = ШаблонВорд.Content.Find; Замена.Execute("<Параметр>", Ложь, Истина, Ложь, Ложь, , Истина, , Ложь, "ПОЛУЧИЛОСЬ!", 2); //После заполнения шаблона сделаем его видимым и активным для пользователя ОбъектВорд.Application.Visible = Истина; ОбъектВорд.Activate(); КонецПроцедуры &НаСервере Функция ПолучитьМакетСервер() Файл = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет"); //двоичный макет АдресФайлаВХранилище = ПоместитьВоВременноеХранилище(Файл); Возврат АдресФайлаВХранилище; КонецФункции |
|||
5
LeoKeyn
24.01.18
✎
15:36
|
(3) И при этом он будет сохраняться на машине сервера?
|
|||
6
Вафель
24.01.18
✎
15:36
|
в хранилище не влезет макет ворд
|
|||
7
Вафель
24.01.18
✎
15:37
|
как передать на клиент
https://gist.github.com/a-sitnikov/979033242fd6f9b833164669b651b5f2 |
|||
8
LeoKeyn
24.01.18
✎
15:39
|
(7) Я очень извиняюсь за свою тугодумость, но нльзя ли показать на моем примере, а то что то додумкать не выходит :-)
|
|||
9
cw014
24.01.18
✎
15:40
|
(8) В твоем случае либо все на сервере делать, либо избавиться от макета
|
|||
10
LeoKeyn
24.01.18
✎
15:41
|
(9) На сервере не вариант (клиент-серверная база, не файловая) открыть то нужно на клиенте. Да и от макета избавлять, в чем смысл всего этого тогда будет :-)
|
|||
11
cw014
24.01.18
✎
15:42
|
(10) Заполнять ручками, не из макета "ОболочкаActiveDocument"
|
|||
12
Вафель
24.01.18
✎
15:42
|
(10) после ПолучитьФайлы() пишешь весь свой код из процедуры
|
|||
13
MrCoffin
24.01.18
✎
15:54
|
(7) Скажи, пожалуйста, что там по ссылке, у меня всё закрыто.
(4) Тогда как костыльный костыль: Сделай бинарные данные, засунь их в хранилище значения, хранилище значения сериализуй в строку ХМЛ, строку передай на клиента и на клиенте всё в обратно порядке. |
|||
14
LeoKeyn
24.01.18
✎
16:03
|
&НаКлиенте
Процедура ок(Команда) Адрес = ФормированиеДоговораПоШаблону(); ВремФайл = КаталогВременныхФайлов() + "Договор.doc"; ЗапуститьПриложение(КаталогВременныхФайлов()+"Договор.doc"); КонецПроцедуры &НаСервере Функция ПолучитьМакетСервер(ИмяМакета) Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет(ИмяМакета); //двоичный макет Возврат Макет; КонецФункции &НаСервере Функция ФормированиеДоговораПоШаблону() ИмяМакета = "Макет"; ВремФайл = ПолучитьИмяВременногоФайла("doc"); АктивныйДокумент = ПолучитьМакетСервер(ИмяМакета); АктивныйДокумент.Записать(ВремФайл); ИмяВременногоФайла = КаталогВременныхФайлов()+"Договор.doc"; Попытка КомОбъект = ПолучитьCOMОбъект(ВремФайл); Исключение Сообщить(ОписаниеОшибки()); Возврат Неопределено; КонецПопытки; Документ = КомОбъект.Application.Documents(1); Замена = Документ.Content.Find; Замена.Execute("<Параметр>", Ложь, Истина, Ложь, Ложь, , Истина, , Ложь, "ПОЛУЧИЛОСЬ!", 2); Документ.SaveAs(ВремФайл); Документ.SaveAs(ИмяВременногоФайла); КомОбъект.Application.Quit(); КомОбъект = Неопределено; Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ВремФайл)); УдалитьФайлы(ВремФайл); Возврат Адрес; КонецФункции Это вроде то что вы говорите, но выходит [Window Title] C:\Users\ITMAN3\AppData\Local\Temp\Договор.doc [Content] Не удается найти "C:\Users\ITMAN3\AppData\Local\Temp\Договор.doc". Проверьте, правильно ли указано имя и повторите попытку. [ОК] Я так понимаю на сервере нужно поставить какуюто библиотеку(офиса там нет и нельзя). Помогите! :-) |
|||
15
LeoKeyn
24.01.18
✎
16:04
|
(14) или я в принципе не туда помещаю?
|
|||
16
LeoKeyn
24.01.18
✎
16:06
|
(15) Я так понимаю, что помещаю во ременной хранилище на сервере, а нужно поместить на машине клиента?
|
|||
17
Вафель
24.01.18
✎
16:07
|
(13) код как передать файл с сервера на клиент
|
|||
18
LeoKeyn
24.01.18
✎
16:13
|
(16) Скоро голова поедет)
|
|||
19
Вафель
24.01.18
✎
16:14
|
(14) где у тебя на клиенте получение фала?
|
|||
20
LeoKeyn
24.01.18
✎
16:15
|
(19) &НаКлиенте
Процедура ок(Команда) Адрес = ФормированиеДоговораПоШаблону(); ВремФайл = КаталогВременныхФайлов() + "Договор.doc"; ЗапуститьПриложение(КаталогВременныхФайлов()+"Договор.doc"); ПолучитьФайл(Адрес, ВремФайл); КонецПроцедуры &НаСервере Функция ПолучитьМакетСервер(ИмяМакета) Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет(ИмяМакета); //двоичный макет Возврат Макет; КонецФункции &НаСервере Функция ФормированиеДоговораПоШаблону() ИмяМакета = "Макет"; ВремФайл = ПолучитьИмяВременногоФайла("doc"); АктивныйДокумент = ПолучитьМакетСервер(ИмяМакета); АктивныйДокумент.Записать(ВремФайл); ИмяВременногоФайла = КаталогВременныхФайлов()+"Договор.doc"; Попытка КомОбъект = ПолучитьCOMОбъект(ВремФайл); Исключение Сообщить(ОписаниеОшибки()); Возврат Неопределено; КонецПопытки; Документ = КомОбъект.Application.Documents(1); Замена = Документ.Content.Find; Замена.Execute("<Параметр>", Ложь, Истина, Ложь, Ложь, , Истина, , Ложь, "ПОЛУЧИЛОСЬ!", 2); Документ.SaveAs(ВремФайл); Документ.SaveAs(ИмяВременногоФайла); КомОбъект.Application.Quit(); КомОбъект = Неопределено; Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ВремФайл)); УдалитьФайлы(ВремФайл); Возврат Адрес; КонецФункции |
|||
21
LeoKeyn
24.01.18
✎
16:16
|
(19) То же самое
|
|||
22
LeoKeyn
24.01.18
✎
16:16
|
(19) Ошибка та же имею ввиду
|
|||
23
LeoKeyn
24.01.18
✎
16:17
|
(19) Извиняюсь не та же :-)
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(9)}: Ошибка при вызове метода контекста (ПолучитьФайл) ПолучитьФайл(Адрес, ВремФайл); по причине: Недопустимое значение параметра (параметр номер '1') |
|||
24
Вафель
24.01.18
✎
16:18
|
(23) попробуй код из (7)
|
|||
25
LeoKeyn
24.01.18
✎
16:19
|
(24) Хорошо, сейчас
|
|||
26
LeoKeyn
24.01.18
✎
16:22
|
(24) Я видимо уже неимоверно туплю, но не могу понять как это написать под себя. Если сможете помочь буду крайне благодарен
|
|||
27
LeoKeyn
24.01.18
✎
16:26
|
(24) Вчитываюсь, но думалка не помогает :-(
|
|||
28
MrCoffin
24.01.18
✎
16:29
|
ХЗ=Новый ХранилищеЗначения(ТвоеДобро, Новый СжатиеДанных(9));
СтрХМЛ=XMLСтрока(ХЗ); СтрХМЛ передаешь на клиента и читаешь чтением хмл, пишешь во временный файл и т.д. и т.п. Скопируй мне сюда код из (7). |
|||
29
LeoKeyn
24.01.18
✎
16:30
|
(28) &НаКлиенте
Процедура Сохранить(Команда) Адрес = СохранитьНаСервере(); Описание = Новый ОписаниеПередаваемогоФайла(Объект.ИмяФайла, Адрес); МассивОписаний = Новый Массив; МассивОписаний.Добавить(Описание); ПолучитьФайлы(МассивОписаний,,,Ложь); Состояние("Файл сохранен"); КонецПроцедуры &НаСервере Функция СохранитьНаСервере() ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml"); //Заполнение файла; ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВременногоФайла); Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор); Возврат Адрес; КонецФункции |
|||
30
LeoKeyn
24.01.18
✎
16:37
|
Странно, почему мой код не работает, здесь утверждают, что все рабочее :-)
http://1c-pro.ru/threads/vneshnjaja-pechatnaja-forma-tonkij-klient-pechat-v-word.53865/ |
|||
31
LeoKeyn
24.01.18
✎
17:09
|
Видать никак мне не решить.
(28) не получается реализовать |
|||
32
LeoKeyn
24.01.18
✎
17:23
|
&НаКлиенте
Процедура ок(Команда) Адрес = ФормированиеДоговораПоШаблону(); Если Адрес = Неопределено Тогда Возврат; КонецЕсли; ВремФайл = КаталогВременныхФайлов() + "Договор.doc"; ПолучитьФайл(Адрес, ВремФайл); ЗапуститьПриложение(КаталогВременныхФайлов()+"Договор.doc"); КонецПроцедуры &НаСервере Функция ПолучитьМакетСервер(ИмяМакета) Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет(ИмяМакета); Возврат Макет; КонецФункции // ПолучитьМакетСервер(ИмяМакета)() &НаСервере Функция ФормированиеДоговораПоШаблону() ИмяМакета = "Макет"; ВремФайл = ПолучитьИмяВременногоФайла("doc"); АктивныйДокумент = ПолучитьМакетСервер(ИмяМакета); АктивныйДокумент.Записать(ВремФайл); ИмяВременногоФайла = КаталогВременныхФайлов()+"Договор.doc"; Попытка КомОбъект = ПолучитьCOMОбъект(ВремФайл); Исключение Сообщить(ОписаниеОшибки()); Возврат Неопределено; КонецПопытки; Документ = КомОбъект.Application.Documents(1); Замена = Документ.Content.Find; Замена.Execute("<Параметр>", Ложь, Истина, Ложь, Ложь, , Истина, , Ложь, "ПОЛУЧИЛОСЬ!", 2); Документ.SaveAs(ВремФайл); Документ.SaveAs(ИмяВременногоФайла); КомОбъект.Application.Quit(); КомОбъект = Неопределено; Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ВремФайл)); УдалитьФайлы(ВремФайл); Возврат Адрес; КонецФункции Сделал вот такое, и казалось бы должно работать, но не тут то было:-) {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(35)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: -2147221164(0x80040154): Класс не зарегистрирован |
|||
33
Вафель
24.01.18
✎
17:23
|
на сервере не стоит ворд
|
|||
34
LeoKeyn
24.01.18
✎
17:24
|
(32) Проделал вот это
1. Администрирование - Службы компонентов – Компьютеры – Мой компьютер – Приложения COM+ - Создать приложение – Создать новое приложение – вводим имя «V82.COMConnector»(переключатель «Серверное приложение») – Указанный пользователь (Администратор) 2. В появившейся ветке V82COMConnector – подветка Компоненты – создание нового компонента – Установка новых компонентов - <каталог 1С>\bin\comcntr.dll 3. Правой кнопкой по ветке V82COMConnector – Свойства – Безопасность – Снял галку «Принудительная проверка доступа для приложений» - Поставил галку «Применить политику программных ограничений» - Уровень ограничений «Неограниченный» Ничему не помогло. Помогите, пожалуйста, разобраться. |
|||
35
LeoKeyn
24.01.18
✎
17:24
|
(33) А без установки ворда этого не проделать?
Лицензии лишней не дают :-) Под оправданием "Он там ненужен" |
|||
36
LeoKeyn
24.01.18
✎
17:26
|
(33) Если поставить ворд этот код будет рабочим? :-)
|
|||
37
LeoKeyn
24.01.18
✎
17:26
|
(36) Офис*
|
|||
38
Вафель
24.01.18
✎
17:26
|
ты так и не отправил файл на клиент )))
|
|||
39
LeoKeyn
24.01.18
✎
17:29
|
(38) Да как? А как же?
ПолучитьФайл(Адрес, ВремФайл); ЗапуститьПриложение(КаталогВременныхФайлов()+"Договор.doc"); |
|||
40
LeoKeyn
24.01.18
✎
17:29
|
(38) Блин, подскажите, пожалуйста )
|
|||
41
LeoKeyn
24.01.18
✎
17:32
|
(38) Передаю во временное хранилище на сервере, потом достаю из него, что не так то?
|
|||
42
rozer76
24.01.18
✎
18:07
|
(0) Конфа на БСП? В БСП все относительно просто и универсально с этим. Если что пиши почту - кину ВПФ договора WORD c контрагентом для УТ 11.4.
|
|||
43
kai17
24.01.18
✎
19:03
|
Используйте макет с типом двоичные данные , не Active document.
|
|||
44
LeoKeyn
25.01.18
✎
09:24
|
А что это значит?:-)
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(35)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: -2147221164(0x80040154): Класс не зарегистрирован Пробовал создавать не .doc а .xml проблем с неустановленным вордом не должно быть |
|||
45
LeoKeyn
25.01.18
✎
09:25
|
(44) проделывал это: (34)
|
|||
46
Segate
25.01.18
✎
09:36
|
(45) Зачем тебе на сервере работать с макетом? Делай все на клиенте, если тебе надо показывать:
Все же элементарно: 1) формируешь структуру параметров для печати на сервере 2) получаешь из двоичных данных макет на клиенте, заполняешь параметры из структуры полученной в п1 3)... 4) PROFIIT!!!!111 |
|||
47
Segate
25.01.18
✎
09:39
|
(41) Судя по ошибке в (14) у вас либо служба сервера запускается от пользователя ITMAN3 либо вы делаете что-то не так, адрес временного файла у вас на сервере будет другой. Думайте, проверяйте
|
|||
48
LeoKeyn
25.01.18
✎
09:45
|
(46) только вот додумкал до этого, попробую реализовать)
|
|||
49
Segate
25.01.18
✎
09:48
|
Там реализация простейшая ) но в любом случае на клиенте ворд нужен будет, чтоб с ним взаимодействовать... но он наверняка на клиенте будет
|
|||
50
LeoKeyn
25.01.18
✎
10:01
|
(49) На клиенте да
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(10)}: Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища) Word.Открыть(ПолучитьИзВременногоХранилища(Адрес)); по причине: Ошибка получения значения из временного хранилища по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'response': форма: Элемент имя: {http://v8.1c.ru/8.2/mngsrv/ws}response по причине: Ошибка отображения типов: Отсутствует отображение для типа 'ОболочкаActiveDocument' Подскажите что делаю не так? |
|||
51
LeoKeyn
25.01.18
✎
10:01
|
+ (50)
&НаКлиенте Процедура ок(Команда) Адрес = ФормированиеДоговораПоШаблону(); Если Адрес = Неопределено Тогда Возврат; КонецЕсли; Word = Новый COMОбъект("Word.Application"); Word.Открыть(ПолучитьИзВременногоХранилища(Адрес)); тр = 1; КонецПроцедуры &НаСервере Функция ПолучитьМакетСервер(ИмяМакета) Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет(ИмяМакета); Возврат Макет; КонецФункции // ПолучитьМакетСервер(ИмяМакета)() &НаСервере Функция ФормированиеДоговораПоШаблону() ИмяМакета = "Макет"; АктивныйДокумент = ПолучитьМакетСервер(ИмяМакета); Адрес = ПоместитьВоВременноеХранилище(АктивныйДокумент); Возврат Адрес; КонецФункции |
|||
52
LeoKeyn
25.01.18
✎
10:02
|
(49) Я чувствую, что идея сработает и очень хочется довести ее до конца) и понять все это наконецто)
|
|||
53
VladZ
25.01.18
✎
10:05
|
Читать мантру... Вдумчиво и нараспев: получаешь из двоичных данных макет.
До полного просветления. |
|||
54
LeoKeyn
25.01.18
✎
10:10
|
(53) не могу понять как с этими двоичными данными быть, можете ссылку скинуть?
|
|||
55
LeoKeyn
25.01.18
✎
10:25
|
Покажите хоть какой нибудь пример по этому поводу, пожалуйста (53)
|
|||
56
Segate
25.01.18
✎
10:33
|
(51) А зачем ты получаешь макет на сервере?
|
|||
57
Segate
25.01.18
✎
10:38
|
Word = Новый COMОбъект("Word.Application");
Макет = ПолучитьМакетСервер(); временныйПуть = КаталогВременныхФайлов(); имяВременногоФайла = временныйПуть +строка(хэш)+ ".docx"; Макет.Записать(имяВременногоФайла); ТекДок = Word.Documents.ADD(имяВременногоФайла); СтруктураПараметров = СформироватьСтруктуруПараметров(); ТекДок.Fields.Update(); Word.ActiveWindow.View.ShowFieldCodes = False; //Word.Visible=Истина; ActDoc=Word.ActiveDocument; ActDoc.ExportAsFixedFormat(КаталогВременныхФайлов()+строка(хэш)+".pdf",17,true,0); |
|||
58
VladZ
25.01.18
✎
10:38
|
(54) В яндексе забанили?
http://catalog.mista.ru/public/407448/ |
|||
59
Segate
25.01.18
✎
10:38
|
Заполнение параметров вырезал.
Получение макета ворд, сохранение его в пдф. |
|||
60
LeoKeyn
25.01.18
✎
10:56
|
(57) Это на клиенте выполнить можно?
|
|||
61
LeoKeyn
25.01.18
✎
11:11
|
(57) {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(18)}: Ошибка при вызове метода контекста (ПолучитьМакетСервер)
Макет = ПолучитьМакетСервер(Макет); по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'ret': форма: Элемент имя: {http://v8.1c.ru/8.2/managed-application/modules}ret по причине: Ошибка отображения типов: Отсутствует отображение для типа 'ОболочкаActiveDocument' |
|||
62
Вафель
25.01.18
✎
11:44
|
(61) нужно двоичные данные передвать
|
|||
63
LeoKeyn
25.01.18
✎
11:48
|
(62) Да как это сделать то, покажите пример, пожалуйста :-)
|
|||
64
LeoKeyn
25.01.18
✎
11:49
|
(62) Я понял, что это нужно передать через двоичные данные, но как и как потом их пихнуть в ворд то?
|
|||
65
Вафель
25.01.18
✎
12:05
|
ты же все равно записываешь в файл
|
|||
66
VladZ
25.01.18
✎
12:08
|
(64) Получаешь из макета, записываешь как временный файл с расширением doc.
|
|||
67
LeoKeyn
25.01.18
✎
13:00
|
(66) офиса нет на сервере и нет возможности поставить
|
|||
68
Вафель
25.01.18
✎
13:03
|
(67) откажись от activedocument
|
|||
69
LeoKeyn
25.01.18
✎
13:15
|
(68) так как сделать по другому? пока единственная идея это на сетевом ресурсе разместить шаблоны и обращаться к ним из кода по пути. Но решение шадкое очень
|
|||
70
LeoKeyn
25.01.18
✎
15:33
|
Единственное решение к которому пришел, к сожалению не вышло сделать по человечески :-(
&НаКлиенте Процедура ок(Команда) Адрес = ФормированиеДоговораПоШаблону(); Если Адрес = Неопределено Тогда Возврат; КонецЕсли; Макет = ПолучитьИзВременногоХранилища(Адрес); //Макет2 = Word = Новый COMОбъект("Word.Application"); //Word.Documents.Open("D:\_DISTRIB\External processing\ZFL-ID31.dot"); Документ = Word.Documents.Add("D:\_DISTRIB\External processing\ZFL-ID31.dot"); Word.Application.Visible = Истина; Word.Activate(); //Документ.Visible = True; тр = 1; КонецПроцедуры |
|||
71
LeoKeyn
25.01.18
✎
15:34
|
+(70) Начало кода не нужно, просто не убрал
|
|||
72
Вафель
25.01.18
✎
16:06
|
(69) Не знаешь как добавить макет с двоичными данными?
|
|||
73
LeoKeyn
25.01.18
✎
16:42
|
(72) Макет добавить как знаю, а вот как его передать на
клиент и преобразовать в word понять никак не могу, а примерами никто делиться не хочет :-) |
|||
74
LeoKeyn
25.01.18
✎
17:24
|
Божечки, я наконец то понял! Если найдется такой же
искатель истины как и я вот ему пример, чтобы не мучался Процедура ок(Команда) ИмяВременногоФайла = ПолучитьИмяВременногоФайла("doc"); Адрес = ФормированиеДоговораПоШаблону(); Если Адрес = Неопределено Тогда Возврат; КонецЕсли; Макет = ПолучитьИзВременногоХранилища(Адрес); Макет.Записать(ИмяВременногоФайла); //Макет2 = Word = Новый COMОбъект("Word.Application"); //Word.Documents.Open("D:\_DISTRIB\External processing\ZFL-ID31.dot"); Документ = Word.Documents.Add(ИмяВременногоФайла); Word.Application.Visible = Истина; Word.Activate(); //Документ.Visible = True; тр = 1; КонецПроцедуры &НаСервере Функция ПолучитьМакетСервер(ИмяМакета) Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет(ИмяМакета); Возврат Макет; КонецФункции // ПолучитьМакетСервер(ИмяМакета)() &НаСервере Функция ФормированиеДоговораПоШаблону() ИмяМакета = "Макет1"; АктивныйДокумент = ПолучитьМакетСервер(ИмяМакета); УИД = Новый УникальныйИдентификатор(); Адрес = ПоместитьВоВременноеХранилище(АктивныйДокумент, УИД); Возврат Адрес; КонецФункции |
|||
75
Вафель
25.01.18
✎
17:25
|
уид нужно от формы брать, а не произвольный
|
|||
76
Вафель
25.01.18
✎
17:25
|
Я же тебе писал
Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |