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

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

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

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

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

Рассмотрим интерфейс иерархического справочника на примере справочника Подразделения .

При работе с иерархическим справочником строка меню окна Ведение справочников содержит следующие пункты:

  • Управление – включает в себя команды добавления, изменения и удаления элементов справочника, перемещения их вверх/вниз по списку элементов, команды импорта и экспорта данных справочника, а также команду поиска нужных элементов;
  • Сортировка – состоит из команд сортировки элементов;
  • Вид – включает в себя команды, определяющие вид списка элементов справочника (с логически удаленными элементами или без них);
  • Окно – содержит команды управления положением рабочих окон;
  • Справка – включает в себя команды вызова справочной информации;
  • Закрыть – команда завершения работы с текущим справочником.

Если для какой-либо команды установлены «горячие» клавиши, то они указываются в меню рядом с ней.

На панели инструментов окна находятся следующие кнопки:

Вид кнопки

Выполняемая команда

Добавить элемент-вершину в справочник. Дублирует команды Управление , Добавить вершину ;

Добавить элемент-лист в справочник. Дублирует команды Управление , Добавить лист ;

Редактировать выбранный элемент. Дублирует команды Управление , Изменить ;

Удалить (восстановить) выбранный элемент. Дублирует команды Управление , Удалить (восстановить) ;

Переместить выделенный элемент на одну позицию вниз по списку. Дублирует команды Управление , Строку вниз ;

Переместить выбранный элемент на одну позицию вверх по списку. Дублирует команды Управление , Строку вверх ;

Перейти к поиску элементов, удовлетворяющих заданным критериям. Дублирует команды Управление , Поиск ;

Включить в список элементов справочника логически удаленные элементы. Повторный щелчок на кнопке приводит к тому, что списке элементов будут отображаться только активные (действующие) элементы. Дублирует команды меню Вид ;

Завершить работу с текущим справочником. Дублирует команду Закрыть .

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

При открытии окна иерархического справочника в нем формируется список верхнего уровня иерархии, содержащий, как правило, одни вершины. В заголовке окна указано только название справочника.

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

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

Чтобы закрыть вершину, дважды щелкните на ней мышью или с помощью клавиш или PageUp установите указатель на строку с наименованием открытой вершины и нажмите клавишу Enter .

Чтобы вернуться на любой из более высоких уровней иерархии, закройте вершину, лежащую на один уровень ниже требуемого.

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

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

Система 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 Цикл
Нов = СпрСотр . СоздатьЭлемент ();
Нов . Наименование = "Новый " + Строка(Ном );
Нов . Записать ();
КонецЦикла;

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

Для работы со справочниками предназначена ветвь “Справочники” дерева конфигурации.

Рис. 5 – ветвь “cсправочники” дерева конфигурации.

При создании нового справочника открывается окно редактирования объекта.

«Иерархический справочник» - если свойство установлено, то справочник имеет иерархическую структуру и становится доступным свойство «Вид иерархии» и «Ограничение количества уровней иерархии».

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

Рис. 6 – Окно редактирования объекта, свойство «иерархический справочник».

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

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

«Количество уровней иерархии» - свойство становится доступным, если установлено свойство “Ограничение количества уровней иерархии”. Справочники в системе 1С: Предприятие могут иметь более одного уровня вложенности. Если свойство “Ограничение количества уровней иерархии” не установлено, то максимальное количество уровней вложенности справочника неограниченно.

«Владельцы» - это свойство требует подробного объяснения.

Любой справочник может использоваться как сам по себе, так и быть подчиненным какому-либо другому справочнику или справочникам. Например, справочник договоров может использоваться отдельно, а может быть связан со справочником организаций.

Чтобы подчинить справочник другому, уже существующему в системе, в поле «Список владельцев справочника» следует нажать кнопку редактирования и в открывшемся окне выбора объекта отметить те справочники, которые являются владельцами данного справочника. Каждый такой справочник в системе 1С: Предприятие8.2 называется владельцем, а сам справочник - подчиненным.

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

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

Рис. 7 – пример подчинённого справочника «подразделения организаций». Владельцем является справочник «Организации».

Использование подчинения - позволяет управлять ограничением, накладываемым на владельцев. Могут использоваться только элементы, только группы или и группы, и элементы. Если у справочника несколько владельцев, то ограничение применяется ко всем владельцам.

«Длина кода» - свойство устанавливает максимальную длину кода элемента справочника.

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

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

«Длина наименования» - в свойстве устанавливается максимально возможная длина наименования элемента справочника.

Конфигуратор позволяет установить длину наименования равной 0.

Рис. 8 – установка длины кода и длины наименования в справочнике.

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

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

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

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

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

Рис. 9 – выбор серии кодов.

«Тип кода» - свойство позволяет выбрать тип значения для кода элемента справочника: Число или Строка. Выбор строкового типа кода бывает полезным, когда используется сложная система кодирования, и код может включать помимо цифр также буквы и символы-разделители. Наиболее характерный пример - использование в качестве кодов артикулов для швейных изделий.

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

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

Если требования к ведению справочника предполагают непременное использование смешанных буквенно-цифровых кодов, то для целей автоматической нумерации можно использовать коды вида АА001. Здесь первая часть кода - символы АА - является текстовым префиксом, а вторая часть - символы 001 - будет интерпретироваться системой как число и использоваться при автоматическом присвоении очередного кода.

Текстовый префикс можно задать вручную (при вводе в справочник нового элемента ввести такой «составной» код) или использовать возможности установки префикса из встроенного языка системы 1С: Предприятие.

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

Нажать на панели инструментов окна Список констант кнопку История или выбрать команду История значения из меню Действия , или нажать клавишу F5 . На экране появится окно История.


Для изменения даты ввода или значения константы щелкните дважды по изменяемому параметру.

Для ввода нового значения используйте кнопку Новая строка.

Для удаления записи из истории значений воспользуйтесь кнопкой Удалить.
Если значение константы меняется несколько раз в течение одного дня, то в историю ее значений добавляется только одно значение, последнее введенное.
Если константа имеет длинную историю, нужное значение можно быстро найти по дате:
установить курсор в колонку дата;
ввести дату в формате ГГММДД (без разделителей).
Программа использует то значение периодической константы, которое соответствует дате регистрации документа.
После ввода общих настроек программы можно заполнить настройки пользователя.
Команда Настройки пользователя из меню Сервис позволяет:
определить, нужны ли услуги помощников. В частности, при установленном флажке Помощник приема на работу оформлять приказы можно будет только с помощью помощника, при снятом же флажке можно будет использовать как помощника, так и непосредственно документ Приказ о приеме . На первых порах работы с программой обычно используют работу помощников, так как они в красочном пошаговом режиме позволяют ввести необходимый документ, снабжая пользователя необходимыми пояснениями по ходу заполнения. В дальнейшем от работы помощников можно отказаться в целях экономии времени;


задать параметры отображения форматов чисел;


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


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

1.6. Описание структуры предприятия. Справочник Подразделения

Для формирования иерархической структуры предприятия предназначен справочник Подразделения . Вызвать его можно через меню Справочники .


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


Часть указанных реквизитов является периодическими, просмотреть историю из изменения можно с помощью кнопки История .

1.7. Справочник Должности

Информацию о должностях следует ввести в справочник Должности , который вызывается из меню Справочники .


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


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


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


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


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


Информация из этого справочника используется при формировании штатного расписания, а также при оформлении приказов о приеме на работу.

1.8. Общие принципы заполнения справочников в программе

1.8.1. Заполнение справочников

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


строка – запись об одном объекте (элементе). Символ объекта – голубая папка слева от записи;
столбец – одна характеристика (реквизит) объекта.
Открыть нужный справочник можно через меню Справочники .

Для ввода в справочник нового объекта используется команда Новый меню Действия , клавиша Insert , кнопка Новая строка на панели инструментов окна справочника.

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

Для редактирования данных дважды щелкните по нужному элементу или выделите его и нажмите кнопку Изменить (Открыть) на панели инструментов окна, или воспользуйтесь горячими клавишами Shift+Enter .
С помощью кнопок панели инструментов Справочники можно быстро открыть окна справочников:
сотрудники;
подразделения;
должности;
штатное расписание.

1.8.2. Многоуровневые справочники

На этапе настройки справочник может быть объявлен одноуровневым или многоуровневым. Одноуровневый справочник – это простой список элементов. Многоуровневый справочник – это иерархический список, в котором записи объединяются в группы. Некоторые справочники позволяют создавать группы внутри групп (второго, третьего и т. д. уровней). Количество уровней каждого справочника задается на этапе конфигурирования.
В окне многоуровневого справочника отображается структура списка.


Для создания новой группы в многоуровневом справочнике используется команда Новая группа из меню Действия или кнопка Новая группа на панели инструментов окна. Для каждой новой группы задается свой уникальный код и название. Обычно код назначается системой автоматически, однако его можно редактировать.
Щелчком по знаку + (-) на дереве групп можно сворачивать и разворачивать структуру. Двойной щелчок по папке (на дереве папок или в списке) открывает группу. Можно открыть группу через меню Действия командой Следующий уровень . Для возврата к списку предыдущего уровня необходимо дважды щелкнуть по значку открытой группы или выбрать Действия Предыдущий уровень .

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

Программа 1С: Зарплата и кадры , как и другие программы системы 1С: Предприятие , позволяет копировать записи. Копирование применяется в том случае, когда реквизиты объектов во многом совпадают.
Для копирования записей:
установите курсор на запись, которую надо скопировать;

Выберите пункт Копировать из меню Действия или нажмите кнопку Копировать строку , или нажмите F9 .
Будет создана запись, являющаяся копией выбранной. Копируются все поля записи, кроме кода (код автоматически увеличивается на единицу по отношению к последнему использованному значению) и даты (в копию будет автоматически внесена рабочая дата программы);


внесите необходимые корректировки;
сохраните изменения (Enter или OK )или откажитесь от копирования (Esc ).

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

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


Выбрать команду Перенести в другую группу в меню Действия или нажать на панели инструментов окна кнопку Перенести в группу;
подтвердить свое намерение перенести элемент, нажав кнопку Да в появившемся диалоговом окне.

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

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

Для включения и выключения Иерархического списка можно пользоваться копкой на панели инструмента Установка (отключение) вывода списка по группам.

1.8.5. Удаление объектов

В ходе работы с программой часто возникает необходимость удалить из справочника ошибочно введенные или уже давно не используемые элементы.
Удаление объектов в программе происходит в два этапа.
Первый этап: Помечаются объекты, которые необходимо удалить. Для этого необходимо:
установить курсор на объект, который необходимо пометить на удаление;

Выбрать в меню Действия команду Пометить на удаление или нажать клавишу Delete, или кнопку Пометить на удаление.
Для отмены Пометки на удаление поставьте курсор на строку с ранее помеченным элементом и нажмите повторно кнопку Отменить пометку на удаление или выберите пункт Отменить пометку на удаление в меню Действия .
Второй этап. Администратор или кто-то другой из пользователей программы, для кого определены соответствующие права, выполняет процедуру окончательного удаления объектов. Предварительно необходимо закрыть все открытые на рабочем столе окна.
Далее необходимо:
выбрать команду Регламенты Удаление помеченных объектов.
Если вы решили не удалять объект, необходимо снять галочку слева от него, чтобы исключить из числа удаляемых. Повторный щелчок снова включает объект;


нажать кнопку Контроль. Система выполнит контроль ссылок на выбранные объекты;
нажать на кнопку Удалить .
Следует помнить, что окончательное удаление выделенных объектов производиться только в монопольном режиме.

В окне Удаление помеченных объектов для работы со всем списком помеченных на удаление объектов можно использовать кнопки (Включить все, Выключить все).
Если при нажатии на кнопку Контроль программа выдала сообщение, что один или несколько объектов удалить невозможно, следует нажать ОК . После этого в верхнем окне автоматически исчезнут галочки напротив элементов, удалить которые нельзя. При выделении курсором строк с этими элементами в верхнем окне, в нижнем окне будут отображены найденные ссылки.

1.8.6. Использование справочников

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


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


Чтобы выбрать элемент, надо выделить его и нажать кнопку Выбор на панели инструментов окна справочника или клавишу Enter . Можно выбрать элемент двойным щелчком.

В режиме выбора доступно создание новых элементов и их редактирование (кнопка панели инструментов окна или команды меню Действия ).

1.8.7. Сортировка записей справочника

Записи справочников можно сортировать по полям.
Для сортировки записей справочника:
выберите из меню Действия команду Сортировка или воспользуйтесь контекстным меню;
в открывшемся подменю укажите реквизит, по которому необходимо провести сортировку. Перечень реквизитов, по которым может производиться сортировка, задается на этапе конфигурирования. По умолчанию записи в справочниках сортируются по наименованию. Сортировка по коду в справочнике Сотрудники , например, приведет к сортировке по табельному номеру, поскольку именно он является в этом справочнике кодом элементов.


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

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

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


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

Выбрать Действия История значения;
нажать клавишу F5;

Нажать кнопку на панели инструментов История .

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

Система «1С: Предприятие» позволяет связывать между собой элементы разных справочников. Например, сведения о стандартных вычетах сотрудников хранятся в справочниках Вычеты сотрудников по НДФЛ . Считается, что один справочник подчинен другому.
В окне подчиненного справочника отображаются только те элементы, которые связаны с выбранным владельцем.


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


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

1.8.10. Поиск записей в справочнике

Система 1С: Предприятие позволяет использовать два способа поиска нужной информации.
1. Быстрый поиск ориентирован на тот вид данных, который отображается в текущем окне и, следовательно, специфичен. Примеры: поиск по дате (формат ГГММДД), поиск текстовых значений по начальным буквам. При быстром поиске существуют определенные ограничения – поиск производится по одной колонке, только сверху вниз от положения курсора и только на полное совпадение.
2. Произвольный поиск – это стандартный режим, предназначенный для поиска в списке конкретного значения одного из возможных типов данных.
Для организации произвольного поиска:

Выберите Действия Поиск Искать… или нажмите кнопку Поиск на панели Стандартная , или нажмите Ctrl+F3 ;
определите тип искомой информации;


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


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

1.9. Формирование штатного расписания предприятия. Справочник Штатное расписание. Добавление и изменение ставок в штатном расписании

В справочнике Штатное расписание содержится информация о структуре штатного расписания предприятия. Вызывается справочник через меню Справочники .


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


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


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


Следует утвердительно ответить на этот вопрос.

1.10. Общие принципы работы с документами и журналами в программе

Вся работа «кадровика» основана на вводе соответствующих документов в программу. Вызвать нужный документ можно из меню Документы . Все сохраненные кадровые документы помещаются программой в Журнал кадровых документов , а также в Общий журнал документов . Ввод новых документов также можно осуществлять непосредственно из Журнала , используя кнопку Ввод новой строки или команду меню Действия Новый .
При вызове нужного документа на экран выводится диалоговое окно, в котором следует заполнить необходимые реквизиты.


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

В этом случае для записи документа номер следует изменить на уникальный и записать его.

Строки табличной части документа могут заполняться кнопками Ввод новой строки или Копировать строку . Лишние строки можно удалить из табличной части кнопкой Удалить (Delete ).

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

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

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

При установке связей между таблицами СПРАВОЧНИК и СПРАВОЧНИК Sub установим флажок «Каскадное удаление связанных записей» - это как раз тот случай, когда такая процедура будет полезной. Ведь при удалении записи из таблицы «СПРАВОЧНИК» связанные с ней данные становятся не нужными.

Если Вы откроете схему данных, то увидите только две связанные между собой справочные таблицы. В предыдущем примере к основной таблице «Адресат» были привязаны все справочники, и я еще подробно рассказывал о связях, флажках… Дело в том, что при данной схеме организации справочной системы мы не сможем прицепить таблицу «СПРАВОЧНИК» к какому либо полю, ведь в ней теперь хранятся все справочные данные. Да в этом и нет надобности. Если учесть, что пользователь будет работать с базой исключительно через формы, то вероятность ввода в основную таблицу записей, которых нет в справочной, сводиться практически к нулю.

Параметры справочников хранятся в служебной таблице tSystemFormPar. В поле Tabl указан идентификатор соответствующего справочника.
Рассмотрим отличия от предыдущего варианта.

Все глобальные переменные и константы я перенес в специальный модуль, который так и называется Constants. Хотя объявлять их можно в любом модуле, главное, чтобы они были в разделе General и начинались с ключевого слова Public, но лучше хранить их для наглядности в одном месте.

В модуль SprawForm добавилась новая функция - fFilListBox. Она во многом похожа на fFilForm, но служит для фильтрации списка, поэтому в параметрах вместо frm As Form поставлено lst As ListBox. Кроме этого, в обеих функциях изменена строка формирования фильтра:

strFiltr = " WHERE Left([" & strFieldName & "]," & Len(strFiltr) & ") = "" & strFiltr & """ & " and СПРАВОЧНИК.Type = " & strTableName

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

RecordSource = strSql1 & strFiltr & " " & strSql2

то для списка нужно использовать свойство RowSource

RowSource = strSql & strFiltr & " " & strSql1

В модуле формы «Справочник» добавилось условие отбора по полю Type таблицы СПРАВОЧНИК

Me.Subfrm.Form.RecordSource = strSql2 & " WHERE СПРАВОЧНИК.Type = " & strTableName & strSql3

и появилось новое - присвоение полю Type значения по умолчанию, равное текущему значению переменной strTableName

Me.Subfrm.Form!Type.DefaultValue = " & strTableName

Ведь если этого не сделать, то запись в таблице СПРАВОЧНИК окажется не привязанной к текущему типу справочника.

В модуле формы двухуровневого справочника «СправочникМ» видим, что формируются две пары строк - источников данных: strSql, strSql1 - для списка и strSql2, strSql3 - для табличной формы. Строки разбиты на пары потому, что между ними нужно будет вставлять условие отбора (WHERE…) Чтобы новое введенное значение в поле формы тут же отображалось в списке, служит процедура

Private Sub Fld_AfterUpdate()
DoCmd.RunCommand acCmdSaveRecord
Me.ListB.RowSource = strSql & " WHERE СПРАВОЧНИК.Type = " & strTableName & strSql1
End Sub

А для навигации по форме (поиску нужной записи) используем

Private Sub ListB_AfterUpdate()
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst " = " & Str(Nz(Me!, 0))
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub

Чтобы исключить возможность ввода в табличную форму (источник - СПРАВОЧНИК Sub) записей, не связанных с основной формой (источник - СПРАВОЧНИК) служит процедура, которая выводит соответствующее сообщение при подобной попытке и блокирует ее:

Private Sub Subfrm_Enter()
If flgDeleteRecord = False Then
If IsNull() Then
MsgBox "Сначала нужно завести основные данные!", vbCritical, NomWers
Fld.SetFocus
End If
End If
End Sub

Раз на форме появилось второе поле фильтра, появилась соответствующая процедура фильтрации по этому полю

Private Sub П2_Change()
strFiltr = Me.П2.Text
Set idField = Me.П2
Call fFilForm(strFiltr, strSql2, strSql3, Me.Subfrm.Form, "Name")
End Sub

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

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