- •Атрибуты справочников
- •Типы данных
- •Иерархические справочники
- •Подчиненные справочники
- •Табличные части (только версия 8.0)
- •Сравнение справочников с другими объектами
- •Удаление элемента справочника
- •Перебор элементов справочника
- •Сортировка
- •Статический фильтр (только версия 7.7)
- •Форма элемента и форма группы
- •Программное создание групп
- •Транзакции
- •Программное создание группы
- •Информация о текущем элементе
- •Периодические реквизиты
- •Проведение документов
- •Цикл по реквизитам справочника
- •Создание объектов конфигурации
- •Контрольная работа
Сортировка
В форме списка справочника элементы могут быть отсортированы в различном порядке: по коду, по наименованию или по любому реквизиту, у которого в Конфигураторе установлен флажок Сортировка. Задать тип сортировки можно программно методом Сортировка (Способ, ФлагРазрешенияИзменения)
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 нет периодических реквизитов |
