Справочники
Справочники хранят в себе одинаковые по структуре данные. Например, справочник товаров или справочник должностей. Справочники это ссылочный тип данных, на любой элемент справочника можно сослаться, в документах, константах или вообще в каких либо реквизитах.
Структура справочника
Справочник обычно описываются следующим набором данных:
Предопределенные реквизиты
У каждого справочника есть номер и наименование. В принципе их можно отключить, указав длину 0. Так же код может быть числовым или текстовым, если код текстовый для удобства сортировки система дополняет код лидирующими нулями на всю длину кода, например если у справочника указана длина кода 9 и справочнику был присвоен код 3 то система дополнит нулями до такого вида: "000000003". Также в случае если имеется распределенная база в код обычно добавляется префикс той базы в которой был создан элемент, например: "ЦН0000003". Нужно учитывать эту особенность если вы соберетесь указывать числовой код, этот объект не сможет корректно работать в распределенной базе. У справочника есть и другие предопределенные реквизиты:
Иерархичность.
Иерархия это способность выводить справочник в виде дерева. Эта возможность бывает очень удобной, в случаях когда в справочнике содержится много информации. В таких случаях бывает полезно разложить номенклатуру "по полочкам". При включении иерархичности у справочника, добавляются два стандартных реквизита ЭтоГруппа и Родитель . Манипулируя значением реквизита Родитель, можно переназначать родителей элемента. Строится иерархия на группах, в эти группы могут входить другие элементы или другие группы. Аналогию можно провести с проводником windows или с большинством файловых систем если вам будет удобно: есть папки в которых могут быть как файлы так и папки в которых в свою очередь тоже могут быть и файлы и папки итд. Иерархия может работать и без групп. То есть родителями могут выступать другие элементы справочника. Такой вид иерархии называется иерархия элементов. Если мы настроили иерархию, у нас появляется возможность настраивать, для какого типа могут использоваться реквизиты, для групп, элементов, или и для того и для другого. Иерархия настраивается на закладке Иерархия свойств справочника.
Подчиненность
Подчиненность это возможность сделать несколько записей одного справочника уникальными для одной записи другого справочника (если вы знакомы с основами реляционных баз даных, это связь, один ко многим ) . Например: у одного контрагента, может быть много договоров, но это будут только его договора, у второго контрагента будет свой набор договоров. В этом случае справочник договоры подчинен справочнику контрагенты. Подчинение справочника реализовано предопределенным реквизитом Владелец , следовательно у одной конкретно взятой записи справочника, может быть только один владелец. В то же время у одного справочника может быть несколько владельцев. Владельцами могут быть не только справочники, а также планы обмена, планы видов характеристик, планы счетов, планы видов расчета. Также можно указать вид объекта для подчинения, доступны элементы, группы или и то и другое. Если для справочника определены подчиненные справочники и у элемента справочника не назначена основная форма, то при открытии элемента этого справочника в режиме предприятия, в управляемых формах система автоматически добавит панель для открытия подчиненных справочников с фильтром на поле владелец по текущему элементу. Такое поведение можно настроить и на уже существующих формах. (скрин)
Ввод по Строке
При выборе ссылочных данных в 1С есть возможность выбрать элемент справочника или документ, набирая ключевые реквизиты объекта который мы хотим найти, выглядит это следующим образом: пользователь, набирает «масло моторное» в поле ввода с типом "Справочник.Номенклатура" и нажимает ввод. 1С находит все записи которые начинаются с названия со слов "масло моторное" и показывает их в виде выпадающего списка под полем где пользователь вводил текст. Такой же ввод возможен и для документов. Это поведение системы можно настроить на закладке «Формы». Там есть поле Ввод по строке , по умолчанию для справочников указана возможность поиска по коду и наименованию, но туда можно добавить и свои реквизиты, для того, что бы добавить этот реквизит, он должен быть индексирован и реквизит должен быть примитивного типа.
Предопределенные элементы справочников.
Предопределенные элементы справочников определяются в конфигураторе на закладке Прочие . При создании элемента указывается имя и наименование предопределенного элемента. Имя и будет являться идентификатором для обращения к этому предопределенному элементу, поэтому к имени предъявляются такие же требования как и к другим идентификаторам(не может начинаться с числа, нельзя использовать пробелы и тд). Наименование может быть любым, его пользователь и увидит в справочнике и сможет его при желании изменить. Пользователь не может изменить имя который был указано при создании этого элемента, зато он может удалить предопределенный элемент.(надо бы найти номер релиза когда это стало возможным). Обращение к предопределенным элементам происходит так:
Таким образом, очень удобно ссылаться на предопределенные элементы из встроенного языка или опираться на них при построении каких то условий. Предопределенные элементы справочников можно использовать в схемах СКД и запросах.
Важно. Контроль за удалением предопределенных элементов лежит на плечах разработчиков, а не платформы.
Для предопределенных элементов справочников, стандартный реквизит Предопределенный имеет значение Истина. Это свойство которое доступно только на чтение, но это не означает, что нельзя "обычный" элемент справочника сделать предопределенным и наоборот. В последних релизах 8.3FIXME(Надо узнать в каких именно), появилась возможность переопределять предопределенные элементы изменяя свойство ИмяПредопределенныхДанных . Например, вот так можно сделать элемент не предопределенным:
И наоборот указав в свойстве ИмяПредопределенныхДанных имя предопределенного элемента справочника, можно сделать его предопределенным. У иерархических справочников возможно указывать предопределенные группы. Предопределенные элементы нельзя создавать у подчиненных справочников. В пользовательском режиме предопределенный элемент отличается, от обычного, следующим образом(показать скрин).
Подсказка. Предопределенные элементы часто используют для того, что бы избавиться в коде от конструкций вида: НайтиПоКоду и НайтиПоНаименованию . Использование этих методов считается дурным тоном, так как наименование и код справочника достаточно часто изменяются. Обычно поступают следующим образом: Создают справочник, например Настройки с единственным реквизитом Значение . После этого в конфигураторе добавляют предопределенный элемент с нужным названием а в режиме 1с Предприятие, задают его значение. Теперь вместо того что бы писать в коде:
или что еще хуже
Можно просто указать:
Классы для работы со справочниками.
Все классы справочника можно увидеть в ветке Прикладные объекты –> Справочники .
Cправочники это элементы которые хранятся в базе данных, считается очевидным, что обращение к любому из классов возможно только на сервере.
Справочник менеджер
Справочник менеджер – можно получить с помощью переменных глобального контекста:
Этот класс служит для:
Получать пустые ссылки:
И много еще разных возможностей которые можно наблюдать в синтаксис помощнике в ветке: Прикладные объекты – >Справочники – СправочникМенеджер.<ИмяСправочника>
Справочник ссылка
Справочник ссылка – самый часто используемый тип. Используется для чтения данных справочника. Его можно получить с помощью НайтиПоНаименованию , НайтиПоКоду и др методов класса СправочникМенеджер . Так же его можно получить с помощь класса Выборка и этот тип данных хранится в реквизите Cсылка объекта класса Справочник объект . В этом классе нам доступны все реквизиты справочника, табличные части и все стандартные реквизиты. Абсолютно все свойства этого класса нам доступны только на чтение. Для того что бы изменять реквизиты справочника нам нужен класс Справочник Объект . Получить его можно с помощью метода Получить Объект() .
Справочник Объект
Класс Справочник Объект отличается от класса Справочник Ссылка не многим, основная его функция обеспечить возможность изменения элемента справочника. Запись происходит с помощью метода Записать()
Справочник Выборка
Справочник Выборка получается с помощью методов Выбрать и Выбрать Иерахически он позволяет обойти элементы справочника в цикле, с помощью метода Следующий() .
Популярные приемы работы со справочниками
Поиск по наименованию.
Несмотря на то, что неоднократно рассматривается поиск элемента справочника по наименованию, "зашивать" в код значения из базы данных считается дурным тоном.
Для поиска по наименованию используется функция НайтиПоНаименованию() . Для использования этого метода необходимо указать наименование по которому будет происходить поиск. Если поиск должен проходить по точному соответствию с указанной строкой то вторым параметром, нужно указать Истина, иначе поиск будет проходить по первым буквам указанного шаблона поиска, то есть если в качестве строки для поиска указать "Слон" то под шаблон попадут и "Слон" и "Слон игрушечный" и "Слонопотам". Поиск можно ограничить определенной группой, если справочник иерархический или владельцем, если справочник подчиненный. Если значение не найдено, метод вернет пустую ссылку того типа справочника для которого производился поиск.
Поиск по коду
Для поиска по коду используется функция НайтиПоКоду() . Для использования этого метода необходимо в параметре "Код" указать код, по которому будет производиться поиск. Если в качестве кода указывается полный путь с учетом иерархии (уровни справочника разделяются символом "/"), то второй параметр поиск по полному коду, необходимо установить в Истина. Например: Номенклатура "Слонопотам" с кодом "001142" находится в папке "Мягкие Игрушки" с кодом "000826" которая находится в папке "Игрушки" с кодом 000375. Тогда можно найти ее с помощью вот такой строки
Или можно искать сразу:
Поиск можно ограничить определенной группой, если справочник иерархический или владельцем, если справочник подчиненный. Если значение не найдено, метод вернет пустую ссылку того типа справочника для которого производился поиск. Поиск может осуществляться и по реквизиту с помощью одноименного метода, главное условие реквизит должен быть индексирован.
Выборка
Выборка позволяет обходить в цикле элементы справочника. Для иерарахических справочников доступна выборка по родителю, для подчиненных по владельцу. Для любого вида справочника возможно указать отбор, которому будут соответствовать элементы в выборке и поле по которому выборка будет упорядочена. Работает выборка следующим образом:
При использовании метода Следующий() в классе выборка, текущим устанавливается следующий элемент из текущей выборки. Если в выборка спозиционировалась на определенном элементе, она возвращает Истина, иначе Ложь. Для класса Справочник Выборка доступны все поля и табличные части, которые определены для текущего справочника, а так же есть свойство Ссылка которое позволяет получить ссылку на текущий элемент справочника из выборки. Для того что бы при выборке учитывалась иерархия справочника, необходимо использовать метод ВыбратьИерархически() .
Программное создание элементов справочника
Элементы и группы справочников, можно создавать и не посредственно из программного кода. Для этого используется следующий код:
Группа справочника создается аналогично с помощью метода СоздатьГруппу() В том случае, если у справочника установлено свойство Автонумерация код указывать не нужно, он устанавливается автоматически.
Проверка переменной с типом СправочникСсылка на заполненность
Иногда возникает необходимость проверить заполнено ли значение с типом «Справочник.Ссылка». Такая необходимость может возникнуть, когда реквизит какого либо объекта имеет тип «Справочник.Ссылка» или когда вы например ищете элемент справочника по коду или наименованию, или в ряде других случаев, когда метод возвращает пустую ссылку на справочник. Есть несколько способов это сделать:
Только для сервера
Проверка элемента справочника на вхождение в какую либо группу или подчинение элементу
Когда мы говорим о проверке подчиненности, необходимо понимать, что все методы справедливы не только для групп, но и для элементов, если у справочника установлен вид иерархии "Иерархия элементов". Здесь возможно несколько вариантов: если у нас есть группа и нам необходимо знать если ли именно в ней и нигде иначе определенный элемент справочника, то можно сравнить предопределенный реквизит Родитель нужного нам элемента справочника с ссылкой на группу, например:
Если справочник многоуровневый и нужно знать есть ли элемент в этой группе или где то в подчинненых группах то можно воспользоваться методом "ПринадлежитЭлементу()" этот метод вернет Истина если элемент содержится в текущей или любой подчиненной группе. Например в этом случае
условие будет истинным.
СправочникСсылка <> СправочникОбъект
При работе со справочниками очень важно понимать, что во всех реквизитах, выборках и тд, мы чаще всего работаем с типом СправочникСсылка и этот тип позволяет получить любую информацию которая находится в его реквизитах, но не поддерживает запись. Для изменения реквизитов справочника и записи следует использовать тип СправочникОбъект. Преобразовать ссылку в объект можно с помощью метода ПолучитьОбъект() Например:
Проверка на то что ссылка является ссылкой на справочник
Проверить то что справочник является ссылкой можно очень просто, с помощью одной строки:
Где СсылкаНаЭлементСправочника проверяемая ссылка, эта строка вернет Истина если проверяемая ссылка является ссылкой на какой либо элемент справочника.
Справочники
Справочники — это прикладные объекты конфигурации. Они позволяют хранить в информационной базе данные, имеющие одинаковую структуру и списочный характер. Это может быть, например, список сотрудников, перечень товаров, список поставщиков или покупателей.
Структура справочника
Каждый элемент справочника характеризуется кодом и наименованием. Система поддерживает режим автоматической нумерации элементов, при котором она самостоятельно может генерировать код для нового элемента справочника. Кроме этого система позволяет осуществлять контроль уникальности кодов справочника, не разрешая создавать элементы с одинаковыми кодами:
Помимо кода и наименования, каждый элемент справочника, как правило, содержит некоторую дополнительную информацию, которая подробно описывает этот элемент. Например, для товара это может быть информация об артикуле, упаковке и т. п. Набор такой информации является одинаковым для всех элементов конкретного справочника, и для ее хранения служат реквизиты справочника:
Кроме этого, каждый элемент справочника может содержать некоторый набор информации, которая одинакова по своей структуре, но различна по количеству, для разных элементов справочника. Например, для каждого сотрудника в справочнике Физические лица это может быть контактная информация или информация о составе семьи, образовании. Для хранения подобных данных служат табличные части справочника:
Справочники могут поддерживать иерархическое расположение элементов. Например, в справочнике Номенклатура могут быть созданы группы: Бытовая техника, Обувь, Продукты и т. д., в которых располагаются элементы, относящиеся к этим группам. Кроме того группы справочника могут включать в себя и другие группы, создавая тем самым многоуровневую иерархическую структуру.
В справочниках возможен и другой вид иерархии, при котором элементы справочника будут относиться не к группам, а к другим элементам этого же справочника. Такой вид иерархии может использоваться, например, при создании справочника Задачи, где одна задача может включать в себя несколько других задач.
Разные справочники могут находиться в состоянии подчинения, т. е. элементы одного справочника могут быть подчинены элементам или группам другого справочника. Например, справочник Кассы может быть подчинен справочнику Организации. Тогда при оформлении кассовых документов для некоторой организации можно будет выбрать кассу не среди всех имеющихся в программе касс, а среди касс, существующих только в этой организации:
Справочники допускают также создание предопределенных элементов, которые существуют в справочнике всегда, вне зависимости от действий пользователя. Такие элементы справочника создаются разработчиком при разработке прикладного решения и не могут быть удалены или перемещены пользователем.
Например, если в основном прикладное решение будет внедряться на предприятиях одного государства, России, в справочник Страны мира сразу же можно добавить предопределенный элемент Россия, поскольку он понадобится подавляющему большинству пользователей.
Формы справочника
Для того чтобы пользователь мог просматривать и изменять данные, содержащиеся в справочнике, система поддерживает несколько форм представления справочника. Система может автоматически генерировать все нужные формы справочника. Наряду с этим разработчик имеет возможность создать собственные формы, которые система будет использовать вместо форм по умолчанию:
Форма списка
Для просмотра данных, содержащихся в справочнике, используется форма списка. Она позволяет выполнять навигацию по справочнику, добавлять, помечать на удаление и удалять элементы и группы справочника, перемещать элементы и группы. Форма списка может представлять данные в иерархическом и не иерархическом виде и позволяет выполнять сортировку и отбор отображаемой информации по нескольким критериям:
Форма элемента
Для просмотра и изменения данных отдельных элементов справочника используется форма элемента. Как правило, она представляет данные в удобном для восприятия и редактирования виде:
Форма группы
Система поддерживает отдельный вид формы для групп справочника. Это связано с тем, что, как правило, состав информации, относящейся к группе справочника, намного меньше, чем состав данных, имеющих отношение к отдельным элементам справочника:
Форма выбора, форма выбора группы
При различных действиях пользователя в прикладном решении возникает необходимость выбора конкретных элементов справочников. Это может потребоваться, например, при создании приходной накладной, в которой должны быть перечислены определенные товары. В этом случае система использует форму выбора справочника, которая, обычно, содержит минимальный набор информации, необходимой для выбора того, или иного элемента:
Кроме всех перечисленных форм, система поддерживает еще форму выбора группы справочника, предназначенную для выбора только среди групп, содержащихся в справочнике.
Макеты
Справочнику могут быть сопоставлены несколько макетов, содержащих данные, необходимые для обеспечения работы справочника:
Макеты могут использоваться для формирования печатных форм справочника или для отображения дополнительной информации, имеющей отношение к справочнику.
Справочники в 1С
Справочники в 1С используются для работы с постоянной или условно постоянной информацией, но, в отличие от констант, данная информация может содержать множество значений. К примеру, если мы разрабатываем конфигурацию для учета движения товаров на складе, то такой информацией может быть вид товара, информация о самих товарах, информация о складах и т.п. Таким образом, справочники необходимы для хранения аналитики учета (то, по чему в дальнейшем будет осуществляться анализ, например, сколько товаров продано). В пользовательском режиме работа осуществляется с элементами справочника. Именно элементы справочника и являются объектами аналитики (именно они и будут анализироваться). Например, у справочника Товары могут быть элементы «Гвозди», «Хлеб» и «Молоко».
Элементы справочника создают операторы в пользовательском режиме 1С. В дальнейшей своей работе они могу использовать тот или иной созданный ранее элемент справочника. Например, элементы справочника Товары могут использоваться в отображении прихода или расхода товара в соответствующих документах.
По умолчанию у любого справочника имеется два реквизита — это Код и Наименование. Это так называемые стандартные реквизиты. Наименование обычно заполняет оператор, а код заполняется автоматически. Иногда стандартных реквизитов Код и Наименование бывает достаточно для работы, но чаще всего прикладная задача требует хранения вспомогательной информации. Для этого создаются реквизиты справочника, позволяющие хранить любую дополнительную информацию об элементе справочника.
Применительно к товарам это может быть артикул, полное наименование, наименование для продажи, вид товара и т.п. Еще новая возможность справочников (в 1С 7.7. этого нет) — это возможность создавать табличные части, в которых хранится однотипная информация, количество которой может быть изменчивым. Например, для товара это могут быть какие-то дополнительные свойства.
Реквизитов и табличных частей может быть неограниченное количество.
Создать новый справочник в 1С достаточно просто. Для этого необходимо зайти в конфигуратор 1С, открыть окно конфигурации, выделить ветвь Справочники, вызвать правой кнопкой мышки контекстное меню, где выполнить команду Добавить.
После этого откроется конструктор справочника, где на закладке «Основные» необходимо ввести имя справочника.
На закладке Данные можно задать длину кода и наименования, тип кода (число или строка) и основное представление элемента справочника (в виде кода или в виде строки).
А также можно создать необходимые реквизиты и табличные части.
В отличие от наименования, код может элементу справочника присваиваться автоматически, если установлен флаг Автонумерация на закладке нумерация.
Реквизиты справочников 1С
Реквизиты справочников 1С создаются на закладке Данные в окне реквизитов.
В качестве реквизитов справочника могут выступать, как примитивные типы, так и ссылочные. Например, мы уже создали справочник ВидыТоваров, а сейчас создадим справочник Товары, где будут реквизиты Артикул (тип Строка) и ВидТовара (ссылка на справочник ВидыТоваров).
В режиме «1С: Предприятия» это будет выглядеть следующим образом.
Обращаю внимание, на что влияет свойство «Основное представление» (закладка Данные конструктора справочника). Если у нас основное представление в виде наименования, то представление элемента справочника в каком-либо реквизите будет в виде наименование этого элемента, как на рисунке представлен элемент справочника ВидыТоваров в реквизите справочника Товары. А если основное представление в виде кода, то тогда представление этого элемента будет в виде кода элемента.
Табличные части справочников 1С
Табличные части создаются на закладке «Данные» в конструкторе справочника.
Можно создавать неограниченное количество табличных частей.
Сделаем справочник Комплектация, у которого будет табличная часть Состав.
У табличной части может быть неограниченное количество реквизитов. Для того, чтобы создать реквизит табличной части, её необходимо выделить и нажать на кнопку «Добавить реквизит».
Реквизиты табличной части могут быть как примитивных типов, так и ссылочных.
Подчиненные справочники 1С
В конфигурации 1С 8.3 можно разрабатывать Подчиненные справочники. В Подчиненном справочнике каждый его элемент имеет владельца, который является элементом или группой другого справочника. Элемент подчиненного справочника не может существовать без владельца.
Сделаем возможность учета единиц измерения. Сначала создадим справочник «Классификатор единиц измерения», в котором будут храниться различные единицы измерения (штуки, килограммы и тд).
У справочника Товары сделаем реквизит основная единица измерения (ссылка на справочник классификатор единиц измерения)
И сделаем справочник, подчиненный справочнику Товары, в котором будут храниться коэффициенты соотношений единиц измерения к основной единице измерения товара. К примеру, основная единица измерения килограмм, но есть еще единица тонна и центнер. Соответственно в первом случае коэффициент будет 1000, а во втором 100.
Создадим справочник ЕдиницыИзмерения.
На закладке Владельцы установим, что владельцем этого справочника является справочник Товары.
И создадим реквизиты: Коэффициент (тип число) и единица измерения (тип ссылка на справочник «Классификатор единиц измерения»).
Вот как это будет выглядеть в режим «1С: Предприятия».
Подробно о подчиненных справочниках читайте в этой статье:
Иерархический справочник 1С
Любой справочник можно сделать Иерархическим – это значит, что пользователь сможет создавать каталоги (или, говоря простым языком, папки), в которых будут содержаться элементы.
Сделаем справочник Товары иерархическим. Для этого переходим на закладку «Иерархия» конструктора справочника и установим флаг «Иерархический».
Иерархия у справочников бывает двух видов: Иерархия групп и элементов и просто Иерархия элементов.
Иерархия групп — это каталоги, которые в себе содержат определенные элементы. А что такое Иерархия элементов? Это когда один элемент подчинен другому.
Посмотрим, как выглядит иерархический справочник в «1С:Предприятии»
Как видите, в форме списка появилось две команды. «Создать» и «Создать группу». При выполнении команды «Создать» будет открыта форма на создание нового элемента, а при выполнении команды «Создать группу» — форма на создание группы (папки).
Вы можете создавать нужные группы, в этих группах создавать элементы, или переносить уже созданные элементы в группы.
Подробно, про иерархический справочник читайте в этой статье:
Что такое предопределенные элементы справочников, и как с ними работать, читайте в этой статье:
Остальные статьи по теме конфигурирования:
Более подробно и основательно работа со справочникам в дается в моей книге:
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
Справочники в 1С: предназначение и примеры использования
В этой статье познакомимся с объектом конфигурации «Справочник»: поговорим о предназначении справочников и рассмотрим примеры использования.
Программный продукт «1С:Предприятие» применяется для решения учетных задач и автоматизации бизнес-процессов предприятия. Большое количество предприятий занимается торговой деятельностью, которая заключается в покупке определенных товаров по цене X (цена закупки) и последующей продаже этих товаров по цене Y = X + a (цена продажи), где «a» — какая-то наценка на товар.
Но за счет чего предприятие может продавать товары по ценам, которые выше цен закупки? Это возможно благодаря тому, что товары закупаются в большом количестве (оптом), а продаются небольшими порциями (мелкий опт или розница).
Такая организация процесса приводит нас к следующему выводу: информация об одном и том же товаре потребуется как минимум дважды: в первый раз когда мы этот товара покупаем, а во второй раз — когда этот мы этот товар продаем. А поскольку основная цель любого бизнеса — это прибыль, то продавать нужно много раз, то есть информация об одном и том же товаре потребуется при каждой продаже. И поэтому было бы удобно в системе сохранить список всех товаров, чтобы пользователи не печатали на клавиатуре каждый раз при продаже название товара, а выбирали товар из какого-то списка. Причем заранее пользователь не знает какие товары будет закупать организация, поэтому должна быть возможность добавлять в этот список произвольное количество товаров в любой момент времени.
Для создания таких списков и используется объект конфигурации «Справочник». Например, в справочниках можно хранить список сотрудников, список поставщиков и покупателей, список банков и т.д.
Каждый элемент справочника характеризуется кодом и наименованием.
Система поддерживает режим автоматической нумерации элементов, при котором она самостоятельно может генерировать код для нового элемента справочника. Кроме этого система позволяет осуществлять контроль уникальности кодов справочника, не разрешая создавать элементы с одинаковыми кодами:
Кроме кода и наименования, каждый элемент справочника, как правило, содержит некоторую дополнительную информацию, которая подробно описывает этот элемент. Например, для товара это может быть информация об артикуле, упаковке и т.п. Набор такой информации является одинаковым для всех элементов конкретного справочника, и для ее хранения служат реквизиты справочника:
Кроме этого, каждый элемент справочника может содержать некоторый набор информации, которая одинакова по своей структуре, но различна по количеству, для разных элементов справочника. Например, для каждого сотрудника в справочнике «Сотрудники» это может быть информация о составе семьи, образовании. Для хранения подобных данных служат табличные части справочника:
Если справочник предполагает хранение большого количества элементов (например, в справочнике «Номенклатура» могут храниться сотни тысяч и миллионы товаров), то возникает необходимость организовать удобную структуру справочника для более удобного поиска нужных элементов.
Для этого существует возможность включить для справочника иерархию:
Иерархия позволяет работать с элементами справочника подобно тому, как происходит работа с файлами в проводнике. В операционной системе файлы различных программ хранятся в разных папках:
Если бы все файлы хранились в общей «куче», ориентироваться в огромном количестве файлов было бы крайне неудобно.
Если для справочника включена иерархия, то появляется возможность создавать элементы двух видов: «Группа» (аналог папки в проводнике) и «Элемент» (аналог файла в проводнике).
Например, в справочнике «Номенклатура» могут быть созданы группы: «Детские игрушки», «Для дома», «Спортивный инвентарь» и т.д., в которых располагаются элементы, относящиеся к этим группам. Кроме того группы справочника могут включать в себя и другие группы, создавая тем самым многоуровневую иерархическую структуру:
В справочниках возможен и другой вид иерархии, при котором элементы справочника будут относиться не к группам, а к другим элементам этого же справочника. Такой вид иерархии может использоваться, например, при создании справочника Задачи, где одна задача может включать в себя несколько других задач.
Разные справочники могут находиться в состоянии подчинения, т.е. элементы одного справочника могут быть подчинены элементам или группам другого справочника. Например, справочник «Договоры» может быть подчинен справочнику «Контрагенты». Тогда при оформлении документов для некоторого контрагента можно будет выбрать договор не среди всех имеющихся в программе договоров, а среди договоров только выбранного в документе контрагента:
Справочники допускают также создание предопределенных элементов, которые существуют в справочнике всегда, вне зависимости от действий пользователя. Такие элементы справочника создаются разработчиком при разработке прикладного решения и не могут быть удалены или перемещены пользователем.
Например, в справочнике контрагенты уже на этапе создания справочника можно определить некоторые группы для удобства работы пользователей: «Покупатели», «Поставщики», «Прочее», а также создать элемент справочника «РозничныйПокупатель», который будет использоваться при продаже товаров в розницу:
Как справочники хранятся в базе данных
В простейшем случае справочник представляет собой в базе данных таблицу, с заранее определенными колонками «Код» и «Наименование». Каждый элемент справочника — это строка из этой таблицы. Для того, чтобы для строк в таблице хранить какие-то дополнительные сведения (например, для контрагентов хранить «УНП» и «Дату регистрации») , нужно добавить в таблицу новые колонки. Чтобы добавить новые колонки в таблицу используются как раз Реквизиты:
Иерархический справочник также представлен в базе в виде таблицы, где кроме колонок «Код» и «Наименование» есть ещё 2 колонки: «ЭтоГруппа» (да/нет — признак, указывающий на то, групповой это элемент или нет) и «Родитель» (вышестоящий элемент справочника по иерархии):
Таким образом, в данной статье мы познакомились с объектом конфигурации «Справочники», рассмотрели примеры использования и работы с ними, а также разобрали как справочники хранятся в базе данных.