К основному контенту

Получить список адресов подключенных сетевых дисков

Вводная получить список дисков (хотим знать не 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);
        КонецЕсли;
                                                           
        Диски.Вставить(Псевдоним, Путь);                                                      
       
    КонецЦикла;

    ОчиститьСообщения();
    Сообщить("Список подключенных дисков:");
    Для Каждого Элемент Из Диски Цикл
        Сообщить(Элемент.Ключ + ": " + Элемент.Значение);
    КонецЦикла;
   
КонецПроцедуры


Комментарии

Популярные сообщения из этого блога

СписокВыбора. Показать Представление вместо Значения

Вводная Если на форме есть элемент управления со списком выбора, в моем конкретном примере это Колонка Значение (Число (3,0)) с настроенным списком выбора. По умолчанию платформа отображает именно строковое значения, а не текст представления  из списка выбора (когда как при выборе значения из списка показываются именно представления). Решение Для Управляемых форм необходимо настроить правила условного оформления, для обычных форм - оформление ячеек при выводе данных.

Табличный Документ. Разная ширина колонки в строках

Когда нужно в макете (табличном документе) изменить ширину колонки  для конкретных строк: 1. Выделить всю строку (строки). Именно всю, фокус для выделенной области не работает. 2. Нажимаем и не отпускает Ctrl 3. С помощью мыши изменяют ширину любой из колонок - будет задан вопрос об создании нового формата строк - соглашаемся. Как же прекрасен мир, где для модификаций не достаточно просто использовать контекстное меню и диалог редактора свойств, где нужно знать заветные слова и таинства танца. 90ые, моё почтение. UPD Программно, тоже самое, можно сделать через ТабДок = Новый ТабличныйДокумент(); ТабДок.Область(1,,1,).СоздатьФорматСтрок(); ТабДок.Область(1,1).ШиринаКолонок = 70; ТабДок.Область(1,2).ШиринаКолонок = 30; ТабДок.Область(2,,2,).СоздатьФорматСтрок(); ТабДок.Область(2,1).ШиринаКолонок = 30; ТабДок.Область(2,2).ШиринаКолонок = 70; ТабДок.Показать();

Расширение конфигурации + Связанные документы (Режим совместимости 8.3.12)

Вводная: реализовать ввод Заказа поставщику на основании Заказа на Ремонт. решить через расширения конфигурации. Хочу обратить ваше внимание, не нужно добавлять в расширение критерий отбора, для 8.3.12 нам не доступно добавление\изменение состава критерия. Более того может зависать конфигуратор (столкнулся с последней версией 8.3.14 + ERP) Разработку рекомендую вести с применением хранилища и для расширения. Иначе устанете потом выгребать чего лишнего включили в расширение при добавлении таких или схожих обектов с составными типами и подобное. Все текущие типовые решения сейчас идут в режиме совместимости 8.3.12, в прочем и для 8.3.14 (и даже 8.3.15 ничего не поменялось). Что нам нужно было бы сделать при отказе от поддержки: 1) добавить наш документ в Критерий отбора (состав, реквизиты); 2) в раздел Ввод на основании целевого документа. И что с целью сохранения поддержки. Как сделать это же для расширения: 1) Добавить реквизит расширения Документы.ЗаказПоставщику._За