Имя: Пароль:
1C
1С v8
Word программно открывается только в режиме чтения
, ,
0 Cancell
 
06.12.16
11:41
Всем привет, такая проблема, есть внешняя обработка с макетом active document, при открытии сохраняю макет в файл:
    Если ЗначениеЗаполнено(Каталог) Тогда
        Попытка
            ПолноеИмяФайла = Каталог;
            Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ПФ_MXL_МОЛ");
            Макет.Записать(ПолноеИмяФайла);
            Возврат ПолноеИмяФайла;                      
        Исключение
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = "Не удалось записать файл в каталог пользователя "+ОписаниеОшибки();      
            Сообщение.Сообщить();
            Возврат Неопределено;          
        КонецПопытки;            
    Иначе
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Не указан каталог. Сохранение файла невозможно";
        Сообщение.Сообщить();
        Возврат Неопределено;
    КонецЕсли;    

Потом открываю файл -
    Попытка
        ШаблонВорд = Word.Documents.Open(МакетВорд);//ПолучитьCOMОбъект(МакетВорд);
    Исключение
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = ОписаниеОшибки();
        Сообщение.Сообщить();
        Возврат;
    КонецПопытки;  

После этого пытаюсь делать замену в документе через закладки -
    КомОбъект.Bookmarks("ДатаДоговора").Select();
    КомОбъект.Application.Selection.TypeText(Формат(ПолучитьДату(СсылкаДок),"ДЛФ=DD"));    

И выдается ошибка -
Произошла исключительная ситуация (Microsoft Word): Метод или свойство недоступны, поскольку эту команду нельзя использовать в режиме чтения.

В настройках ворда поотключал все режимы безопасности, но даже если я не программно открываю этот файл то он все равно открывается в режиме только чтение.
1 MUXACb
 
06.12.16
11:54
(0) А не повис-ли у вас, абсолютно случайно, лишний процесс Word, связанный с открываемым файлом?
2 Cancell
 
06.12.16
11:55
(1) те что виснут обрубаю потом и пробую заново.
3 Cancell
 
06.12.16
11:56
(1) файл каждый раз создается новый, так что блокировок не должно быть
4 Масянька
 
06.12.16
11:56
(2) Уверен? Что Word не висит?
Права на док-т, папку...?
5 Масянька
 
06.12.16
11:56
(3) Проверь все-таки.
6 Cancell
 
06.12.16
11:58
(5) файл задается так -
    //задаем имя сохранения на диск
    КлючУникальности = Новый УникальныйИдентификатор;    
    Каталог = "C:\Temp\"+КлючУникальности+"MOL.doc";
каждый раз файл точно новый.
(2) права на папку у сервера 1С есть

тут на самом деле даже когда я просто открываю этот файл он уже в режиме только чтения, после того как его из макета сохраняю
7 Cancell
 
06.12.16
11:59
(2) - > (4)
8 Vladal
 
06.12.16
12:01
(6) А в самом макете он у тебя случаем не read-only? Или макет - это табличный документ?
9 Cancell
 
06.12.16
12:01
(8) макет это active document, грузил из ворда вроде не было таких ограничений...
10 Масянька
 
06.12.16
12:02
(7) Три кнопки нажми и посмотри не висит Word.
(8) Вариант...
11 Vladal
 
06.12.16
12:03
(9) Сохрани его еще раз, проверь атрибуты, загрузи.
12 Vladal
 
06.12.16
12:03
(9) Стопни отладчиком место открытия Word, посмотри файл - он у тебя с каким атрибутами?
13 devpro100
 
06.12.16
12:07
(3) Это ведь не важно - новый, не новый. Если после записи макета активный документ остался открытым, то при новом открытии конечно он будет только в режиме чтения. Попробуй записать, вырубить все процессы в менеджере задач и открыть. Если пройдет, значит процесс таки блокирует твой документ и не дает с ним работать.
14 Cancell
 
06.12.16
14:33
(11) перезагрузил документ в макет - без изменений

(12) отладчиком увидел:ШаблонВорд.ReadOnly = Истина ...
как с этим быть?
15 Cancell
 
06.12.16
14:34
это после ШаблонВорд = Word.Documents.Open(МакетВорд);
16 Cancell
 
06.12.16
15:32
(15) проверил на всяк, но не прокатило =\
{Форма.Форма.Форма(56)}: Поле объекта недоступно для записи (ReadOnly)
    ШаблонВорд.ReadOnly = Ложь;
17 Масянька
 
06.12.16
15:43
(16) У тя сам макет ReadOnly. Сохрани макет нормально.
18 Cancell
 
06.12.16
17:23
(17) в итоге нашел рабочую обработку через двоичные данные.
Всем спасибо!
Программист всегда исправляет последнюю ошибку.