Skip to content

Урок: Информация о системе

Начнем изучать 1Скрипт с практического примера. Создадим скрипт, который печатает информацию о текущей системе.

Вы научитесь

  • Использовать среду разработки
  • Создавать файл сценария
  • Использовать класс СистемнаяИнформация
  • Выводить текст на экран

Постановка задачи

Скрипт, который выводит на экран:

  • Версию ОС, разрядность
  • Пути к специальным папкам (Документы, Загрузки и пр.)
  • Логические диски

Начало работы

Создадим пустой каталог и откроем его в VS Code с помощью меню File -> Open Folder. Этот режим открывает папку, как каталог проекта. Это основной режим разработки проектов для 1Скрипт. В нем мы работаем с содержимым папки, как с единым проектом.

Добавим новый файл с расширением .os в нашу папку.

Назовем файл sys-info.os и откроем его в редакторе.

Пишем код

Мы будем пользоваться классом СистемнаяИнформация, который предоставит нам все необходимые данные о системе. Так же, как в системе 1С:Предприятие, исполнение любого модуля 1Скрипт начинается с тела модуля - кода, расположенного после всех методов.

Состав свойств и методов класса СистемнаяИнформация мы можем узнать в синтакс-помощнике. Напишем следующий код.

bsl
СистемнаяИнформация = Новый СистемнаяИнформация();

Сообщить("Имя компьютера: " + СистемнаяИнформация.ИмяКомпьютера);
Сообщить("Версия ОС: " + СистемнаяИнформация.ВерсияОС);
Сообщить("Тип платформы: " + СистемнаяИнформация.ТипПлатформы);
Сообщить("Пользователь: " + СистемнаяИнформация.ПользовательОС);
Сообщить("Количество ЦПУ: " + СистемнаяИнформация.КоличествоПроцессоров);
Сообщить("Разрядность: " + ?(СистемнаяИнформация.Это64БитнаяОперационнаяСистема, "64", "32"));

Мы получаем значения свойств класса и выводим их в консоль, пользуясь методом Сообщить.

Дополним код информацией о специальных папках и дисках системы. Добавим два цикла:

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

Сообщить("Логические диски:");
Для Каждого ИмяДиска Из СистемнаяИнформация.ИменаЛогическихДисков Цикл
	Сообщить(Символы.Таб + ИмяДиска);
КонецЦикла;

Наш скрипт готов. Запустим его на выполнение. Откроем встроенный терминал VS Code из меню Terminal -> New Terminal

sh
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:\

Рефакторинг

Сейчас мы используем конкатенацию строк в каждом значении, это не очень удобно, т.к. если мы захотим изменить формат вывода, нам придется изменять его в каждой строчке. Выделим отдельный метод ВывестиЗначение, который будет отвечать за форматирование текста.

Методы должны располагаться перед кодом тела модуля, поэтому процедуру ВывестиЗначение мы располагаем в самом верху файла

bsl
Процедура ВывестиЗначение(Название, Значение)

КонецПроцедуры

СистемнаяИнформация = Новый СистемнаяИнформация();

... и далее без изменений

Добавим в методе код вывода. Будем использовать встроенную функцию СтрШаблон. Также заменим места вывода значений на вызов метода ВывестиЗначение

bsl
Процедура ВывестиЗначение(Название, Значение)
	Сообщить(СтрШаблон("%1: %2", Название, Значение), СтатусСообщения.Информация);
КонецПроцедуры

СистемнаяИнформация = Новый СистемнаяИнформация();

ВывестиЗначение("Имя компьютера", СистемнаяИнформация.ИмяКомпьютера);
ВывестиЗначение("Версия ОС", СистемнаяИнформация.ВерсияОС);
ВывестиЗначение("Тип платформы", СистемнаяИнформация.ТипПлатформы);
ВывестиЗначение("Пользователь", СистемнаяИнформация.ПользовательОС);
ВывестиЗначение("Количество ЦПУ", СистемнаяИнформация.КоличествоПроцессоров);
ВывестиЗначение("Разрядность", ?(СистемнаяИнформация.Это64БитнаяОперационнаяСистема, "64", "32"));

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

Сообщить("Логические диски:");
Для Каждого ИмяДиска Из СистемнаяИнформация.ИменаЛогическихДисков Цикл
	Сообщить(Символы.Таб + ИмяДиска);
КонецЦикла;

Теперь формат вывода можно менять в одном месте.

Итоги

Мы научились:

  • Создавать файл сценария
  • Запускать встроенный терминал
  • Использовать класс СистемнаяИнформация
  • Ознакомились со структурой модуля