Клиент-сервер, ОболочкаActiveDocument, метод Получить() не срабатывает. Помогите пожалуйста...

1. Yulka_Pentagramma 20.01.20 09:15 Сейчас в теме
В файловом варианте работает код:

	ТабДокумент  = Новый ТабличныйДокумент;
	

		АктивныйДокумент = Документы.ИсполнительноеПроизводство.ПолучитьМакет("МакетЗаявленийНаВозбуждениеУККом");			
		

	
	
	КомОбъект = АктивныйДокумент.Получить();
Показать


В серверном - метод Получить() не отрабатывает... в мануале написано что работает только в толстом клиенте. Чем можно заменить? РеквизитФормыВЗначение - пробовала, не помогает....
Найденные решения
5. Nikifforoff96 21.01.20 10:01 Сейчас в теме
Делаю так:

&НаСервере
Функция ПолучитьМакетКонвертаНаСервере()
	
	мОбъект = РеквизитФормыВЗначение("Объект");
	Макет = мОбъект.ПолучитьМакет("ПочтовыйКонвертКонтрагенту");
	
	//записываем макет
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("doc");
	Макет.Записать(ИмяВременногоФайла);
	
	ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВременногоФайла);
	АдресФайла = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтаФорма.УникальныйИдентификатор);	
		
	УдалитьФайлы(ИмяВременногоФайла);
	
	Возврат АдресФайла;
		
КонецФункции

&НаКлиенте
Процедура ПечатьКонвертаКонтрагенту(Команда)
	
	АдресФайла = ПолучитьМакетКонвертаНаСервере();
	
	//получим файл с сервера на клиент
	Оповещение = Новый ОписаниеОповещения("ПослеПолученияФайловЗавершение", ЭтотОбъект);
	
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("doc");
	ПолучаемыеФайлы = Новый Массив;
	ПолучаемыеФайлы.Добавить(Новый ОписаниеПередаваемогоФайла(ИмяВременногоФайла, АдресФайла));

	НачатьПолучениеФайлов(Оповещение, ПолучаемыеФайлы,, Ложь);
		
КонецПроцедуры

&НаКлиенте
Процедура ПослеПолученияФайловЗавершение(ПолученныеФайлы, ДополнительныеПараметры) Экспорт
	
	СтруктураКонверта = ПолучитьСтруктуруКонвертаНаСервере();
	
	Если СтруктураКонверта = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Описание = ПолученныеФайлы[0];
	
	Word = Новый COMОбъект("Word.Application");	
	WordApplication = Word.Application; 
	WordApplication.Documents.Add(Описание.Имя); 
	
	СсылкаМакет = WordApplication.Documents(1);
    СсылкаМакет.Activate();
	
	СсылкаМакет.Bookmarks("Кому").Select();
	СсылкаМакет.Application.Selection.TypeText(СтруктураКонверта.АдресКому);
	
	СсылкаМакет.Bookmarks("Куда").Select();
	СсылкаМакет.Application.Selection.TypeText(СтруктураКонверта.АдресКуда);
	
	Word.Application.Visible = Истина;
	Word.Application.WindowState = 2;
	Word.Application.WindowState = 1;
	Word.Activate();
	
	УдалитьФайлы(Описание.Имя);
	
КонецПроцедуры
Показать
doggernaut; Bolnov; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. Nikifforoff96 21.01.20 10:01 Сейчас в теме
Делаю так:

&НаСервере
Функция ПолучитьМакетКонвертаНаСервере()
	
	мОбъект = РеквизитФормыВЗначение("Объект");
	Макет = мОбъект.ПолучитьМакет("ПочтовыйКонвертКонтрагенту");
	
	//записываем макет
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("doc");
	Макет.Записать(ИмяВременногоФайла);
	
	ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВременногоФайла);
	АдресФайла = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтаФорма.УникальныйИдентификатор);	
		
	УдалитьФайлы(ИмяВременногоФайла);
	
	Возврат АдресФайла;
		
КонецФункции

&НаКлиенте
Процедура ПечатьКонвертаКонтрагенту(Команда)
	
	АдресФайла = ПолучитьМакетКонвертаНаСервере();
	
	//получим файл с сервера на клиент
	Оповещение = Новый ОписаниеОповещения("ПослеПолученияФайловЗавершение", ЭтотОбъект);
	
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("doc");
	ПолучаемыеФайлы = Новый Массив;
	ПолучаемыеФайлы.Добавить(Новый ОписаниеПередаваемогоФайла(ИмяВременногоФайла, АдресФайла));

	НачатьПолучениеФайлов(Оповещение, ПолучаемыеФайлы,, Ложь);
		
КонецПроцедуры

&НаКлиенте
Процедура ПослеПолученияФайловЗавершение(ПолученныеФайлы, ДополнительныеПараметры) Экспорт
	
	СтруктураКонверта = ПолучитьСтруктуруКонвертаНаСервере();
	
	Если СтруктураКонверта = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Описание = ПолученныеФайлы[0];
	
	Word = Новый COMОбъект("Word.Application");	
	WordApplication = Word.Application; 
	WordApplication.Documents.Add(Описание.Имя); 
	
	СсылкаМакет = WordApplication.Documents(1);
    СсылкаМакет.Activate();
	
	СсылкаМакет.Bookmarks("Кому").Select();
	СсылкаМакет.Application.Selection.TypeText(СтруктураКонверта.АдресКому);
	
	СсылкаМакет.Bookmarks("Куда").Select();
	СсылкаМакет.Application.Selection.TypeText(СтруктураКонверта.АдресКуда);
	
	Word.Application.Visible = Истина;
	Word.Application.WindowState = 2;
	Word.Application.WindowState = 1;
	Word.Activate();
	
	УдалитьФайлы(Описание.Имя);
	
КонецПроцедуры
Показать
doggernaut; Bolnov; +2 Ответить
6. Nikifforoff96 21.01.20 10:04 Сейчас в теме
(5) Платформа 8.3.16, работает в клиент-серверном режиме
7. Yulka_Pentagramma 21.01.20 10:05 Сейчас в теме
(5)
Макет = мОбъект.ПолучитьМакет("ПочтовыйКонвертКонтрагенту");


У меня вот на этой строке уже вылетает в ошибку...
8. RustamZz 21.01.20 10:07 Сейчас в теме
(7) Ну он же свой код прислал, а не для вас пишет новый. Творчески подойдите к процессу переносу кода к себе.
10. Yulka_Pentagramma 21.01.20 10:08 Сейчас в теме
(8) Я очень творчески подхожу... чесслово.... но как бы я не получала макет, как только я к нему дописываю Получить() - вылетает
11. RustamZz 21.01.20 10:10 Сейчас в теме
(10) Ну так хоть краем глаза дайте взглянуть на то, что у вас получается.
15. Yulka_Pentagramma 21.01.20 10:20 Сейчас в теме
(11) код написан сверху) а на выходе получается очень креативное окошко без опознавательных знаков
Прикрепленные файлы:
12. Nikifforoff96 21.01.20 10:11 Сейчас в теме
(7) Так значит у вас ошибка метода ПолучитьМакет(), а вы писали про ошибку метода Получить().
Метод ПолучитьМакет() для типа макета "Active document" на сервере прекрасно работает на 8.3.16 (на линуксовом сервере).
13. Yulka_Pentagramma 21.01.20 10:14 Сейчас в теме
(12) На линуксовом сервере он мне вообще выдал:
Прикрепленные файлы:
17. Nikifforoff96 21.01.20 10:27 Сейчас в теме
(13) Чтобы код, который я привел, работал нужно, чтобы на клиенте был установлен ворд (не аналог ворда, а настоящий ворд).
14. Yulka_Pentagramma 21.01.20 10:15 Сейчас в теме
(12) отладчиком иду - после ПолучитьМакет в переменной лежит ОболочкаActiveDocument. Как и положено...
16. Nikifforoff96 21.01.20 10:26 Сейчас в теме
(14) Так зачем вы пытаетесь Получить() макет. Разве у меня такое в коде написано?
После метода ПолучитьМакет("Имя макета"); я записываю полученный макет в файл, а не применяю метод Получить()
18. Yulka_Pentagramma 21.01.20 10:28 Сейчас в теме
(16) ой... точно.... спасибо большое, попробую.... отпишусь....
20. Yulka_Pentagramma 22.01.20 18:43 Сейчас в теме
(16) код работает, только выдает кракозябры... не знаете почему?
21. Nikifforoff96 23.01.20 09:45 Сейчас в теме
(20) Возможно, что-то с кодировкой текста.
Покажите скрин кракозябры и код заполнения вордовского документа (макета)
22. Yulka_Pentagramma 23.01.20 11:23 Сейчас в теме
(21) Переделала код... теперь не из макетов файл Ворд забираю, а из папки на сервере, заполняю на клиенте и показываю. Нормально переносит через двоичные данные, и с кодировкой всё нормально стало.

Огромное спасибо за помощь!
23. Nikifforoff96 23.01.20 11:42 Сейчас в теме
(22) Ага
Будьте потом внимательны при переносе базы на другой сервер или изменении пути к шаблону вордовскому.
24. Yulka_Pentagramma 23.01.20 11:48 Сейчас в теме
(23) да, спсасибо, постаралось предусмотреть... храню всё в 1 папке, и пути относительные прописываю.

А не подскажете что нафеячить чтобы ещё и в веб-интерфейсе доки формировались? сейчас она мне пишет что использование модальных окон в этой версии запрещено, хотя в настройках конфы у меня Режим использования модальности - использовать. Или это сам браузер не может модальное окно открыть?
25. Nikifforoff96 23.01.20 12:19 Сейчас в теме
(24) Почитайте тут https://forum.mista.ru/topic.php?id=834825
И вообще погуглите. Сам подсказать не могу
26. Greek26rusa 2 19.02.20 15:30 Сейчас в теме
(25)Добрый день не подскажешь как можно было бы добавить данные в тч ворда уже все голову сломал находил вариант только где есть получить
27. Greek26rusa 2 19.02.20 15:31 Сейчас в теме
(5)Как добавить данные в тч?
28. Greek26rusa 2 19.02.20 16:05 Сейчас в теме
(5)
СсылкаМакет.Application.Selection.TypeText


Что за АдресКому и АдресКуда?
29. Nikifforoff96 19.02.20 16:21 Сейчас в теме
(28) Это "Закладки" в вордовском макете. Подставляю на место этих закладок нужные реквизиты (в данном случае почтовый адрес контрагента)
30. doggernaut 24.06.22 15:20 Сейчас в теме
&НаКлиенте
Процедура РаботаСШаблономВорд()

Попытка
ПутьКФайлуНаКлиенте = "Путь к вашему файлу Ворд.docx";

ОбъектВорд = Новый COMОбъект("Word.Application");
ОбъектВорд.Documents.Add(ПутьКФайлуНаКлиенте);
ШаблонВорд = ОбъектВорд.ActiveDocument;

Для каждого ЗакладкаВорд Из ШаблонВорд.Bookmarks Цикл
Сообщить(ЗакладкаВорд.Name);
КонецЦикла;

ШаблонВорд.Bookmarks("НаименованиеВашейЗакладкиВВорде").Select();
ШаблонВорд.Application.Selection.TypeText("ТекстВставки");

ОбъектВорд.Application.Visible = Истина;
ОбъектВорд.Activate();

Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;


КонецПроцедуры
(1)
2. VmvLer 20.01.20 09:32 Сейчас в теме
ActiveX выпилили из платформы уже, наверное у вас древняя раз работает через пень колоду.
заменить обычным макетом
3. Yulka_Pentagramma 20.01.20 09:34 Сейчас в теме
у меня 8.3.16.1063... выпилили... Чем тогда заменить? мне надо вордовский док напечатать, обычный макет не подойдет
4. Airlord 20.01.20 11:47 Сейчас в теме
Добрый день!
1. Если конфигурация на УФ (типа "Такси") почему бы вам не закинуть во внешние формы и не использовать ее там? А саму обработку формы уже сможете и макет использовать и все остальное.
2. Или закинуть в шаблоны (опять же для УФ типа "Такси") и вызывать для заполнения оттуда?
9. Yulka_Pentagramma 21.01.20 10:07 Сейчас в теме
(4) Шаблоны? Это вообще что? Объект такой есть в платформе?
19. Airlord 21.01.20 11:02 Сейчас в теме
Добрый день! В качестве примера по конфигурациям на УФ приведу БП 3.0. раздел "Администрироване" - > "Печатные формы, отчеты и обработки" -> "Макеты печатных форм".Там вставляем шаблон печатной формы
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот