Уведомления
Очистить все
1С:Предприятие 8.x
3
Записи
1
Пользователи
0
Likes
4,686
Просмотры
Создатель темы 07/01/2023 8:54 пп
Получаем список дисков в 1С.
Рассмотрим 3 способа.
Способ 1
Функция ПолучитьСписокДисковСпособ1() РезультатМассив = Новый Массив; СтрокаОтвета = "ok"; СтруктураРезультатаФункции = Новый Структура(); СтруктураРезультатаФункции.Вставить("Выполнено", Истина); СтруктураРезультатаФункции.Вставить("Результат", РезультатМассив); СтруктураРезультатаФункции.Вставить("Ответ", СтрокаОтвета); Попытка FSO = Новый COMОбъект("Scripting.FileSystemObject"); // Выборка объектов из коллекции Drives Для каждого Диск Из FSO.Drives Цикл // Диск.DriveLetter - буква диска Стр = Диск.DriveLetter; // Диск.DriveType = 1 - Flash накопитель // Диск.DriveType = 2 - Локальный жесткий диск // Диск.DriveType = 3 - Сетевой диск // Диск.DriveType = 4 - CD/DVD дисковод Если Диск.DriveType = 3 Тогда // если это сетевой диск, то укажем сетевой путь //Стр = Стр + " - " + Диск.ShareName; РезультатМассив.Добавить(Стр); ИначеЕсли Диск.IsReady Тогда //Стр = Стр + " - " + Диск.VolumeName; РезультатМассив.Добавить(Стр); Иначе //Стр = Стр + " - [Диск не найден]"; РезультатМассив.Добавить(Стр); КонецЕсли; КонецЦикла; Исключение СтрокаОтвета = ОписаниеОшибки(); КонецПопытки; СтруктураРезультатаФункции.Выполнено = РезультатМассив.Количество() > 0; СтруктураРезультатаФункции.Ответ = СтрокаОтвета; СтруктураРезультатаФункции.Результат = РезультатМассив; Возврат СтруктураРезультатаФункции; КонецФункции
Создатель темы 07/01/2023 8:55 пп
Способ 2
Функция ПолучитьСписокДисковСпособ2() РезультатМассив = Новый Массив; СтрокаОтвета = "ok"; СтруктураРезультатаФункции = Новый Структура(); СтруктураРезультатаФункции.Вставить("Выполнено", Истина); СтруктураРезультатаФункции.Вставить("Результат", РезультатМассив); СтруктураРезультатаФункции.Вставить("Ответ", СтрокаОтвета); БылаОшибка = Ложь; Попытка ServicesSet = ПолучитьCOMОбъект("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2"); СписокДисков = ServicesSet.ExecQuery("Select Name,VolumeName,VolumeSerialNumber from Win32_LogicalDisk"); Исключение БылаОшибка = Истина; СтрокаОтвета = ОписаниеОшибки(); КонецПопытки; Если БылаОшибка = Ложь Тогда Если СписокДисков.Count > 0 Тогда Для Каждого ТекДиск Из СписокДисков Цикл РезультатМассив.Добавить(ТекДиск.Name); КонецЦикла; КонецЕсли; КонецЕсли; СтруктураРезультатаФункции.Выполнено = РезультатМассив.Количество() > 0; СтруктураРезультатаФункции.Ответ = СтрокаОтвета; СтруктураРезультатаФункции.Результат = РезультатМассив; Возврат СтруктураРезультатаФункции; КонецФункции
Создатель темы 07/01/2023 8:56 пп
Способ 3
Функция ПолучитьСписокДисковСпособ3() РезультатМассив = Новый Массив; СтрокаОтвета = "ok"; СтруктураРезультатаФункции = Новый Структура(); СтруктураРезультатаФункции.Вставить("Выполнено", Истина); СтруктураРезультатаФункции.Вставить("Результат", РезультатМассив); СтруктураРезультатаФункции.Вставить("Ответ", СтрокаОтвета); БылаОшибка = Ложь; Попытка Locator = Новый COMОбъект("WbemScripting.SWbemLocator"); ServicesSet = Locator.ConnectServer("."); //Извлечение экземпляров класса Win32_LogicalDisk ObjectSet = ServicesSet.InstancesOf("Win32_LogicalDisk"); Исключение БылаОшибка = Истина; СтрокаОтвета = ОписаниеОшибки(); КонецПопытки; Если БылаОшибка = Ложь Тогда Для Каждого Item Из ObjectSet Цикл //Сообщить("Имя: " + Item.Caption); //Сообщить("Описание: " + Item.Description); // здесь выводится тип диска //Сообщить("Файловая система: " + Item.FileSystem); //Сообщить("Свободное место: " + Item.FreeSpace); //Сообщить("Метка диска: " + Item.VolumeName); //Сообщить ("======================="); РезультатМассив.Добавить(Item.Caption); КонецЦикла; КонецЕсли; СтруктураРезультатаФункции.Выполнено = РезультатМассив.Количество() > 0; СтруктураРезультатаФункции.Ответ = СтрокаОтвета; СтруктураРезультатаФункции.Результат = РезультатМассив; Возврат СтруктураРезультатаФункции; КонецФункции