Перебор элементов справочника внутри заданного родителя.В этом случае алгоритм будет точно таким же, что и при полном переборе справочника, за исключением одного предварительного шага. Требуется до инициализации выборки установить конкретного родителя (т.е. группу), внутри которого будет осуществляться поиск. Для этих целей можно использовать следующую последовательность действий:
6. Перебор элементов подчиненного справочника. При работе с подчиненным справочником (например, при переборе или поиске элементов) требуется указать, для какого конкретно элемента-владельца получать подчиненные элементы. Для этого предназначена процедура ИспользоватьВладельца(ОбъектВладелец) агрегатного типа данных Справочник. На примере перебора всех моделей заданной марки сотовых телефонов это выглядело бы так:
1. Создайте в чистой конфигурации Справочник «Сотрудники» (реквизиты Код, Наименование, Оклад); Код, Наименование создаются автоматически, необходимо создать реквизит Оклад
2. Создайте подчиненный ему справочник НалоговыеЛьготы.
3. Создайте Справочник Должности (2 уровня).
4. Создайте объект конфигурации Обработка с названием ЗаписьСправочника. Щелкните два раза по созданному объекту обработка. Добавьте на форму диалога (закладка Диалог) этой обработки два поля для ввода значений (значок Реквизит диалога на панели Редактора форм внизу). У первого поля будет идентификатор – ФИО, у второго – Оклад. Добавьте текстовое поле с заголовком «Введите ФИО и оклад сотрудника». Должно получиться вот так: Рис.1 Измените заголовок кнопки Выполнить на Записать. Перейдите на закладку Модуль. В теле процедуры «Выполнить» создайте процедуру записи элементов в справочник Сотрудники (см.теоретическую часть). Для того чтобы в теле процедуры обратиться к введенным в форму значениям ФИО и Оклада, необходимо использовать идентификаторы этих полей. Например, Спр.Наименование=ФИО, где ФИО- идентификатор поля для ввода фамилии на форме; СпрСотр = СоздатьОбъект("Справочник.Сотрудники"); СпрСотр.Новый(); СпрСотр.Наименование=ФИО; СпрСотр.Оклад=Оклад; СпрСотр.Записать(); (Процедура Выполнить запускается автоматически при нажатии кнопки Записать в режиме Конфигуратора. Это настраивается на закладке Дополнительно для кнопки. В поле Формула прописывается имя запускаемой процедуры).
После того как будет создана процедура, запустите режим Предприятие. В меню Операции выбрать пункт Обработки. Далее обработка ЗаписьСправочника. Откроется созданная вами форма (см. рис 1). С помощью этой формы создайте записи в справочнике сотрудники: • Иванов Иван Иванович, оклад 10000 • Петров Петр Петрович, оклад 12000 • Светлов Михаил Петрович, оклад 8000 • Цветков Антон Васильевич, оклад 5200 Проверьте результат выполнения обработки, открыв справочник Сотрудники.
5. Перейдите на форму списка справочника Сотрудники.
6. Добавьте на форму кнопку Поиск.
На вкладке дополнительно в поле формула для этой кнопки укажите вызов процедуры ПоискЭлемента().
Добавьте также поле для ввода Фамилии (идентификатор Реквизит) (см. рис.2).
Рис.2
Перейдите на закладку Модуль (для формы списка). Создайте там процедуру ПоискЭлемента, которая будет осуществлять поиск элемента в справочнике Сотрудники по введенной фамилии с выдачей сообщения о коде этого элемента.
Процедура ПоискЭлемента ()
СпрСотр=СоздатьОбъект("Справочник.Сотрудники");
Если СпрСотр.НайтиПоНаименованию(ФИО)=1 Тогда Предупреждение("Найденный элемент справочника "+ "имеет код "+СпрСотр.ТекущийЭлемент().Код);
Иначе Предупреждение("Элемент с заданным наименованием "+"не найден"); КонецЕсли;
КонецПроцедуры
7. Аналогичным образом создайте на форме еще одну кнопку Удалить. При нажатии на эту кнопку должно осуществляться удаление сотрудника с указанной в поле ФИО фамилией.
8. Создайте на форме еще одну кнопку Перебор. В модуле создайте процедуру, которая осуществит перебор всех сотрудников с выдачей соответствующего сообщения. Расширьте свою процедуру перебора: перебор должен осуществляться только по сотрудникам, оклад у которых больше заданного. Сумма оклада задается пользователем.
9. Создайте обработку, которая программным способом с использованием диалога для ввода значений заполнит иерархический справочник Должности следующими данными:
Руководители • Директор • Начальник отдела Служащие • Продавец • Администратор • Кассир Обслуживающий персонал • Техничка • Сантехник
10. Заполните подчиненный справочник НалоговыеЛьготы следующими данным в режиме Предприятие:
(владелец Петров Петр Петрович) • Льгота ветеранам • Льгота на детей (владелец Светлов Михаил Петрович) • Льгота афганцам
Для справочника Сотрудники создайте процедуру, которая осуществит перебор элементов подчиненного справочника НалоговыеЛьготы (элемент-владелец задается пользователем на форме справочника).
|