Контекст работы со справочниками
В синтаксисе языка обращение к атрибутам, а также вызов методов справочников зависит от контекста выполнения программного модуля.
Если конкретный элемент или группа справочника входит (согласно локального контекста) в набор непосредственно доступных модулю значений агрегатных типов данных (см. «Виды программных модулей»), то обращение к атрибуту, вызов метода для этого элемента или группы справочника — просто имя этого атрибута или метода с указанием необходимых параметров.
Пример:
* В форме редактирования элемента справочника «Сотрудники» мы имеем непосредственный доступ к текущему элементу (сотруднику) справочника. Значит, чтобы изменить имя текущего сотрудника, просто укажем:
Наименование = "Сидоров С.С.";
Значение элемента или группы справочника может быть получено из других источников, например как реквизит какого-либо документа. Чтобы получить доступ к атрибуту, вызвать метод такой переменной со значением типа «Справочник», имя этого атрибута, метода (с указанием необходимых параметров) пишется через точку после имени реквизита.
Пример:
* Если в документе значение реквизита "Сотрудники" имеет тип «Справочник», имя сотрудника можно узнать следующим образом:
ИмяСотр = Док.Сотрудники.Наименование;
В других случаях доступ к атрибутам, вызов методов конкретного элемента или группы справочника происходит при помощи переменной со ссылкой на объект типа «Справочник». Объект создается функцией СоздатьОбъект, ссылка на который присваивается переменной. Чтобы вызвать атрибут или метод объекта, имя этого атрибута, метода (с указанием необходимых параметров) пишется через точку после имени переменной.
При создании переменной со ссылкой на объект типа «Справочник» в качестве имени справочника должно выступать полное название конкретного вида справочника, как он объявлен в конфигураторе. Вид справочника записывается через точку после ключевого слова " Справочник", т. е. полное имя справочника записывается следующим образом:
Справочник.Имя_Справочника
где <Имя_Справочника> — название справочника, определенное в конфигураторе.
Англоязычный синоним ключевого слова Справочник — Reference. Допускается создавать объект неопределенного вида справочника. В этом случае название конкретного вида справочника в параметре вызова функции СоздатьОбъект опускается. Далее для работы с таким объектом ему надо установить вид справочника при помощи метода Вид.
Пример:
Спр1=СоздатьОбъект("Справочник.Товары");
Спр2=СоздатьОбъект("Справочник.Клиенты");
СпрЗ=СоздатьОбъект("Справочник");
СпрЗ.Вид("Валюты");
Замечание. Следует обратить особое внимание, что переменной может быть присвоена ссылка на позиционируемый объект или само значение элемента справочника (например, переменной может быть присвоено значение реквизита документа, который имеет тип «Справочник»). Использование ссылки, созданной при помощи функции СоздатьОбъект существенно отличается от работы непосредственно со значением элемента справочника. Только при работе со ссылкой на позиционируемый объект типа «Справочник» есть возможность изменять позиционирование (найти-выбрать...) текущего элемента справочника (т. е. осуществлять навигацию по справочнику), создавать новые элементы и удалять существующие. С другой стороны, ссылка не содержит собственно значения элемента справочника, которое можно присвоить чему-либо. Однако, его всегда можно получить используя метод ТекущийЭлемент.
Замечание. Объект, созданный при помощи функции СоздатьОбъект, изначально не спозиционирован, т. е. не указывает на конкретный элемент справочника. Чтобы начать с ним работать, его предварительно надо позиционировать при помощи методов НайтиЭлемент, НайтиПоКоду, ПолучитьЭлемент и т. п.
Пример:
*
//В модуле Формы списков Справочника
// меняем наименование выбранного в списке элемента справочника
Наименование = "Администрация";
*
// В модуле Формы элемента справочника или
// В модуле Формы группы справочника
// при редактирования одного элемента справочника
// меняем наименование обрабатываемого элемента справочника
Наименование = "Бухгалтерия";
*
// В других программных модулях
Спр = СоздатьОбъект("Справочник.Товары");
Спр.Новый();
//задаем реквизиты элемента Справочника, используя атрибуты
Спр.Наименование = "Авто-Элемент";
Спр.Код = 1032;
Спр.Размер = 10045;
Спр.Записать();