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

Справочники 1С — специализированный объект древа метаданных, который служит для хранения статичной информации справочного характера. Например, в типовых конфигурациях можно увидеть следующие виды: , Номенклатура, Сотрудники, Основные средства и т.д. Информация в справочниках, как правило, часто не изменяется. Справочники в дальнейшем используются практически во всех объектах учета как разрез учета или справочная информация.

Ниже мы рассмотрим настройку и проектирование справочника из конфигуратора на примере справочника «Номенклатура».

Вкладка «Основные»

На вкладке «Основные» указывается имя, синоним, представление объектов, описание назначения.

Вкладка «Иерархия справочника»

Здесь устанавливается иерархичность справочника.

Иерархия в 1С 8.3 бывает двух типов — «групп и элементов » и «элементов «. Отличается тем, что в первом случае родителем (папкой) может быть только папка (группа), а во втором случае родителем может быть и элемент.

«Размещать группы сверху» — флаг отвечает за отображение групп в форме списка.

Также в настройках можно ограничить количество групп иерархии справочника соответствующей настройкой.

Вкладка «Владельцы»

Справочник может быть подчинен другому справочнику. С точки зрения конфигурирования 1С 8.3 это значит, что у подчиненного элемента становится обязательным реквизит «Владелец». Пример такой связи справочников в типовых конфигурациях «Номенклатура — Единицы Измерения», «Контрагенты-Договоры Контрагентов».

Владельцем справочника могут также быть следующие объекты метаданных: , .

Вкладка «Данные»

Получите 267 видеоуроков по 1С бесплатно:

Самая важная вкладка с точки зрения программиста. На ней указываются реквизиты справочника.

У справочника есть набор стандартных реквизитов, которые не редактируются программистом 1С 8.2, список их можно увидеть, нажав кнопку «Стандартные реквизиты»:

Остановлюсь на каждом подробнее:

  • ЭтоГруппа — реквизит с типом булево, показывающий, группа это или элемент. Доступен только в иерархическом справочнике. Обратите внимание, значение этого реквизита невозможно изменить в режиме 1С: Предприятие .
  • Код — реквизит, тип число или строка (как правило строка). Номер, присваиваемый системой автоматически. Как правило, рассчитывается как (предыдущий код + 1). Рекомендую использовать именно строковый тип, потому как сортировка числовых значений происходит не так, как нужно. Можно использовать как представление справочника в списке и в полях ввода. Как правило, используется для поиска элемента при вводе по строке. Если Вам нужно убрать поле Код, укажите в длине строки ноль.
  • Наименование — реквизит, обязательный к заполнению, строкового типа. Максимальная длина строки — 150 символов. Можно использовать как представление справочника в списке и в полях ввода. Как правило, используется для поиска элемента при вводе по строке. Если Вам нужно убрать поле Наименование, укажите в длине строки ноль.
  • Родитель — реквизит, имеющий тип СправочникСсылка.<ИмяТекущегоСправочника>. Доступен только в иерархическом справочнике. Указывает на вышестоящего родителя в иерархии. Если Элемент или Группа находятся в корне справочника, указывается значение Справочник.<ИмяТекущегоСправочника>.ПустаяСсылка.
  • Владелец — ссылка на элемент-владелец текущего элемента (группы) справочника. Доступен только в подчиненном справочнике 1С .
  • ПометкаУдаления — реквизит с типом булево. Отвечает за отображение «пометки удаления» в системе. Помеченный на удаление элемент считается непригодным к использованию, однако на нём могут оставаться старые движения в документах.
  • Ссылка — поле строкового типа. В этом реквизите хранится уникальный идентификатор объекта — GUID. То, что в системе мы видим в визуальном отображении под название «ссылка», — это всего лишь представление объекта. Невозможно изменить.
  • Предопределенный — тип булево, отображает, является ли элемент предопределенным, об этом позже. Невозможно изменить.

На вкладке «Данные» так же указывается представление справочника в системе, до версии 8.2.16 представление могло быть лишь Кодом или Наименованием. В свежих версиях платформы (начиная с 8.3) представление можно описать самостоятельно в модуле менеджера с помощью обработчика «ОбработкаПолученияПредставления».

Вкладка «Нумерация»

Здесь указываются настройки справочника по части нумерации. Рекомендуется использовать именно автонумерацию. Контроль уникальности — флаг, который помогает, если нужно, сделать код уникальным. Если с установленным флагом Вы попытаетесь записать элемент справочника с неуникальным кодом, в 1С Вы получите сообщение «Код справочника стал неуникальным».

Серия кодов — определяет, как нумеровать справочник, можно ввести нумерацию справочника в разрезе владельца. Например, у контрагента «Рога и копыта» будет иметься своя нумерация договоров — «1, 2, 3» и тд.

Вкладка «Формы»

Тут описываются формы для справочника. Если конфигурация запускается как в обычном, так и управляемом режиме, тогда вкладок с формами по умолчанию будет две: «основные» и «дополнительные» — для обычного и управляемого приложения разные.

На этой странице есть немаловажное свойство справочника — ««. Это очень удобная функция 1С 8, позволяющая при заполнении данных в поле ввода не заходить в справочник, а набрать его наименование, код или т.п. и выбрать из выпадающего списка нужный элемент. Выглядит это так:

Вкладка «Прочее»

На вкладке можно получить быстрый доступ к основным модулям справочника — модулю объекта и модулю менеджера.

На странице можно также определить список предопределенных элементов справочника. Это элементы, которые невозможно удалить в режиме Предприятия. К предопределенным элементам можно обратиться в конфигураторе напрямую, по имени, например: Справочники.Номенклатура.Услуга.

На этой вкладке также определяется режим блокировки — автоматический или управляемый. Использование полнотекстового поиска, а также справочная информация о справочнике, доступная в режиме 1С: Предприятия.

Справочники - в программе «1С: Предприятие» справочники служат для: хранения условно-постоянной информации, поддержки внутрифирменных или общих классификаторов, формирования списков возможных значений субконто, (то есть для организации аналитического учета). Термин «субконто» введен для обозначения набора зна­чений, используемых для ведения аналитического учета по бухгал­терским счетам. В качестве субконто обычно выступают объекты, по которым ведется аналитический учет на предприятии: основные средства, организации, товары и т. д. Вид субконто определяет сово­купность объектов конкретного типа, которые используются для ве­дения аналитического учет.

Использование справочников позволяет исключить неоднознач­ность при заполнении тех или иных реквизитов документов или дру­гих справочников. Например, если в счете требуется вводить наиме­нование организации-клиента, выбор элемента из справочника клиентов позволит избежать ошибочного ввода наименования раз­ными конечными пользователями (продавцами). Если это не запрещено в конкретной конфигурации (для кон­кретного пользователя), справочник может редактироваться в про­цессе работы - могут вводиться новые записи, редактироваться или удаляться существующие.

Работа со справочниками может осуществляться в двух режимах: режим «просмотра и редактирования» и режим «выбора элемента спра­вочника».

В режиме просмотра и редактированияформа справочника от­крывается при помощи кнопки - « Изменить текущий элемент ( F2 ) » .




В режиме выборасправочник открывается только при вводе зна­чения субконто, константы, реквизита документа или реквизита дру­гого справочника нажатием кнопки - « Выбор» или клавиши « F4». В конфигурации могут быть определены различные формы для выбора элементов справочника.

К примеру, мы решили выбрать « Страну»:




Вызов справочника осуществляется различными способами в зависимости от конфигурации задачи. Самый простой вариант вызова через системное меню: « Операции» - « Справочник» . Вкладка « Операции» может быть доступна только при полном « Интерфейсе» ;

Программа выдаст список справочников, существующих в данной конфигурации.


Рассмотрим в данном примере, справочник « Номенклатура».




Панель редактирования :

- « Добавить (Ins - Insert ) » ;

- « Добавить группу ( Ctrl+F9 ) » ;

- « Добавить копированием ( F9 ) » ;

- « Изменить текущий элемент ( F2 ) » ;

- « Установить пометку удаления ( Del - Delete ) ».

Внешний вид формы справочника пол­ностью определяется в процессе настройки конфигурации задачи. Однако существует несколько общих элементов, которые имеет каж­дая форма справочника: заголовок окна справочника; табличное поле справочника - список элементов справочника в форме таблицы.

В заголовке окна справочника выдается название справочника. Название справочника задается в процессе настройки конфигурации задачи и может быть изменено только в сеансе кон­фигурирования задачи. Табличное поле справочника содержит колонки. Их состав и структура определяется конкретной конфигурацией. Минимальное количество колонок - две: код и наименование элемента справочника. Если справочник содержит много элементов (строк) и имеет мно­го колонок, то в таблице справочника выводится только определенная его часть, а внизу и справа появляются линейки прокрутки.




Справочник имеет панель элементов, необходимую для быстрого доступа к наиболее часто исполь­зуемым командам работы со справочником. Если при настройке параметров интерфейса не задано иное, то обычно панель инструментов располагается в верхней части окна справочника под строкой заголовка окна. При работе со справочником используется «активная ячейка». Такая ячейка в таблице справочника всегда вы­делена инверсным цветом. Иногда она называется «текущей» ячейкой.

С элементами справочника можно производить следующие действия, которые осуществляются при выборе соответствующего пункта меню «Действия »или нажатия управляющей кнопки на панели управления в списке или в форме элемента справочника:

  • «Перечитать» - данные в элементе справочника будут перезаписаны в соответствии с последними изменениями в информационной базе. Данное действие рекомендуется использовать при сетевой работе, когда нескольким пользователям разрешено редактировать один и тот же элемент справочника.

  • «Скопировать» - при выполнении этого действия будет создан новый элемент справочника путем копирования текущего элемента справочника.

  • «Перейти» - при выполнении этого действия будет открыто меню, в котором представлен список дополнительных сведений, которые могут быть получены по объекту справочника.

Строки в справочнике могут быть двух типов: элементы справоч­ника и наименования группы справочника .




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

Для просмотра информации в « группах/элементах» используется двойной щелчок мыши по « группе / элементу».

Когда окно справочника открывается для просмотра или выбора из него нужного элемента, строки в справочнике могут быть упорядочены: по коду, по наимено­ванию элементов, по произвольному реквизиту, если это обу­словлено конфигурацией системы.

Порядок сортировки можно за­дать с помощью кнопки «Действия», и выбора из раскрывающегося списка действий пункта «Сортировка».




Ввод в справочник нового элемента осуществляется с помощью клавиши « INS - Insert » или с помощью меню « Действия». После того, как откроется форма ввода нового элемента справочника, необходимо заполнить все графы и сохранить их, нажав на кнопку « ОК». Заполнение каждой колонки завершается нажатием клавиши « Enter».




Редактирование данных справочника осуществляется с помощью клавиши «F2» или команды «Действия» - «Изменить». Для редактирования необходимо установить курсор на тот элемент, который подлежит изменению!



Для удаления данных в системе «1С: Предприятие» существует два режима: непосредственное удаление и пометка на удаление данных.

Для пометки на удаление или удаления элемента справочника необходимо поместить курсор на строку с удаляемым элементом и выполнить одно из следующих действий: нажать клавишу Del ete , нажать мышью кнопку на панели инструментов окна справочника, выбрать пункт «Удалить» («Пометить на удаление») в меню «Дей­ствия», расположенного на панели справочника. Программа выдаст запрос об удалении или пометке на удаление. После ответа «Да» на запрос об удалении или пометке на удаление элемент справочника будет удален (помечен на удаление).




Если элемент помечается на удаление, это будет отражено в изменении условного значка в крайней левой графе таблицы. Для удаления объектов, помеченных на удаление, необходимо в главном меню выбрать пункт «Операции» - «Удаление помеченных объектов».

Назначение справочников

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

Система 1С:Предприятие 8 позволяет вести практически неограниченное количество необходимых справочников. Каждый справочник представляет собой список однородных объектов: должностей, сотрудников, клиентов, товаров и т. д. Каждый такой объект называется элементом справочника.

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

Реквизиты справочника (поля)

В качестве обязательных реквизитов каждый справочник имеет Код и Наименование . Код элемента справочника может быть как числовым, так и текстовым. Система 1С:Предприятие 8 предоставляет широкие возможности по работе с кодами элементов справочника: автоматическое присвоение кодов, автоматический контроль уникальности кода и другие.

Помимо Кода и Наименования, в справочниках системы 1С:Предприятие может храниться любая дополнительная информация об элементе справочника. Для хранения такой информации в справочнике могут быть созданы дополнительные реквизиты (поля). Используя механизм реквизитов справочника, легко организовать, например, картотеку сотрудников. Например, справочник Сотрудники почти наверняка будет иметь реквизиты Должность, Оклад, ДатаПриема и другие. Фирма 1С предвосхитила программистов и ввела во все справочники два обязательных (предопределенных) реквизита: Код и Наименование. Действительно, практически любой объект из реальной жизни содержит эти атрибуты. Например, для сотрудников кодом выступает табельный номер, а наименованием - Фамилия, Имя и Отчество (ФИО). Кроме того, использование кодов (при использовании автоматической нумерации) позволяет с легкостью понять, какой элемент был введен раньше, а какой позже в базу данных.

Типы данных

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

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

Список элементов справочника в системе 1С:Предприятие 8 может быть многоуровневым. В этом случае все строки справочника будут разделяться на 2 вида: «просто» элементы справочника и группы справочника. Группы позволяют переходить на нижележащие уровни многоуровневого справочника. Использование многоуровневых справочников позволяет организовать ввод информации в справочник с нужной степенью детализации. Элементы и группы элементов в многоуровневом справочнике можно переносить из одной группы в другую.

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

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

Табличные части

Начиная с версии 1С 8.0, в платформе реализована возможность для элемента справочника задавать одну или несколько табличных частей. Эту возможность рекомендуется использовать для отражения информации, связанной с данным элементом, но не имеющей собственной объектной сущности (для которых рекомендуется заводить подчиненные справочники). Например, для справочника Сотрудники могут быть заведены табличные части Образование и СоставСемьи. Работа с табличными частями похожа на работу с подчиненными справочниками за исключением того, что табличные части не могут использоваться в качестве значений реквизитов других объектов.

Где используется программный код для работы со справочниками?

Так как для выполнения программного кода нам необходимо обращаться к базе данных, данные куски программного кода должны размещаться в процедурах и функциях (или модулях) выполняемых на стороне сервера . Дополнительную информацию смотри в разделе .

1. Ссылка на справочник

Для работы со справочником из какого-либо модуля требуется сначала создать ссылку на этот справочник.

СпрСотрудники = Справочники . Сотрудники ; // или 2 вариант
СпрДолжности = Справочники [ "Должности"];

2. Создание и запись нового элемента справочника

НовЭл = Справочники . Сотрудники . СоздатьЭлемент ();
НовЭл . Наименование = "Петров Петр Петрович";
НовЭл . Оклад = 25000;
НовЭл . Записать (); // именно в этот момент происходит запись в базу данных

3. Создание и запись новой группы справочника (для иерархического справочника)

Нов = Справочники.Сотрудники . СоздатьГруппу ();

Нов . Записать ();
// или 2 вариант
Нов = Справочники [ "Сотрудники"]. СоздатьГруппу ();
Нов . Наименование = "Работающие";
Нов . Записать ();

4. Поиск элемента справочника

// если элемент найден, то он возвращается, иначе возвращается значение Неопределено

НайденныйСотр = СпрСотр . НайтиПоКоду (123); //ищем по коду
НайденныйСотр = СпрСотр . НайтиПоНаименованию ("Иванов Иван Иванович"); //по наименованию
НайденныйСотр = СпрСотр . НайтиПоРеквизиту ("Оклад", 5000); //по реквизиту

Если НайденныйСотр = Неопределено Тогда
//элемент не найден
КонецЕсли;

5. Удаление элемента справочника

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

СпрСотр . Удалить (); //непосредственное удаление текущего элемента справочника

СпрСотр . УстановитьПометкуУдаления (Истина); //пометка на удаление
СпрСотр . УстановитьПометкуУдаления (Ложь); //снять пометку на удаление

//можно проверить, помечен ли элемент на удаление
//свойство ПометкаУдаления имеет тип Булево (Истина или Ложь)

Пометка = СпрСотр . ПометкаУдаления ; //обратите внимание: это свойство
Если Пометка = Истина Тогда
//элемент помечен на удаление
КонецЕсли;

6. Перебор элементов справочника

Выборка = Справочники . Сотрудники.Выбрать ();
// начало перебора элементов справочника в цикле
//действия с очередным элементом...

КонецЦикла;

7. Родитель. Перебор элементов внутри группы.

Группа в терминах 1С - это "родитель".

СпрСотр = Справочники . Сотрудники ;
ГруппаРаботающие = СпрСотр . НайтиПоНаименованию ("Работающие");
Выборка = СпрСотр . Выбрать (ГруппаРаботающие );
Пока Выборка . Следующий () = 1 Цикл

Сообщить ("Сотрудник " + Выборка . Наименование );
КонецЦикла;

8. Владелец. Перебор элементов справочника, принадлежащих элементу другого справочника.

Один справочник подчинен другому справочнику, например справочник НалоговыеЛьготы подчинен справочнику Сотрудники.

Выборка = Справочники . НалоговыеЛьготы . Выбрать (, Сотрудник ); //тут сотрудник - ссылка на элемент справочника сотрудники
Пока Выборка . Следующий () = 1 Цикл
//действия с очередным элементом
Сообщить ("льгота " + Выборка . Наименование );
КонецЦикла;


9. Транзакция

При создании множества элементов справочника для ускорения работы можно заключить цикл в транзакцию. При этом реальное создание всех элементов произойдет только по команде ЗафиксироватьТранзакцию(). При использовании транзакций действие будет либо выполнено целиком (созданы все элементы справочника), либо не выполнено совсем (в случае какого-либо сбоя не будет создано ни одного нового элемента, все останется также, как до запуска транзакции). Транзакции широко применяются в банковской сфере. Ведь никто не хочет, чтобы при отправке денег, они благополучно списались с вашего счета, но из-за какого-либо сбоя не дошли до адресата.

СпрСотр = Справочники . Сотрудники ;
НачатьТранзакцию ();

Для Ном = 1 По 100 Цикл
Нов = СпрСотр . СоздатьЭлемент ();
Нов . Наименование = "Новый " + Строка(Ном );
Нов . Записать ();
КонецЦикла;

ЗафиксироватьТранзакцию ();

Клюев В.В.

http://prof1c.kklab.ru

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

Скорее всего Вы уже неоднократно замечали в обычных типовых конфигурациях, взаимосвязанные между собой справочники, когда при выборе элемента справочника(справочник1), значение другого справочника(справочник2) «фильтруется» по этому значению - то есть выбираются значения, принадлежащие только текущему элементу справочника1; к примеру - это Справочник «Подразделения», владельцем которого является Справочник «Организации».

Для того, чтобы сразу вникнуть в суть происходящего, давайте посмотрим что происходит на практике. Для этого, вы можете, создать пустую конфигурацию с нуля, либо зайти в какую-либо имеющуюся копию информационной базы и в конфигураторе создать 2 справочника.

Справочник1 и Справочник2. В справочнике2 перейдите на вкладку «Владельцы» и выберите владельца - «Справочник1», смотрите как показано на рисунке.

Теперь при создании элементов в «Справочнике2», система будет просить ввести владельца справочника1. Есть опция - Использование подчинения - когда задается подчинение Элементам, группам, или группам и элементам.

Казалось бы всё просто, но проблемы возникают у пользователей. Пользователь при открытии «Справочника2» видит все элементы в совершенно непонятном порядке, да и к тому же, если вы работали с типовыми конфигурациями, то могли заметить, что напрямую в справочнике «Подразделения» вы нигде не задаёте владельца, а при открытии справочника можете выбирать организацию и в зависимости от этого получать элементы, подчинённые той или иной организации; при этом при создании элемента справочника «Подразделения» по умолчанию вы получите того владельца, которого выбрали в форме списка подразделений.
Итак приступим, и создадим «Форму списка» для нашего «Справочника2», пока предоставьте это 1С, не внося никаких изменений, позже мы подкорректируем созданную конструктором форму.
В «Справочнике2» перейдите на вкладку Формы и добавьте (+) новую Форму списка справочника и нажмите Готово.

Создадим реквизит формы с типом данных «Справочник1.Ссылка», с именем «ОтборСправочник1», и перетащим этот реквизит на форму, задайте заголовок «Справочник1».


Теперь, для того, чтобы «сие чудо» заработало, необходимо написать код, который будет выполнять отбор при выборе Элемента Справочника1.

8.2, 8.3 Управляемые формы

Для того, чтобы отобразить в форме списка справочника только необходимые нам элементы по выбранному элементу Справочника1, необходимо программно сделать отбор - по выбранному элементу, для этого воспользуемся предопределенной процедурой элемента управления ОтборСправочник1, и напишем код, выполняющие указанную задачу.
В верхней части выберите «ОтборСправочник1» нажмите на правую клавишу мыши и выберите «Свойства», в появившемся окне найдите свойство «ПриИзменении» и нажмите лупу, тем самым перейдя в модуль формы; автоматически создается процедура «ОтборСправочник1ПриИзменении(Элемент)»

В процедуре введите следующий текст:

& НаКлиенте Процедура ОтборСправочник1ПриИзменении(Элемент) Список. Отбор. Элементы. Очистить() ; // ЭлементОтбора = Список. Отбор. Элементы. Добавить(Тип(" ЭлементОтбораКомпоновкиДанных " ) ) ; ЭлементОтбора. ЛевоеЗначение = Новый ПолеКомпоновкиДанных(" Владелец " ) ; ЭлементОтбора. ВидСравнения = ВидСравненияКомпоновкиДанных. Равно; ЭлементОтбора. Использование = Истина ; ЭлементОтбора. ПравоеЗначение = ОтборСправочник1; ЭлементОтбора. РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных. Недоступный; КонецПроцедуры

8.2 Обычные формы


При построении форм - всё то же самое, только формы необходимо создавать обычные, управляемые формы в обычном приложении не работают.
Разница будет состоять в процедуре отбора для элемента в форме списка и создании реквизита.
Чтобы добавить реквизит на обычную форму нажмите кнопку

Процедура Справочник1ПриИзменении(Элемент) ЭтаФорма. Отбор. Владелец. Значение = Справочник1. Ссылка; ЭтаФорма. Отбор. Владелец. Использование = Истина ; ЭтаФорма. ЭлементыФормы. СправочникСписок. НастройкаОтбора. Владелец. Доступность = Ложь ; //(?) КонецПроцедуры

Предпоследней строкой(?) - запрещаем изменять отбор при открытии параметров отбора пользователем - только через элемент управления!

Видео (без звука - все понятно без звука)

2024 logonames.ru. Финансовые советы - Портал полезных знаний.