helpf.pro
Регистрация
 0 
Распечатать

Получение локальных, сетевых, сменных (флешек) дисков компьютера

При разработке отчетов или обработок рано или поздно приходится сталкиваться с необходимостью определения имени локального диска, сменного накопителя (флешки), сетевого диска. В данной статье представлены 3 способа получения списка дисков компьютера:

Примеры для 8-ой версии, для того чтобы заработало в 7-ой замените:
Код 1C v 8.х
  Новый COMОбъект(    

на
Код 1C v 7.x
  СоздатьОбъект( 


1-вый способ:
Код 1C v 8.х
  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;
	Иначе
		Стр = Стр + " - [Диск не найден]";
	КонецЕсли; 
	Сообщить(Стр);
КонецЦикла;     


2-ой способ:
Код 1C v 8.х
 
//При помощи скрипта получаем перечень всех дисков компьютера:
Попытка                                                       
	ScrptCtrl = Новый COMОбъект("MSScriptControl.ScriptControl"); 
	ScrptCtrl.Language="vbscript";                                
	ScrptCtrl.addcode("                                           
	|Function GetComputers()		
	| Set objWMIService = GetObject(""winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2"")		
	| Set colDisks = objWMIService.ExecQuery (""Select * from Win32_LogicalDisk"")               		
	| For Each objDisk in colDisks                                                               		
	| disk = disk & objDisk.DeviceID & "";"" & objDisk.DriveType& "";""                          		
	| Next                                                                                       		
	| GetComputers = disk                                                                        		
	|End Function
	|");                                                                                         		
	Текст=СокрЛП(ScrptCtrl.Run("GetComputers"));                                                                               		
Исключение                                                                                       		
	Предупреждение(ОписаниеОшибки());                                                            		
КонецПопытки;                                                                                    	
//Далее создадим таблицу дисков компьютера
ТабДисков = Новый ТаблицаЗначений;                                                           		
ТабДисков.Колонки.Добавить("Диск");                                                          		
ТабДисков.Колонки.Добавить("Описание");                                                      		
//Переберая полученную информацию из скрипта добавляем ее в таблицу
Пока СтрДлина (Текст)> 0 Цикл                                                                			
	Строка = ТабДисков.Добавить();                                                           			
	Строка.Диск = Лев(Текст,2);    
	// Далее определим тип диска:
	// 1 - Дисковод
	// 2 - Flash накопитель
	// 3 - Локальный жесткий диск
	// 4 - Сетевой диск
	// 5 - CD/DVD дисковод
	Строка.Описание = Сред(Текст,4,1);                                                       			
	Текст = Сред(Текст,6,СтрДлина (Текст)-5);                                                			
КонецЦикла;
// Далее переберая элементы таблицы выведем флешки в окно сообщений
Сообщить("Флешки:");
Для Каждого Элемента Из ТабДисков Цикл                    		
	Если Элемента.Описание = "2" Тогда
		Сообщить(Элемента.Диск);
	КонецЕсли;                                            			
КонецЦикла;    


3-ий способ:
Код 1C v 8.х
  //Попытка подключения к WMI на локальном компьютере
Попытка
	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);
	Сообщить ("=======================") ;
КонецЦикла;    


Автор: Мигачев Евгений
Разместил:   Версии: | 7.x | 8.x |  Дата:   Прочитано: 20027
 0 
Распечатать
Возможно, вас также заинтересует
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П
10060 (0x0000274C): Попытка установить соединение была безуспешной 24
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 53
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш
1C медленно работает по сети с базой на SQL Server 23
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. П
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.
Загрузка... Дождитесь завершения!