- •Атрибуты справочников
- •Типы данных
- •Иерархические справочники
- •Подчиненные справочники
- •Табличные части (только версия 8.0)
- •Сравнение справочников с другими объектами
- •Удаление элемента справочника
- •Перебор элементов справочника
- •Статический фильтр (только версия 7.7)
- •Форма элемента и форма группы
- •Сортировка
- •Программное создание групп
- •Транзакции
- •Программное создание группы
- •Информация о текущем элементе
- •Периодические реквизиты
- •Проведение документов
- •Цикл по реквизитам справочника
- •Создание объектов конфигурации
- •Контрольная работа
Подчиненные справочники
Между справочниками может быть установлено отношение подчиненности. В терминах реляционных баз данных, между таблицами устанавливается связь "один-ко-многим". В этом случае каждый элемент подчиненного справочника будет связан с одним из элементов справочника-владельца.Иногда можно сказать, что элементы одного справочника принадлежат элементам другого. Например, в системе может быть справочник НалоговыеЛьготы. Тогда его можно сделать подчиненным справочнику Сотрудники. Это означает, что "Сотрудник владеет налоговыми льготами".
Справочник Сотрудники |
Справочник НалоговыеЛьготы |
|
(владелец Петров Петр Петрович)
|
|
(владелец Светлов Михаил Петрович)
|
Табличные части (только версия 8.0)
В версии 8.0 появилась возможность для элемента справочника иметь несколько табличных частей. Эту возможность рекомендуется использовать для отражения информации, связанной с данным элементом, но не имеющей собственной объектной сущности (для которых рекомендуется завести подчиненный справочник). Например, для спр. Товары может быть заведена табличная часть ЕдиницыИзмерения, для справочника Сотрудники могут быть заведены табличные части Образование и СоставСемьи. Работа с табличными частями похожа на работу с подчиненными справочниками за исключением того, что табличные части не могут быть типами, а значит уже будет нельзя создать реквизит типа Образование.
Сравнение справочников с другими объектами
Объект |
Сходства |
Различия |
Константы |
хранит значение, сохраняется в базе данных |
Справочник хранит не одно значение, а целый список однородных объектов. |
Документы |
сохраняется в базе данных, имеет реквизиты, документы могут быть подчиненными друг другу |
Справочник хранит нормативно-справочную информацию, а документы отражают события реального мира. Обычно значения реквизитов документов выбираются из справочников. Документ обычно проводится, документ обязательно имеет дату и время, документ может содержать табличную часть, чего нет в справочниках (в версии 8.0 справочники и документы могут иметь по несколько табличных частей). Справочники могут быть многоуровневыми, в справочнике могут быть периодические реквизиты, чего нет в документах (в версии 8.0 периодических реквизитов нет, а есть периодические регистры сведений). |
Перечисления |
хранится в БД, хранит список значений |
Множество значений в справочник вводит пользователь в режиме Предприятие, а для перечислений список значений задается разработчиком в режиме Конфигуратор. Перечисления обычно используются в операторах Если. |
ТаблицаЗначений |
имеет строки и колонки (не хранится в БД) |
ТаблицаЗначений предназначена для хранения промежуточных данных в памяти компьютера, возникающих во время работы программы. Таблица значений может хранить разнородные объекты, а в справочнике все элементы одного типа. Таблицы значений не могут быть многоуровневыми или подчиненными друг другу. |
СписокЗначений |
хранит список значений (не сохраняется в БД) |
Список значений может хранить разнородные объекты, а в справочнике все элементы одного типа |
Основы программирования
Ссылка на справочник Для работы со справочником из какого-нибудь модуля требуется сначала создать ссылку на этот справочник.
7.7 |
СпрСотр = СоздатьОбъект("Справочник.Сотрудники"); СпрДолж = СоздатьОбъект("Справочник.Должности"); |
8.0 |
СпрСотр = Справочники.Сотрудники; СпрДолж = Справочники["Должности"] |
Создание и запись нового элемента
7.7 |
СпрСотр.Новый(); СпрСотр.Наименование = "Иванов Иван Иванович"; СпрСотр.Оклад = 5000; СпрСотр.Записать(); |
8.0 |
НовЭл = СпрСотр.СоздатьЭлемент(); НовЭл.Наименование = "Иванов Иван Иванович"; НовЭл.Оклад = 5000; НовЭл.Записать(); |
Поиск элемента справочника
7.7 |
//например, в приказе об увольнении СпрСотр.НайтиЭлемент(Сотрудник); СпрСотр.НайтиПоКоду(123); СпрСотр.НайтиПоНаименованию("Иванов Иван Иванович"); СпрСотр.НайтиПоРеквизиту("Оклад", 5000); //если элемент найден, он становится текущим и его можно прочитать так: Если СпрСотр.НайтиПоНаименованию("Иванов Иван Иванович")=1 Тогда ........НайденныйСотр = СпрСотр.ТекущийЭлемент(); КонецЕсли; |
8.0 |
//в версии 8.0 если элемент найден, то он возвращается, иначе возвращается Неопределено НайденныйСотр = СпрСотр.НайтиПоКоду(123); НайденныйСотр = СпрСотр.НайтиПоНаименованию("Иванов Иван Иванович"); НайденныйСотр СпрСотр.НайтиПоРеквизиту("Оклад", 5000); //далее нужно проверить найденное значение НайденныйСотр = СпрСотр.НайтиПоНаименованию("Иванов Иван Иванович"); Если НайденныйСотр = Неопределено Тогда .....//элемент не найден КонецЕсли; |
