Имя: Пароль:
1C
 
Как дождаться освобождения файла Вордом?
0 RomaH
 
naïve
13.02.20
12:07
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеПолученияФайлаВРабочийКаталог",ЭтаФорма);
    
    РаботаСФайламиКлиент.ПолучитьПрисоединенныйФайл(ОписаниеОповещения,Объект.ФайлПротокола,УникальныйИдентификатор);
    
КонецПроцедуры

&НаКлиенте
Процедура ПослеПолученияФайлаВРабочийКаталог(Результат,ДополнительныеПараметры) Экспорт
    
    ИмяФайла = Результат.ПолноеИмяФайла;
    
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("htm");
    //ИмяВременногоФайла = "T:\qwe1.htm";
    
    ОбъектВорд = Новый COMОбъект("Word.Application");
    ОбъектВорд.Documents.add(ИмяФайла);
    ДокументВорд = ОбъектВорд.Application.Documents(1);
    ДокументВорд.SaveAs2(ИмяВременногоФайла,8);
    ОбъектВорд.Quit();
    
    ЧтениеHTML = Новый ЧтениеHTML;
    
    Ш = ТекущаяДата();
    Пока ТекущаяДата() < Ш + 5 Цикл
        Попытка
            ЧтениеHTML.ОткрытьФайл(ИмяВременногоФайла, "windows-1251");
            Прервать;
        Исключение
            Сообщить(ОписаниеОшибки());//Ш = Ш + 1;
          //Возврат;    
        КонецПопытки;
    КонецЦикла;

получаю порядка 35 ошибок пока не освободится файл

{Документ.ИсследованиеУльтразвуковое.Форма.ФормаДокумента.Форма(241)}: Ошибка при вызове метода контекста (ОткрытьФайл): Ошибка совместного доступа к файлу 'T:\TEMP\v8_C48D_5.htm'

как нормально дождаться сохранения и освобождения?
1 vicof
 
13.02.20
12:13
ОбъектВорд = Неопределено;
2 RomaH
 
naïve
14.02.20
07:06
(1) спасибо
вопрос из этой же темы:

а как сократить время выполнения?
4 строчки занимают 80% времени 3,5 секунды

    ОбъектВорд = Новый COMОбъект("Word.Application");
    ОбъектВорд.Documents.add(ИмяФайла);
    ДокументВорд = ОбъектВорд.Application.Documents(1);
    //ОбъектВорд.Application.Documents(1).SaveAs2(ИмяВременногоФайла,8);//Разницы нет
    ДокументВорд.SaveAs2(ИмяВременногоФайла,8);

частная задача - получить из Ворда HTML документ
общая - показать внутри 1С внутренность прикрепленного файла
3 craxx
 
14.02.20
07:39
(2) Никак. Это не от 1С зависит. ОЛЕ очень тормозной механизм. Написать свой парсер docx, это по сути зазипованный XML
4 dka80
 
14.02.20
09:11
Если возможно, то считывай данные заранее, до того, как их запросит пользователь.