Урок: Информация о системе
Начнем изучать 1Скрипт с практического примера. Создадим скрипт, который печатает информацию о текущей системе.
Вы научитесь
- Использовать среду разработки
- Создавать файл сценария
- Использовать класс СистемнаяИнформация
- Выводить текст на экран
Постановка задачи
Скрипт, который выводит на экран:
- Версию ОС, разрядность
- Пути к специальным папкам (Документы, Загрузки и пр.)
- Логические диски
Начало работы
Создадим пустой каталог и откроем его в VS Code с помощью меню File -> Open Folder. Этот режим открывает папку, как каталог проекта. Это основной режим разработки проектов для 1Скрипт. В нем мы работаем с содержимым папки, как с единым проектом.
Добавим новый файл с расширением .os
в нашу папку.
Назовем файл sys-info.os
и откроем его в редакторе.
Пишем код
Мы будем пользоваться классом СистемнаяИнформация
, который предоставит нам все необходимые данные о системе. Так же, как в системе 1С:Предприятие, исполнение любого модуля 1Скрипт начинается с тела модуля - кода, расположенного после всех методов.
Состав свойств и методов класса СистемнаяИнформация
мы можем узнать в синтакс-помощнике. Напишем следующий код.
СистемнаяИнформация = Новый СистемнаяИнформация();
Сообщить("Имя компьютера: " + СистемнаяИнформация.ИмяКомпьютера);
Сообщить("Версия ОС: " + СистемнаяИнформация.ВерсияОС);
Сообщить("Тип платформы: " + СистемнаяИнформация.ТипПлатформы);
Сообщить("Пользователь: " + СистемнаяИнформация.ПользовательОС);
Сообщить("Количество ЦПУ: " + СистемнаяИнформация.КоличествоПроцессоров);
Сообщить("Разрядность: " + ?(СистемнаяИнформация.Это64БитнаяОперационнаяСистема, "64", "32"));
Мы получаем значения свойств класса и выводим их в консоль, пользуясь методом Сообщить
.
Дополним код информацией о специальных папках и дисках системы. Добавим два цикла:
Сообщить("Системные папки:");
Для Каждого Папка Из СпециальнаяПапка Цикл
Сообщить(Символы.Таб + Строка(Папка) + ": " + СистемнаяИнформация.ПолучитьПутьПапки(Папка));
КонецЦикла;
Сообщить("Логические диски:");
Для Каждого ИмяДиска Из СистемнаяИнформация.ИменаЛогическихДисков Цикл
Сообщить(Символы.Таб + ИмяДиска);
КонецЦикла;
Наш скрипт готов. Запустим его на выполнение. Откроем встроенный терминал VS Code из меню Terminal -> New Terminal
oscript sys-info.os
Если все написано правильно, мы должны получить примерно такой вывод:
C:\Users\user\Desktop\tmp\releases>oscript sys-info.os
Имя компьютера: WIN-HOME
Версия ОС: Microsoft Windows NT 6.2.9200.0
Тип платформы: Windows_x86_64
Пользователь: \\WIN-HOME\user
Количество ЦПУ: 4
Разрядность: 64
Системные папки:
МоиДокументы:C:\Users\user\Documents
ДанныеПриложений:C:\Users\user\AppData\Roaming
ЛокальныйКаталогДанныхПриложений:C:\Users\user\AppData\Local
РабочийСтол:C:\Users\user\Desktop
КаталогРабочийСтол:C:\Users\user\Desktop
МояМузыка:C:\Users\user\Music
МоиРисунки:C:\Users\user\Pictures
Шаблоны:C:\Users\user\AppData\Roaming\Microsoft\Windows\Templates
МоиВидеозаписи:C:\Users\user\Videos
ОбщиеШаблоны:C:\ProgramData\Microsoft\Windows\Templates
ПрофильПользователя:C:\Users\user
ОбщийКаталогДанныхПриложения:C:\ProgramData
Логические диски:
C:\
D:\
E:\
J:\
Рефакторинг
Сейчас мы используем конкатенацию строк в каждом значении, это не очень удобно, т.к. если мы захотим изменить формат вывода, нам придется изменять его в каждой строчке. Выделим отдельный метод ВывестиЗначение
, который будет отвечать за форматирование текста.
Методы должны располагаться перед кодом тела модуля, поэтому процедуру ВывестиЗначение
мы располагаем в самом верху файла
Процедура ВывестиЗначение(Название, Значение)
КонецПроцедуры
СистемнаяИнформация = Новый СистемнаяИнформация();
... и далее без изменений
Добавим в методе код вывода. Будем использовать встроенную функцию СтрШаблон
. Также заменим места вывода значений на вызов метода ВывестиЗначение
Процедура ВывестиЗначение(Название, Значение)
Сообщить(СтрШаблон("%1: %2", Название, Значение), СтатусСообщения.Информация);
КонецПроцедуры
СистемнаяИнформация = Новый СистемнаяИнформация();
ВывестиЗначение("Имя компьютера", СистемнаяИнформация.ИмяКомпьютера);
ВывестиЗначение("Версия ОС", СистемнаяИнформация.ВерсияОС);
ВывестиЗначение("Тип платформы", СистемнаяИнформация.ТипПлатформы);
ВывестиЗначение("Пользователь", СистемнаяИнформация.ПользовательОС);
ВывестиЗначение("Количество ЦПУ", СистемнаяИнформация.КоличествоПроцессоров);
ВывестиЗначение("Разрядность", ?(СистемнаяИнформация.Это64БитнаяОперационнаяСистема, "64", "32"));
Сообщить("Системные папки:");
Для Каждого Папка Из СпециальнаяПапка Цикл
ВывестиЗначение(Символы.Таб + Строка(Папка), СистемнаяИнформация.ПолучитьПутьПапки(Папка));
КонецЦикла;
Сообщить("Логические диски:");
Для Каждого ИмяДиска Из СистемнаяИнформация.ИменаЛогическихДисков Цикл
Сообщить(Символы.Таб + ИмяДиска);
КонецЦикла;
Теперь формат вывода можно менять в одном месте.
Итоги
Мы научились:
- Создавать файл сценария
- Запускать встроенный терминал
- Использовать класс СистемнаяИнформация
- Ознакомились со структурой модуля