0. LeoKeyn 21 14.03.18 11:31 Сейчас в теме

Обработка печатной формы WORD клиент-сервер УФ

Это моя первая статья на данном портале, но попытаюсь изложить все понятно и подробно.
Долгое время у меня заняло создание такой вот внешней обработки. Есть очень много примеров, как сделать подобное на неуправляемых формах (2.0) и очень мало информации касательно управляемых(3.0), по крайней мере я многого найти не смог в доступе. Создание подобное обработки выглядит вполне несложно, если производить все действия на сервере, как это было с 2.0, но в нашем случае необходимо инициализировать открытие документа на клиенте, чему сильно мешает отсутствие возможности передать макет Active Document с сервера на клиент.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. maks_20 17 14.03.18 13:05 Сейчас в теме
Все бы ничего, но за 10 стартмани врядли кто-то захочет скачать, тем более, что почти весь код приведен в статье)))
5. LeoKeyn 21 14.03.18 16:30 Сейчас в теме
(1) Цену я поменял, а на счет все написано в статье, почти да. Но я долговато мучился с этой темой и надеюсь люди, которым статья поможет скачают ее в благодарность :-)
27. akey 3 01.02.19 15:59 Сейчас в теме
Добрый день
Есть некорректный код, см. ниже:

 

//Было
           ДокументЗаполнение = Документ.Application.Documents(1);
            // Получить объект, который будем использовать для поиска и замены.
            Для Каждого ЭлементДанных Из Данные Цикл
            Замена = Документ.Content.Find;//поиск параметра в макете
            Замена.Execute("{" + ЭлементДанных.Ключ + "}", Ложь, Истина, Ложь, Ложь, , Истина, , Ложь, ЭлементДанных.Значение, 2);//замена параметра на значение
            КонецЦикла;


//Стало
          ДокументЗаполнение = Документ.Application.Documents(1);
            // Получить объект, который будем использовать для поиска и замены.
            Для Каждого ЭлементДанных Из Данные Цикл
            Замена = ДокументЗаполнение.Content.Find;//поиск параметра в макете
            Замена.Execute("{" + ЭлементДанных.Ключ + "}", Ложь, Истина, Ложь, Ложь, , Истина, , Ложь, ЭлементДанных.Значение, 2);//замена параметра на значение
            КонецЦикла;

Показать
2. Lem0n 117 14.03.18 13:08 Сейчас в теме
"Это моя первая статья на данном портале..." и я решил начать свою деятельность здесь попыткой грабежа местных
klaus38; CyberCerber; +2 Ответить
3. khabibullin.tu 79 14.03.18 13:43 Сейчас в теме
Автор может быть вы не в курсе, но 10 стартмани это 400 рублей, просить за это 400 рублей ? WTF ?
4. LeoKeyn 21 14.03.18 14:45 Сейчас в теме
(3) Извините, не правильно понял курс) подправлю)
6. sytkosa 14.03.18 17:10 Сейчас в теме
(0) Автор как понимаю БСП никогда не смотрел с примерами. Полностью перепечатка оттуда. И самое интересное что в последних релизах БСП 1С отказалась от Word.Application теперь все делается через xml и сборку docx.
triviumfan; wonderboy; +2 Ответить
7. triviumfan 9 14.03.18 22:27 Сейчас в теме
(6)
отказалась от Word.Application, теперь все делается через xml и сборку docx
Спасибо, надо ознакомиться
8. LeoKeyn 21 15.03.18 13:55 Сейчас в теме
(6) Если честно не смотрел, но видимо воссоздал их путь:-) Что тоже считаю не плохо :-)
9. mcgoblin 1 09.07.18 16:26 Сейчас в теме
(8)Должен ли на сервере стоять ms office?
10. LeoKeyn 21 09.07.18 16:59 Сейчас в теме
(9) С этим вопросом изначально и была проблема. Нет не должен, только на машине клиента.
11. mcgoblin 1 09.07.18 20:20 Сейчас в теме
(10)А вот если , допустим на серваке поставят ворд, то будет ли у клиента формироваться документ. Не сталкивались с таким?
13. LeoKeyn 21 10.07.18 08:51 Сейчас в теме
(11) В случае, если у клиента не установлен microsoft office обработка работать не будет, так как документ формируется на стороне клиента при помощи com объекта. Если вам необходимо формировать документ именно на сервере, то можно процедуру
&НаКлиенте
Процедура СобратьМакет(СсылкаНаОбъект)

Перенести на сервер:
&НаСервере
Процедура СобратьМакет(СсылкаНаОбъект) 

и заменить
 Word.Application.Visible = Истина;//установить видимость документа
            Word.Activate();//открыть документ пользователю

НА
Документ.SaveAs(ПутьКСетевойПапкеКоторуюВидитНужныйКлиент)
16. mcgoblin 1 10.07.18 13:51 Сейчас в теме
(13) я имел ввиду, если не по вашей обработке, работать, а через стандартное создание всего на сервере, но в прочем это чисто теоретический вопрос. так как вчера по Вашему образу состряпал свой говнокод, собрал параметры и вставил их в макет и сегодня все заработало.
17. LeoKeyn 21 10.07.18 13:52 Сейчас в теме
18. LeoKeyn 21 10.07.18 13:53 Сейчас в теме
(16) Создать то все можно, а вот с передачей через сервер-клиент много проблем
12. mcgoblin 1 09.07.18 20:31 Сейчас в теме
(10) Выходит ошибка
{ВнешняяОбработка.БН_ПриказОПриёме.Форма.Форма.Форма(21)}: Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища): Ошибка получения значения из временного хранилища: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.: Ошибка преобразования данных XDTO:
Запись значения свойства 'response':
форма: Элемент
имя: {http://v8.1c.ru/8.2/mngsrv/ws}response: Ошибка отображения типов:
Отсутствует отображение для типа 'ОболочкаActiveDocument'
14. LeoKeyn 21 10.07.18 08:53 Сейчас в теме
(12) Какого вида у вас макет? Должен быть не ActiveDocument, а двоичный макет
Первое, что нам необходимо сделать, это создать макет нашего документа(Изображение 3). Макет понадобится двоичный, т.к. обычный мы на клиент не передадим(как я и говорил ранее). Заменяем нужные данные в шаблоне, перед загрузкой в обработку, "Параметрами", у меня они выглядят так, на примере: "{Сотрудник}"(кавычки не учитывать), после чего загружаем в Обработку-Макет.
Прикрепленные файлы:
mcgoblin; +1 Ответить
15. mcgoblin 1 10.07.18 13:48 Сейчас в теме
(14)Да, ошибку я вчера заметил, забыл отписаться)
19. an1c 19.12.18 18:10 Сейчас в теме
(10) У меня ругается Процедура или функция с указанным именем не определена (ПолучитьИмяВременногоФайла)
Макет двоичный
Как решить проблему?
20. LeoKeyn 21 19.12.18 19:49 Сейчас в теме
(19) Значит вы не добавили процедуру или функцию "ПолучитьИмяВременногоФайла" =)
21. an1c 20.12.18 16:27 Сейчас в теме
(20) Вместо того, что бы смеяться помогли бы...
22. LeoKeyn 21 21.12.18 11:41 Сейчас в теме
(21) Я и не смеюсь, ошибка означает именно это. В статье все очень подробно описано, и если скопировать код, то обработка уже будет готова
24. an1c 26.12.18 09:19 Сейчас в теме
(22) Я и скопировала весь код... И пробовала разные директивы и &НаКлиенте и &НаСервере. Данная ошибка выходит именно когда на &НаКлиенте, что мне предпочтительнее. Буду разбираться дальше. Если у кого есть решение или варианты пишите.
25. LeoKeyn 21 27.12.18 09:39 Сейчас в теме
(24) Получите имя файла на сервере, и передайте на клиент
23. LeoKeyn 21 21.12.18 11:43 Сейчас в теме
(21) возможно вы выбрали не правильную директиву компиляции (&НаКлиенте, &НаСервере)
26. Elvina 6 25.01.19 23:30 Сейчас в теме
Подскажите, пожалуйста, как вставить картинку в ворд (программно), к каждому договору прикрепляется карта, если точек несколько, то несколько картинок с картой. Картинка находится в каталоге на диске.
В АктивДокумент получается картинку вставить, а вот как это сделать в случае с двоичными данными нигде не могу найти...
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Москва
зарплата от 120 000 руб. до 130 000 руб.
Полный день

Программист 1С
Санкт-Петербург
Полный день

Бизнес-аналитик 1С ERP
Пермь
зарплата от 80 000 руб.
Полный день

Программист 1С
Нижний Новгород
зарплата до 120 000 руб.
Полный день

Программист 1С УТ 11
Омск
зарплата от 60 000 руб.
Полный день