Все элементы проекта порождают типы встроенного языка. Помимо «обычного», неквалифицированного имени типы имеют квалифицированные имена. Квалифицированное имя типа состоит из пространства имен и «обычного» имени, разделенных символами «::» (двойным двоеточием). Типы, порождаемые элементами проекта, принадлежат пространству имен своей подсистемы и своего пакета.
Например, проект включает подсистемы КонтрольДанных и Основная, подсистема КонтрольДанных содержит пакет и справочник СправочникСотрудники, а подсистема Основная содержит модуль ОбщийМодуль и справочник СправочникТовары. Пакет, в свою очередь, включает справочник СправочникВалюты (рис. 4.1):
Рис. 4.1. Структура проекта
Тогда квалифицированные имена типов, порождаемых его элементами, будут выглядеть следующим образом:
Нужно помнить, что в одном пространстве имен (в одной подсистеме или в одном пакете) не может быть двух элементов с одинаковыми именами.
При обращении к методам элементов проекта также используются их квалифицированные имена. Например, у элементов проекта СправочникВалюты и СправочникСотрудники есть модули объекта и менеджера, в которых определены публичные (описанные аннотациями @проект или @глобально) методы:
@проект
метод Метод_Менеджера()
;
@проект
метод Метод_Объекта()
;
Пусть в рассмотренном выше проекте (см. рис. 4.1) подсистема Основная использует подсистему КонтрольДанных. То есть в описании подсистемы Основная в свойстве Использование указано:
Использование: [ КонтрольДанных ]
Тогда в общем модуле ОбщийМодуль обращение к данным справочников СправочникСотрудники и СправочникВалюты может выглядеть следующим образом:
@проект
метод Пример1()
пер Сотрудник1 = новый КонтрольДанных::СправочникСотрудники.Объект()
// Обращение к атрибуту справочника
Сотрудник1.Код = "0"
// Вызов публичного метода элемента справочника
Сотрудник1.Метод_Объекта()
// Вызов публичного метода менеджера справочника
КонтрольДанных::СправочникСотрудники.Метод_Менеджера()
;
@проект
метод Пример2()
пер Валюта1 = новый КонтрольДанных::Пакет::СправочникВалюты.Объект()
// Обращение к атрибуту справочника
Валюта1.Код = "0"
// вызов публичного метода элемента справочника
Валюта1.Метод_Объекта()
// вызов публичного метода менеджера справочника
КонтрольДанных::Пакет::СправочникВалюты.Метод_Менеджера()
;