|   |   | 
| 
 | Печатная форма 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 | 
        Я же тебе писал
 Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор); | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |