|
Вывод в защищенный шаблон WORD | ☑ | ||
---|---|---|---|---|
0
espanol
13.09.12
✎
14:42
|
Есть шаблон вордовского документа, где в ограничении редактирования включена защита под паролем. Для редактирования доступна лишь некоторые поля. В них я помещаю свои переменные.
Делаю вывод в переменные этого документа данные из 1С. В предприятии запускаю этот шаблон, а там переменные не заполняются. Если выключить защиту, то заполняются. Подскажите пожалуйста, как сделать так чтобы переменные в защищенном режиме заполнялись, может как-то в коде надо прописать пароль...? Примерный код, но еще не оптимизированный: Путь = Константы.ПутьКШаблонам.Получить() + "\" + "АКТ ФИЗ ЛИЦО 2011.doc"; ВремФайл = ПолучитьИмяВременногоФайла("doc"); КомОбъект = ПолучитьCOMОбъект(Путь); Документ = КомОбъект.Application.Documents(1); СтруктураПараметров = ПолучитьДополнительныеПараметры(); СтруктураПараметровОбъекта = СтруктураПараметровОбъекта(); Попытка Документ.Content.Find.Execute("1cPFIO", Ложь,Истина,Ложь,,,Истина,,Ложь, СтруктураПараметровОбъекта.Наименование); Исключение КонецПопытки; Попытка Документ.Content.Find.Execute("1cPFIO", Ложь,Истина,Ложь,,,Истина,,Ложь, СтруктураПараметровОбъекта.Наименование); Исключение КонецПопытки; Попытка Документ.Content.Find.Execute("1cPFIOsokr", Ложь,Истина,Ложь,,,Истина,,Ложь, СокрФИОКонтрагента); Исключение КонецПопытки; Попытка Документ.Content.Find.Execute("1cDogovorNumber", Ложь,Истина,Ложь,,,Истина,,Ложь, СокрЛП(СтруктураПараметровОбъекта.НомерЗаказа)); Исключение КонецПопытки; Попытка Документ.Content.Find.Execute("1cDogovorData", Ложь,Истина,Ложь,,,Истина,,Ложь, Формат(Дата, "ДЛФ=DD")); Исключение КонецПопытки; Попытка Документ.Content.Find.Execute("1cDogovorNumber", Ложь,Истина,Ложь,,,Истина,,Ложь, СокрЛП(СтруктураПараметровОбъекта.НомерЗаказа)); Исключение КонецПопытки; Попытка Документ.Content.Find.Execute("1cDogovorData", Ложь,Истина,Ложь,,,Истина,,Ложь, Формат(СтруктураПараметровОбъекта.ДоговорВзаиморасчетов.ДатаНачала, "ДЛФ=DD")); Исключение КонецПопытки; Документ.SaveAs(ВремФайл); КомОбъект.Application.Quit(); КомОбъект = Неопределено; Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ВремФайл)); УдалитьФайлы(ВремФайл); ВремФайл = ПолучитьИмяВременногоФайла("doc"); Данные = ПолучитьИзВременногоХранилища(Адрес); Данные.Записать(ВремФайл); УстановитьРасширениеРаботыСФайлами(); ПодключитьРасширениеРаботыСФайлами(); ЗапуститьПриложение(ВремФайл); |
|||
1
espanol
13.09.12
✎
14:57
|
Никто не знает, жаль...
|
|||
2
dk
13.09.12
✎
15:07
|
сделай именно шаблоном в ворде (*.dot или *.dotx), а не документом (*.doc)
|
|||
3
dk
13.09.12
✎
15:08
|
тогда с защитой париться не надо
|
|||
4
dk
13.09.12
✎
15:09
|
либо при открытии пароль пиши
|
|||
5
espanol
13.09.12
✎
15:12
|
(4) пример есть? ))
|
|||
6
espanol
13.09.12
✎
15:15
|
Смысл защиты в том чтобы юзвери не могли изменять текст документа, а те поля в которые выводятся данные из 1С они могут менять.
|
|||
7
dk
13.09.12
✎
15:19
|
пример открытия по паролю?
|
|||
8
espanol
13.09.12
✎
15:21
|
(2) чем оно должно помочь то?
|
|||
9
espanol
13.09.12
✎
15:21
|
(7) жаль, но данный способ не подходит...
|
|||
10
dk
13.09.12
✎
15:24
|
с шаблоном
|
|||
11
espanol
13.09.12
✎
15:37
|
(10) ну это не то что я имел ввиду ((
|
|||
12
espanol
13.09.12
✎
15:39
|
Речь идет не о запоролености документа ВОРД, а о его защищенности.
Это можно найти здесь в офисе 2010: Рецензирование -> Ограничить редактирование -> Включить защиту -> Указываем пароль |
|||
13
dk
13.09.12
✎
15:39
|
(11) тебе в 1С пароль светить не хочется или в чем проблема?
|
|||
14
espanol
13.09.12
✎
15:40
|
Можно даже сделать задачу так: шаблон будет не запоролен, вызываем его в 1С, заполняем данными, а когда он открывается у юзверя, он должен стать защищенным перед открытием.
|
|||
15
dk
13.09.12
✎
15:48
|
Док.Protect("123", 0, 3, 0, -1)
|
|||
16
espanol
13.09.12
✎
16:00
|
(15) ругается:
{Документ.РеализацияАвтомобилей.Форма.ФормаДокумента.Форма(753)}: Ошибка при вызове метода контекста (Protect) Документ.Protect("123", 0, 3, 0, -1); по причине: Произошла исключительная ситуация (Microsoft Word): Значение параметра лежит вне допустимого диапазона |
|||
17
dk
13.09.12
✎
16:04
|
справки по методу protect у меня почему-то нет (
пробуй экспериментируй Док.Protect("123") --- Док.Protect("123", 0, 3) --- ... версия ворда какая? |
|||
18
espanol
13.09.12
✎
16:13
|
(17) версия 2010, посмотрел по ВБА хелпу:
ub Protect(Type As WdProtectionType, [NoReset], [Password], [UseIRM], [EnforceStyleLock]) сделал так: Документ.Protect(3, , "123"); заработало! Спасибо! Но вот чето поля с переменными пока не могу менять, наверно надо поэксперементировать... |
|||
19
espanol
13.09.12
✎
16:20
|
(17) Эти поля куда я заношу переменные, называются закладки, не в курсе как сделать что бы только они были для редактирования? )
|
|||
20
espanol
13.09.12
✎
16:37
|
по идее то что мне нужно, делается так: Документ.Protect(2,,"123");
НО в этом случае он мне не заполняем поля данными из 1С... Как сделать чтоб заполняло? |
|||
21
espanol
13.09.12
✎
16:57
|
Жаль что никто не умеет так делать...
|
|||
22
acsent
13.09.12
✎
16:59
|
закладки это не поля. типа селект, реплэйс
|
|||
23
espanol
13.09.12
✎
17:00
|
(22) всмысле?
|
|||
24
dk
13.09.12
✎
19:26
|
дык сначала запалняй а только потом protect делай
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |