Имя: Пароль:
1C
1С v8
УФ ЗапуститьПриложение() - НачатьЗапускПриложения()
0 Грызлик
 
17.08.15
19:08
Добрый вечер! Нужно открыть любой файл из 1С. Кто может дать пример НачатьЗапускПриложения()? НЕ могу понять как использовать. Раньше было все просто - ЗапуститьПриложение("С:\\1.txt") и запускался блокнот. Включать режим совместимости синхронных вызовов не хочу.

А теперь. Пишу:

ЛюбойФайл = "С:\\1.txt";
Оповещение = Новый ОписаниеОповещения("ЗапускПриложения", ЭтотОбъект);
НачатьЗапускПриложения(Оповещение,,, Истина);

А что дальше?
Что нужно писать в процедуре ЗапускПриложения(), какие параметры?
1 Грызлик
 
17.08.15
19:25
Все. Допер.

ЛюбойФайл = "С:\\1.txt";
Оповещение = Новый ОписаниеОповещения("ЗапускПриложения", ЭтотОбъект);
НачатьЗапускПриложения(Оповещение, ЛюбойФайл,, Истина);

&НаКлиенте
Процедура ЗапускПриложения(КодВозврата, ДополнительныйПараметр) Экспорт

КонецПроцедуры
2 Грызлик
 
17.08.15
19:26
Не понятно, как только дождаться завершения приложения? Нужно что бы после закрытия файла, он удалился.
3 sFAQer
 
18.08.15
02:09
НачатьЗапускПриложения (BeginRunningApplication)
Синтаксис:

НачатьЗапускПриложения(<ОписаниеОповещения>, <СтрокаКоманды>, <ТекущийКаталог>, <ДождатьсяЗавершения>)
Параметры:

<ОписаниеОповещения> (обязательный)

Тип: ОписаниеОповещения.
Содержит описание процедуры, которая будет вызвана после завершения со следующими параметрами:
<КодВозврата> - код возврата, тип Число или Неопределено, если соответствующий входной параметр ДождатьсяЗавершения не указан;
<ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения.
<СтрокаКоманды> (обязательный)

Тип: Строка.
Командная строка для запуска приложения либо имя файла, ассоциированного с некоторым приложением.
<ТекущийКаталог> (необязательный)

Тип: Строка.
Задает текущий каталог запускаемого приложения.
В режиме веб-клиента игнорируется.
<ДождатьсяЗавершения> (необязательный)

Тип: Булево.
Истина - дожидаться завершения запущенного приложения перед продолжением работы.
Значение по умолчанию: Ложь.
Описание:

Начинает запуск внешнего приложения либо открытие файла с использованием ассоциированного с ним приложения.

Доступность:

Тонкий клиент, веб-клиент, толстый клиент.

<ДождатьсяЗавершения> - тот самый параметр
4 Грызлик
 
18.08.15
07:04
(3) Да, я в коде выставляю его в "Истину", он 4 и в коде выше, видно, что я его выставил в "Истину", Но! Что получается по факту?.. Открываю свой файл, а программа отрабатывает дальше. Что я ожидаю получить. Открыть файл, программа пусть дальше работает. Или останавливается. Но важно, после отработки внешнего приложения, удалить файл.
5 Провинциальный 1сник
 
18.08.15
07:19
(4)  А с чего вы взяли, что запуск приложения, ассоциированного с файлом, должен как-то отрабатывать своё закрытие? В этом случае родителем процесса будет проводник виндовс, а не 1с. Запускайте явно notepad.exe, передавая ему в качестве параметра ваш текстовый файл, и тогда при закрытии нотепада есть шанс, что 1с получит сообщение о том, что дочернее приложение закрылось.
6 Провинциальный 1сник
 
18.08.15
07:29
(5) Хотя, это я ошибся. Попробовал сейчас - всё работает корректно и без явного указания экзешника. Вы просто неправильно понимаете смысл процедуры в описании оповещения - она вызывается не при запуске, а при завершении. Вот там и удаляйте свой файл.
7 Грызлик
 
18.08.15
07:30
(5) А для чего тогда служит параметр, дождать завершения? Вроде раньше, процедура ЗапуститьПриложение(), отрабатывала как я описал выше (вспомнил пример, где я запускал mp3 файл.). На самом деле я запуская картинку, могу запустить пдф файл.
8 Грызлик
 
18.08.15
07:33
(6)Как я понимаю смысл - открылась картинка. я ее посмотрел. Закрыл. и вот тут я должен удалить файл. Но отчкаостанова в отладчике не отрабатывает. У меня как "НачатьЗапускПриложения(ЗапускПриложения, ЛюбойФайл,, Истина);", отработала. Файл открылся и тут же переходим в  Процедура ЗапускПриложения(КодВозврата, ДополнительныйПараметр) Экспорт
9 Провинциальный 1сник
 
18.08.15
07:34
(8) Нет, вы ошибаетесь. Процедура вызывается при закрытии.
10 Грызлик
 
18.08.15
07:35
(8) После закрытия файла, я в эту процедуру не попадаю. У меня в вызываемой процедуре

&НаКлиенте
Процедура ЗапускПриложения(КодВозврата, ДополнительныйПараметр) Экспорт

КонецПроцедуры

Первый параметр пустой. Может по этому я не попадаю в нее после закрытия файла?
11 Грызлик
 
18.08.15
07:36
(10) я просто не пойму, почему он пустой. В синтаксисе написано что он равен 1 или неопределенно, если не задан, но у меня он заданю
12 Провинциальный 1сник
 
18.08.15
07:37
(10) Я буквально дословно проверил на вашем примере - всё попадает.
13 Провинциальный 1сник
 
18.08.15
07:40
На самом деле, это способ помочь финансированию  здравоохранению за счет автомобилистов. Каждая справка - платная, очевидно, что объем работы врача при приеме такого "пациента" на порядок меньше чем с реальным больным, а денежки идут.
14 1Сергей
 
18.08.15
07:42
(13) хватит по интернетам лазить, работать давай. Понаоткрывают кучу окон, а потом парятся :)
15 Грызлик
 
18.08.15
07:45
(12) Вот пример
&НаКлиенте
Процедура Просмотр_СканКопияДоверенность(Команда)
    
    ПутьДоКартинки = "D:\test.png";
    Оповещение = Новый ОписаниеОповещения("ЗапускПриложения", ЭтотОбъект);
    НачатьЗапускПриложения(Оповещение, ПутьДоКартинки,, Истина);
    
КонецПроцедуры

&НаКлиенте
Процедура ЗапускПриложения(КодВозврата, ДополнительныйПараметр) Экспорт

    а = 1;
    
КонецПроцедуры

Первый параметр у меня пустой. Не могу понять почему. И как только открылся файл. Я разу попал в нижнюю процедуру. Может платформа баговая
16 Провинциальный 1сник
 
18.08.15
08:00
(15) 8.3.6.2152 - всё работает.
17 Грызлик
 
18.08.15
08:37
(16) :D это уже смешно. У меня все тоже. У меня в коде нет ошибок? :D. Может параметры конфигурации не такие? Я в чистой базе это пишу.
18 Провинциальный 1сник
 
18.08.15
11:25
(17) Аналогично. В чистой базе все работает.
Сделайте в процедуре ЗапускПриложения Сообщить("Закрылось").
19 Грызлик
 
18.08.15
13:39
(18) Сделал как вы описали. Картинка не успев открыться, выдалось сообщение "Закрылось".

Я так понимаю, если первый параметр истина, то будет отрабатывать после закрытия. Но у меня первый параметр = неопределено.