Перейти к основному содержимому

Пространство имен

Общая информация

Пространство имен — это область кода, в рамках которой «1С:Предприятие.Элемент Скрипт» гарантирует уникальность используемых имен. Каждое имя принадлежит какому-либо пространству имен. Любой тип в языке имеет квалифицированное имя. Квалифицированное имя включает в себя имя типа, перед которым в иерархическом порядке указываются пространства имен, которым он принадлежит. Части имени разделяются оператором разрешения области видимости :: (двойное двоеточие).

Типы данных, поставляемые вместе с языком, принадлежат стандартному пространству имен Стд (Std).

Например:

Стд::Число
Стд::Коллекции::Массив<ТипЭлемента>

В «1С:Предприятие.Элементе Скрипте» существует пространство имен Скрипт (Scripts), которое включает в себя весь код, написанный в текущем файле скрипта.

метод Скрипт()
Консоль.Записать(ПолучитьТип()) // Scripts::Test, где Test — имя SBS-файла
;

Разрешение имен

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

В контексте доступна следующая информация:

  • Доступные пространства имен — идентификаторы из этих пространств можно использовать только с указанием пространства.
  • Импортированные пространства имен — идентификаторы из этих пространств можно использовать без указания пространства.

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

  • пространство имен текущего сценария (Скрипт);
  • стандартное пространство имен (Стд).

В примере ниже в методе Скрипт() вызывается метод Степень() из стандартного пространства имен Стд:

метод Скрипт()
Консоль.Записать(Степень(10, 4)) // 10000
;

Но в следующем примере для вызова метода Степень() из стандартного пространства имен необходимо указать пространство имен явно, т. к. метод Степень() переопределен пользователем в текущем скрипте и имеет приоритет:

метод Степень(Основание: Число, Показатель: Число): Число
возврат 42
;

метод Скрипт()
Консоль.Записать(Степень(10, 4)) // 42
Консоль.Записать(Стд::Степень(10, 4)) // 10000
;

Описанное выше также актуально и для имен типов-одиночек:

метод УдалитьЭлементИФайл()
пер Файлы = ["test.txt", "log.txt"]
// Вызывает метод типа ИзменяемаяКоллекция — удаляет элемент коллекции
Файлы.Удалить("test.txt")
// Вызывает метод типа-одиночки Файлы — удаляет файл
Стд::ВводВывод::Файлы::Файлы.Удалить("test.txt")
;

метод УдалитьФайл()
// Вызывает метод типа-одиночки Файлы
Файлы.Удалить("test.txt")
;