Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Занятие 10 - Назначение справочников.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
282.17 Кб
Скачать

Сортировка

В форме списка справочника элементы могут быть отсортированы в различном порядке: по коду, по наименованию или по любому реквизиту, у которого в Конфигураторе установлен флажок Сортировка. Задать тип сортировки можно программно методом Сортировка (Способ, ФлагРазрешенияИзменения)

7.7

Процедура ПриОткрытии() ...... Сортировка("Код",0); //сортировка по коду, пользователь изменить не может КонецПроцедуры

8.0

Процедура ПриОткрытии() ......СправочникСписок.Порядок.Установить("Наименование Asc, Карточка Asc"); ......//вопрос читателям: как запретить пользователю изменять порядок сортировки? КонецПроцедуры

Отбор

В форме списка справочника элементы могут быть отфильтрованы, т.е. пользователю будут показаны только нужные элементы. Программно установить отбор можно методом УстановитьОтбор (Реквизит, Значение). Для этого у реквизита должен быть установлен флажок "Отбор по реквизиту" в Конфигураторе .

7.7

Процедура ПриОткрытии() ...... УстановитьОтбор("Год",1980); КонецПроцедуры

8.0

Процедура ПриОткрытии() .......СправочникСписок.Отбор.Карточка.Установить(Год,1980); .......//вопрос читателям: как запретить пользователю изменять условия отбора? КонецПроцедуры

Статический фильтр (только версия 7.7)

В 1С 7.7 нельзя установить отбор по периодическому реквизиту или по нескольким реквизитам одновременно (сложный фильтр). В этом случае выходом из положения может быть метод ИспользоватьСписокЭлементов. Этому методу нужно передать список элементов, которые должны быть показаны. Предварительно этот список нужно сформировать.

7.7

Процедура ПоказатьРаботающихПлотников()

СписокЭлементов = создатьОбъект("СписокЗначений"); СпрСотр = СоздатьОбъект("Справочник.Сотрудники"); СпрСотр.ИспользоватьДату(РабочаяДата()); СпрСотр.ВыбратьЭлементы(); Пока СпрСотр.ПолучитьЭлемент()=1 Цикл .....Если (СпрСотр.Родитель = группаРаботающие) И (СпрСотр.Должность=длжПлотник) Тогда ...........СписокЭлементов.ДобавитьЗначение(СпрСотр.ТекущийЭлемент()); .....КонецЕсли; КонецЦикла; ИспользоватьСписокЭлементов(СписокЭлементов);

КонецПроцедуры

8.0

 

Форма элемента и форма группы

Если справочник имеет сложную структуру, тогда его элементы удобнее редактировать в отдельном окне, а не в списке. Ниже приведена форма элемента справочника Сотрудники.

В форме элемента справочника также есть предопределенные процедуры (события):

События

Описание

ПриОткрытии()

Вызывается при открытии формы элемента справочника. Можно задать начальные значения для переменных, проверить права пользователя на открытие данного элемента справочника и т.д.

ПриЗакрытии()

Вызывается при закрытии формы элемента справочника.

ПриЗаписи()

Вызывается при записи элемента справочника. В этой процедуре можно проверить вводимые данные на наличие ошибок.

Пример, справочник Сотрудники

Процедура ПриЗаписи ....Если Категория.Выбран()=0 Тогда .........Предупреждение("Не указана категория сотрудника!"); .........СтатусВозврата(0); .....КонецЕсли; КонецПроцедуры

ВводНового()

Вызывается при интерактивном вводе нового элемента справочника. В этой процедуре можно проверить права пользователя на создание новых элементов справочника, а также задать начальные значения реквизитов.

Следует заметить, что вверсии 8.0 список событий всех объектов значительно расширен.

Создание и запись элемента

Программное создание элемента справочника

Ниже в справочник Сотрудники программно добавляется новый сотрудник в группу Работающие. В справочнике заполняется поля Наименование, ДатаПриема и пара периодических реквизитов.

7.7

СпрСотр = СоздатьОбъект("Справочник.Сотрудники"); СпрСотр.ИспользоватьРодителя(грпРаботающие); СпрСотр.Новый(); СпрСотр.Наименование = "Иванов Иван Иванович"; СпрСотр.ДатаПриема = '01.01.2002'; СпрСотр.Записать(); //установка периодических реквизитов возможна только после записи элемента СпрСотр.Категория.Установить (СпрСотр.ДатаПриема, ктгСовместители); СпрСотр.Должность.Установить (СпрСотр.ДатаПриема, длжПлотник); а можно сделать красивее:

СпрСотр = СоздатьОбъект("Справочник.Сотрудники"); СпрСотр.ИспользоватьРодителя(грпРаботающие); СпрСотр.ИспользоватьДату(ДатаПриема); //внимание! СпрСотр.Новый(); СпрСотр.Наименование = "Иванов Иван Иванович"; СпрСотр.ДатаПриема = '01.01.2002'; //доступ к периодическим реквизитам становится такой же, как к обычным СпрСотр.Категория = ктгСовместители; СпрСотр.Должность = длжПлотник; СпрСотр.Записать();

 

8.0

Нов = Справочники.Сотрудники.СоздатьЭлемент(); Нов.Родитель = грпРаботающие; Нов.Наименование = "Иванов Иван Иванович"; Нов.ДатаПриема = '01.01.2002'; Нов.Записать(); //в версии 8.0 нет периодических реквизитов