Имя: Пароль:
1C
1С v8
Дождаться завершения Эксель.
,
0 shamannk
 
10.10.13
12:27
Запускаю эксель жду завершения и патом обрабатываю (тут все ок). Но если до запуска был запущен какойто файлик экселя то ожидание не происходит. Как тогда?
ЗапуститьПриложение(Путь,,Истина);
1 wms
 
10.10.13
12:39
убей в диспетчере процесс
2 smaharbA
 
10.10.13
12:41
Запустить новый экземпляр
3 smaharbA
 
10.10.13
12:41
в путь не одинокий файл вписать
4 shamannk
 
10.10.13
13:12
(3) Не понял. Можно подробней?
5 smaharbA
 
10.10.13
13:15
(4) у Вас "Путь" - это файл екселя ?
6 shamannk
 
10.10.13
13:17
(5)Да.
7 KishMish
 
10.10.13
13:22
возмможно потому, что открывается в этом же экземпляре Екселя.
попробуй перед ЗапуститьПриложение(ТвойфФайл)
Запускать Ексель, новый экземпляр, тогда файл будет открываться в нем. Возможно проканает.
8 Зойч
 
10.10.13
13:24
Ехсель = Новый комобъект;
Ексель.Открыть(*)
9 smaharbA
 
10.10.13
13:43
(6) он будет открываться в запущенном уже, вариант

Процедура КнопкаВыполнитьНажатие(Кнопка)
    // Вставить содержимое обработчика.
    Перем КодВозврата;
    Режим = РежимДиалогаВыбораФайла.Открытие;
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
    ДиалогОткрытияФайла.Фильтр="Екскль (*.xls*)|*.xls*";
    ДиалогОткрытияФайла.МножественныйВыбор=Ложь;
    Если Не ДиалогОткрытияФайла.Выбрать() Тогда
        Возврат;
    КонецЕсли;
    Файл=ДиалогОткрытияФайла.ВыбранныеФайлы.Получить(0);
    ЗапуститьПриложение("cmd /v:on /q /c ""set z= &&for /f ""tokens=2* delims=="" %x in ('assoc .xls') do (for /f ""tokens=2* delims=="" %y in ('ftype %x') do set z=%y)&&set z=!z:""%1""=!&&set z=!z:%1=!&&!z! """+Файл+"""""",,Истина,КодВозврата);
    Сообщить(КодВозврата);
КонецПроцедуры
10 shamannk
 
10.10.13
13:59
(9) Спасибо!!! Работает)
11 smaharbA
 
10.10.13
14:08
я бы, Немного поправил


Файл=Новый Файл(ДиалогОткрытияФайла.ВыбранныеФайлы.Получить(0));
ЗапуститьПриложение("cmd /v:on /q /c ""set z= &&for /f ""tokens=2* delims=="" %x in ('assoc "+Файл.Расширение+"') do (for /f ""tokens=2* delims=="" %y in ('ftype %x') do set z=%y)&&set z=!z:""%1""=!&&set z=!z:%1=!&&!z! """+Файл.ПолноеИмя+"""""",,Истина,КодВозврата);
12 shamannk
 
10.10.13
14:27
А в фоне cmd запустить?
13 shamannk
 
11.10.13
11:17
Нашлись юзверы, закрывают окно cmd и ломается. Может как то можно в фоне запустить?
14 smaharbA
 
11.10.13
12:43
можно, но cmd был специально выбран, что бы без ком объектов
15 smaharbA
 
11.10.13
12:55
Процедура КнопкаВыполнитьНажатие(Кнопка)
    // Вставить содержимое обработчика.
    Перем КодВозврата;
    Режим = РежимДиалогаВыбораФайла.Открытие;
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
    ДиалогОткрытияФайла.Фильтр="Екскль (*.xls*)|*.xls*";
    ДиалогОткрытияФайла.МножественныйВыбор=Ложь;
    Если Не ДиалогОткрытияФайла.Выбрать() Тогда
        Возврат;
    КонецЕсли;
    Файл=Новый Файл(ДиалогОткрытияФайла.ВыбранныеФайлы.Получить(0));
    Временный=Новый Файл(ПолучитьИмяВременногоФайла(".txt"));
    Текст=Новый ТекстовыйДокумент;
    ЗапуститьПриложение("cmd /v:on /q /c ""set z= &&for /f ""tokens=2* delims=="" %x in ('assoc "+Файл.Расширение+"') do (for /f ""tokens=2* delims=="" %y in ('ftype %x') do set z=%y)&&set z=!z:""%1""=!&&set z=!z:%1=!&&echo !z!>"""+Временный.ПолноеИмя+"""""",,Истина,КодВозврата);
    Если Не КодВозврата=0 Тогда
        СтрокаЗапуска=Файл.ПолноеИмя;
    Иначе
        Текст.Прочитать(Временный.ПолноеИмя);
        СтрокаЗапуска=Текст.ПолучитьСтроку(1)+" """+Файл.ПолноеИмя+"""";
        Текст.Очистить();
    КонецЕсли;
    Сообщить(СтрокаЗапуска);
    Если Временный.Существует() Тогда
        УдалитьФайлы(Временный.ПолноеИмя);
    КонецЕсли;
    ЗапуститьПриложение(СтрокаЗапуска,,Истина,КодВозврата);
    Сообщить(КодВозврата);
КонецПроцедуры
16 shamannk
 
11.10.13
13:39
WshShell = Новый COMОбъект("WScript.Shell");
        RetCode = WshShell.Run("cmd /v:on /q /c ""set z= &&for /f ""tokens=2* delims=="" %x in ('assoc .xls') do (for /f ""tokens=2* delims=="" %y in ('ftype %x') do set z=%y)&&set z=!z:""%1""=!&&set z=!z:%1=!&&!z! """+Путь+"""""", 0, Истина);
Сделал так.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс