Работа со справочником из встроенного языка
ЛАБОРАТОРНАЯ РАБОТА 8.2
СПРАВОЧНИКИ.
РАБОТА СО СПРАВОЧНИКОМ ИЗ ВСТРОЕННОГО ЯЗЫКА
Работа со справочником из встроенного языка начинается со свойства глобального контекста Справочники. При обращении к данному свойству возвращается значение, которое имеет тип СправочникиМенеджер (множественное число).
У данного объекта столько свойств, сколько справочников определено в конфигураторе. При обращении к данному свойству можно получить значение, имеющее тип СправочникМенеджер.ИмяСправочника (единственное число).
У данного объекта есть набор методов, позволяющих находить нужную запись, создавать новые, производить выборки и т.д.
Если выполнить метод Выбрать() объекта «СправочникМенеджер.Имя», то он вернет объект «СправочникВыборка.Имя» и т.д.
Важно помнить, что очень часто использование какого-либо метода приводит к тому, что он возвращает объект. Этот объект необходимо получить и продолжить работать (в нашем случае со справочником). Получая объект всегда необходимо знать его тип. Каждый из объектов обладает определенной специализацией
Например объект, имеющий тип «СправочникВыборка.Имя», позволяет работать с выборкой из справочника, и только на чтение. Объект с типом значения «СправочникОбъект.Имя» позволяет модифицировать «запись» справочника. Объект с типом значения «СправочникСсылка» позволяет работать с «записью» справочника на чтение и т.д.).
Рассмотрим прикладной пример: необходимо получить наименования из справочника «Номенклатура». Сделать это можно по разному. Например каждый из «промежуточных» объектов можно сохранять в какой-либо переменной:
СпркиМнр=Справочники;
СпркМнр= СпркиМнр.Номенклатура;
Выборка= СпркМнр.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Наименование);
КонецЦикла;
Запись можно сократить заменив первые три строки одной, при этом получив:
Выборка =Справочники.Номенклатура.Выбрать(); //1
Пока Выборка.Следующий() Цикл //2
Сообщить(Выборка.Наименование);
КонецЦикла;
1 – сразу получаем выборку справочника (объект имеющий тип значения «СправочникВыборка.Номенклатура»)
2 – перебираем элементы выборки (метод «Следующий()» возвращает истину в случае если позиционирование на следующей позиции выборки произошло успешно, ложь в противном случае). Важно понимать, что в цикле перебираются не элементы (группы) справочника, а «позиции» выборки. Для того чтобы получить из выборки ссылку на элемент (на чтение) необходимо воспользоваться свойством «Ссылка» объекта «СправочникВыборка.Номенклатура» (т.е. ЧтоТо=Выборка.Ссылка;), на модификацию (ЧтоТо=Выборка.ПолучитьОбъект();)
Если необходимо заменить все наименования справочника, то код будет выглядеть следующим образом:
Выборка =Справочники.Номенклатура.Выбрать(); //1
Пока Выборка.Следующий() Цикл //2
НаИзменение= Выборка.ПолучитьОбъект();
НаИзменение.Наименование= «Новое»;
НаИзменение.Записать();
КонецЦикла