Опубликован: 06.12.2011 | Уровень: для всех | Доступ: платный
Лекция 5:

Справочники

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >
Аннотация: Лекция посвящена разработке иерархических и подчиненных справочников, реализации дополнительных программных механизмов справочников.

О различных видах справочников

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

В частности, в предыдущей лекции мы создавали обычные справочники – такие справочники содержат простые списки элементов. Однако, справочники в 1С:Предприятие 8 могут иметь более сложную структуру.

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

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

Примером такого справочника является справочник, хранящий списки товаров, материалов, услуг. Обычно такой справочник носит название Номенклатура. Как правило, подобный справочник имеет множество групп – например – Товары – для хранения записей о товарно-материальных ценностях, и Услуги – для хранения списков услуг.

Второй вид иерархии – это иерархия элементов. Хорошим примером справочника, для которого естественна иерархия элементов, является справочник для хранения сведений о подразделениях организаций. Такой справочник обычно так и называется – Подразделения. Логика иерархии элементов заключается в том, что отдельные элементы справочника, описывающие отдельные подразделения организации, могут являться родителями для других элементов – так же подразделений. Например, подразделение Администрация вполне может включать в себя подразделения Бухгалтерия, Отдел кадров и так далее.

Справочники, в сущности, являются хранилищами аналитических признаков учета. Например, в случае со справочником Номенклатура можно организовать учет таким образом, чтобы иметь сведения об остатках каких-либо номенклатурных позиций на складе, об их стоимости. В случае со справочником, поддерживающим иерархию элементов, любой элемент справочника можно использовать как аналитический "разделитель" учета (то есть, например, выбирать данные элементы при заполнении табличных частей других объектов, например, документов). А вот при иерархии групп и элементов использовать в качестве аналитического разделителя группу не получится.

Если родительские отношения существуют внутри справочника, такие справочники называются иерархическими. Существует еще один вид взаимоотношений между справочниками, который называется подчинением. Предположим, у нас имеется справочник Контрагенты, содержащий список организаций, с которыми наша организация имеет какие-то взаимоотношения. Каждый из контрагентов, описанных в этом справочнике, имеет некоторое количество контактных лиц – представителей контрагента. Можно сказать, что каждый представитель контрагента "принадлежит" определенному контрагенту. Такие взаимоотношения между справочниками реализуются при помощи механизма указания владельцев справочника и настройки подчинения.

Рассмотрим работу с иерархическими справочниками.

Иерархические справочники

Создадим новый справочник Единицы измерения, зададим следующие его параметры:

Имя: ЕдиницыИзмерения

Длина наименования: 100 символов

Подсистемы: БухгалтерскийУчет, ОперативныйУчетМатериалов

Это будет очень простой справочник, стандартный реквизит которого Наименование будет использоваться для хранения информации о наименовании единицы измерения.

Теперь создадим очередной справочник – Номенклатура. Зададим следующие параметры:

Имя: Номенклатура

Подсистемы: БухгалтерскийУчет, ОперативныйУчетМатериалов

На вкладке окна редактирования объекта Иерархия, рис. 4.1., установим следующие параметры:

Настройка иерархического справочника

Рис. 4.1. Настройка иерархического справочника

Иерархический справочник: Установлено

Вид иерархии: Иерархия групп и элементов.

Этот параметр может принимать значение Иерархия элементов. В нашем случае справочник сможет содержать отдельные элементы, собранные, в зависимости от их вида, в группы. Эту структуру можно сравнить с папками и файлами в файловой системе компьютера. Группы – это папки, отдельные элементы – это файлы.

На вкладке Данные, рис. 4.2., добавим следующие реквизиты:

ЕдиницаИзмерения: Тип СправочникСсылка.ЕдиницыИзмерения.

Услуга: Тип Булево, Использование: Для группы и элемента. Эта установка позволит задавать данный реквизит и для элементов и для групп.

Заполнять из данных заполнения: Истина

Отдельные группы нашего справочника планируется использовать для хранения исключительно услуг, и подобная установка (в частности, истинность параметра Заполнять из данных заполнения) позволит нам реализовать автоматический механизм заполнения данного реквизита для элементов, входящих в группы.

Длина наименования: 100

Состав реквизитов справочника Номенклатура

увеличить изображение
Рис. 4.2. Состав реквизитов справочника Номенклатура

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

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >
Лариса Дятчина
Лариса Дятчина

Код 

&НаКлиенте

Процедура ОсновноеКонтактноеЛицоПриИзменении(Элемент)

Если НЕ ПроверитьЗаполнениеРеквизита() Тогда

 Сообщить("Выбранное контактное лицо, "+Объект.ОсновноеКонтактноеЛицо+",не работает у контрагента.");

КонецЕсли;

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

 

&НаСервере

Функция ПроверитьЗаполнениеРеквизита()

 Возврат (Объект.ОсновноеКонтактноеЛицо.ПредставительРаботает);  

КонецФункции

&НаСервере

Процедура УстановитьНомерПредставителя()

 

 Объект.ТелефонКонтактногоЛица=Объект.ОсновноеКонтактноеЛицо.КонтактныеСведения;

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

При проверке выдает ошибку:

{Справочник.Контрагенты.Форма.ФормаСписка.Форма(12,11)}: Переменная не определена (Объект)
 Возврат (<<?>>Объект.ОсновноеКонтактноеЛицо.ПредставительРаботает);   (Проверка: Сервер)
{Справочник.Контрагенты.Форма.ФормаСписка.Форма(17,2)}: Переменная не определена (Объект)
 <<?>>Объект.ТелефонКонтактногоЛица=Объект.ОсновноеКонтактноеЛицо.КонтактныеСведения; (Проверка: Сервер)
{Справочник.Контрагенты.Форма.ФормаСписка.Форма(17,32)}: Переменная не определена (Объект)
 Объект.ТелефонКонтактногоЛица=<<?>>Объект.ОсновноеКонтактноеЛицо.КонтактныеСведения; (Проверка: Сервер)
{Справочник.Контрагенты.Форма.ФормаСписка.Форма(6,41)}: Переменная не определена (Объект)
 Сообщить("Выбранное контактное лицо, "+<<?>>Объект.ОсновноеКонтактноеЛицо+",не работает у контрагента."); (Проверка: Тонкий клиент)

 

работаю на версии 1С:Предприятие 8.3 (8.3.10.2650)

максим матасов
максим матасов