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