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

Подчиненные справочники

Между справочниками может быть установлено отношение подчиненности. В терминах реляционных баз данных, между таблицами устанавливается связь "один-ко-многим". В этом случае каждый элемент подчиненного справочника будет связан с одним из элементов справочника-владельца.Иногда можно сказать, что элементы одного справочника принадлежат элементам другого. Например, в системе может быть справочник НалоговыеЛьготы. Тогда его можно сделать подчиненным справочнику Сотрудники. Это означает, что "Сотрудник владеет налоговыми льготами".

Справочник Сотрудники

Справочник НалоговыеЛьготы

  • Иванов Иванов Иванов

  • Петров Петр Петрович

  • Светлов Михаил Петрович

  • Цветков Антон Васильевич

(владелец Петров Петр Петрович)

  • Льгота ветеранам

  • Льгота на детей

  • Иванов Иванов Иванов

  • Петров Петр Петрович

  • Светлов Михаил Петрович

  • Цветков Антон Васильевич

(владелец Светлов Михаил Петрович)

  • Льгота афганцам

Табличные части (только версия 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);

//далее нужно проверить найденное значение

НайденныйСотр = СпрСотр.НайтиПоНаименованию("Иванов Иван Иванович"); Если НайденныйСотр = Неопределено Тогда .....//элемент не найден КонецЕсли;