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

В этом модуле вы можете обработать событие ПолучитьЗначенияВыбора() для того, чтобы изменить стандартный алгоритм подбора элементов справочника при вводе по строке.
Также в модуле справочника можно обработать события вычисления разрешений доступа: ВычислитьРазрешенияДоступа(), ВычислитьРазрешенияДоступаДляОбъектов() (подробнее).
Вы можете расширить тип имя-справочника, добавив в модуль справочника собственные публичные методы. Например, метод, создающий элементы определенного вида:
@ВПроекте
метод СоздатьОбъектСДоставкойFtp(): ИнформационныеСистемы.Ссылка
пер Система = новый ИнформационныеСистемы.Объект()
Система.СпособДоставки = СпособДоставки.FTP
возврат Система.Ссылка
;
Этот метод будет доступен в других модулях:
пер Объект = ИнформационныеСистемы.СоздатьОбъектСДоставкойFtp()
В модуле справочника может находиться реализация контракта сервиса.
Тип «имя-справочника.Ссылка»
Тип имя-справочника.Ссылка доступен в окружении КлиентИСервер и описывают ссылку на один элемент справочника. Он имеет конструктор новый имя-справочника.Ссылка(), который позволяет создать новую ссылку по Ууид, а также метод ЗагрузитьОбъект(), который доступен только на сервере и позволяет получить экземпляр (имя-справочника.Объект) из ссылки (имя-справочника.Ссылка).
Тип «имя-справочника.Объект»
Тип имя-справочника.Объект доступен в окружении КлиентИСервер.
Экземпляр этого типа содержит данные одного элемента справочника и предназначен для создания, изменения или удаления элемента справочника.
Этот тип имеет конструктор новый имя-справочника.Объект(), который позволяет создать новый элемент справочника. Заполнив этот экземпляр данными, вы можете затем сохранить его в базе данных.
Модуль объекта справочника
В проекте модуль, расширяющий тип имя-справочника.Объект, называется модулем объекта справочника. Он доступен в окружении Сервер.

В нем вы можете обработать такие события, как:
ПриЗаполнении(),ПередЗаписью(),ПослеЗаписи(),ПередУдалением().
Например:
@Обработчик
метод ПослеЗаписи(ПредыдущееЗначение: ИнформационныеСистемы.Данные,
ПараметрыЗаписи: ИнформационныеСистемы.ПараметрыЗаписи)
// Действия, которые выполняются после записи справочника
;
Во время записи элемента справочника «Шина» открывает в базе данных транзакцию записи и вызывает следующие события:
Вы можете расширить тип имя-справочника.Объект, добавив в модуль объекта собственные публичные методы. Например, метод, пересчитывающий данные элемента справочника, которые зависят от каких-то внешних данных, хранящихся вне справочника:
@ВПроекте
метод ПересчитатьДанные()
// Алгоритм пересчета данных
;
Этот метод будет доступен в других модулях:
// Вызов собственного метода объекта справочника «ИнформационныеСистемы»
// В переменной ИнформационныеСистемы находится значение типа ИнформационныеСистемы.Объект
ИнформационныеСистемы.ПересчитатьДанные()
ИнформационныеСистемы.Записать()
В модуле объекта справочника может находиться реализация методов контракта типа и контракта сущности.
Тип «имя-справочника.Данные»
Тип имя-справочника.Данные доступен в окружении Сервер и используется только в обработчиках событий имя-справочника.Объект.ПередЗаписью() и имя-справочника.Объект.ПослеЗаписи().
Он не имеет конструктора. «Шина» сам создает экземпляр этого типа при наступлении упомянутого события. Он передает в обработчик события экземпляр этого типа, наполненный «старыми» значениями.
Тип «Справочники»
Тип Справочники доступен в окружении Сервер.
Данный тип существует независимо от того, есть в проекте справочники или нет. Он позволяет обойти все справочники и пересчитать разрешения доступа.
Тип Справочники не имеет конструктора и имеет единственный экземпляр, обращение к которому выполняется по имени типа:
// Получить менеджера всех справочников
пер МенеджерВсехСправочников = Справочники
Экземпляр типа Справочники является коллекцией элементов типа имя-справочника. Поэтому, чтобы пересчитать разрешения доступа, достаточно просто обойти эту коллекцию и у каждого менеджера вызвать пересчет разрешений (подробнее):
для Справочник из Справочники
Справочник.ПересчитатьРазрешенияДоступа()
;
Однако при этом нужно учитывать, что состав коллекции элементов экземпляра типа Справочник зависит от того, какой подсистеме принадлежит модуль, в котором был получен этот экземпляр. В его составе будут только те справочники, которые принадлежат данной подсистеме и тем подсистемам, которые импортирует данная подсистема.