Вводная получить список дисков (хотим знать не X:, а точный адрес каталога в сети)
К сожалению не смог получить какое либо отличное поведение ни от ЗапуститьПриложение ни от КомандаСистемы
получаем мелькающее окно или переключение фокуса c 1C (как по Alt+Tab).
Но работает, в тч на клиенте. Каталог указывать в методах не обязательно, осталось от попыток заставить все работать.
Начиная с 8.3.18 можно использовать (хотя эффект окна терминала никуда не пропадает) ЗапуститьПриложениеАсинх
ИмяФайла = ПолучитьИмяВременногоФайла("txt");
КомандаСтрокой = СтрШаблон("cmd /c net use >> %1", ИмяФайла);
ЗапуститьПриложение(КомандаСтрокой,,Истина);
//КомандаСтрокой = СтрШаблон("net use >> %1", ИмяФайла);
//КомандаСистемы(КомандаСтрокой,КаталогВременныхФайлов());
ТекстовыйДокумент = Новый ТекстовыйДокумент();
ТекстовыйДокумент.Прочитать(ИмяФайла, "cp866");
УдалитьФайлы(ИмяФайла);
Диски = Новый Структура();
Для НомерСтроки = 1 По ТекстовыйДокумент.КоличествоСтрок() Цикл
ТекущаяСтрока = ТекстовыйДокумент.ПолучитьСтроку(НомерСтроки);
Позиция = СтрНайти(ТекущаяСтрока, ":");
Если Позиция < 1 Тогда
Продолжить;
КонецЕсли;
Псевдоним = СокрЛП(Лев(ТекущаяСтрока, Позиция - 1));
Если ПустаяСтрока(Псевдоним) Тогда
Продолжить;
КонецЕсли;
Путь = СокрЛП(Сред(ТекущаяСтрока, Позиция + 1));
Если ПустаяСтрока(Путь) Тогда
Продолжить;
КонецЕсли;
Позиция = СтрНайти(Путь, " ");
Если Позиция Тогда
Путь = Лев(Путь, Позиция -1);
КонецЕсли;
Диски.Вставить(Псевдоним, Путь);
КонецЦикла;
ОчиститьСообщения();
Сообщить("Список подключенных дисков:");
Для Каждого Элемент Из Диски Цикл
Сообщить(Элемент.Ключ + ": " + Элемент.Значение);
КонецЦикла;
//////////////////////////////////////////////////////
// Асинхронный вариант через НачатьЗапускПриложения
&НаКлиенте
Процедура Команда1(Команда)
ИмяФайла = ПолучитьИмяВременногоФайла("txt");
КомандаСтрокой = СтрШаблон("cmd /c net use >> %1", ИмяФайла);
// КодВозврата 2, Файл не заполнен (не создан).
НачатьЗапускПриложения(Новый ОписаниеОповещения("Команда1Завершение", ЭтаФорма, ИмяФайла),
КомандаСтрокой,
КаталогВременныхФайлов(),
Истина);
КонецПроцедуры
&НаКлиенте
Процедура Команда1Завершение(Результат, ИмяФайла) Экспорт
ТекстовыйДокумент = Новый ТекстовыйДокумент();
ТекстовыйДокумент.Прочитать(ИмяФайла, "cp866");
УдалитьФайлы(ИмяФайла);
Диски = Новый Структура();
Для НомерСтроки = 1 По ТекстовыйДокумент.КоличествоСтрок() Цикл
ТекущаяСтрока = ТекстовыйДокумент.ПолучитьСтроку(НомерСтроки);
Позиция = СтрНайти(ТекущаяСтрока, ":");
Если Позиция < 1 Тогда
Продолжить;
КонецЕсли;
Псевдоним = СокрЛП(Лев(ТекущаяСтрока, Позиция - 1));
Если ПустаяСтрока(Псевдоним) Тогда
Продолжить;
КонецЕсли;
Путь = СокрЛП(Сред(ТекущаяСтрока, Позиция + 1));
Если ПустаяСтрока(Путь) Тогда
Продолжить;
КонецЕсли;
Позиция = СтрНайти(Путь, " ");
Если Позиция Тогда
Путь = Лев(Путь, Позиция -1);
КонецЕсли;
Диски.Вставить(Псевдоним, Путь);
КонецЦикла;
ОчиститьСообщения();
Сообщить("Список подключенных дисков:");
Для Каждого Элемент Из Диски Цикл
Сообщить(Элемент.Ключ + ": " + Элемент.Значение);
КонецЦикла;
КонецПроцедуры
Комментарии
Отправить комментарий