Использование справочников. Open Library - открытая библиотека учебной информации Что такое многоуровневый справочник в 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 ).

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

При построении сложных экономических моделей обычно имеется набор данных, используемых в нескольких таблицах как в качестве параметров расчетов, так и для построения отчетных форм. Создание и использование отдельных таблиц-справочников позволяет ускорить процесс разработки модели, повышает надежность расчетов, а также дает возможность применять специальные средства интерфейса Microsoft Excel.

В прилагаемом примере рассматривается модель с использованием двух типов справочников:

  • Одномерный - продукты с наименованием и единицей измерения
  • Двумерный - прайс-листы с различными ценами по продуктам и периодам.

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

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

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

Пример1!B10:

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

Пример1!D17:

VLOOKUP(B17;$A$3:$B$6;2;0)

Функция ВПР ищет значение по определенному номеру столбца (в примере – второй столбец) в прямоугольном диапазоне ячеек. Последний параметр (0 или ЛОЖЬ) используется для указания искать ли ближайшее значение (ИСТИНА), либо точное совпадение (ЛОЖЬ). Первый вариант редко используется на практике, так как требует предварительно отсортированного диапазона поиска. Важное замечание по параметру «столбец». Это не номер столбца во всей электронной таблице, а номер столбца в диапазоне поиска. Для аналойного поиска по горизонтальному массиву используется функция ГПР (HLOOKUP).

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

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

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

Пример1!E17:

OFFSET($A$9;MATCH(B17;$A$10:$A$13;0);MATCH(DATE(YEAR(A17);MONTH(A17);1);$C$9:$E$9;0)+1)

Функция ПОИСКПОЗ (MATCH) ищет и возвращает порядковый номер элемента в списке (работает аналогично ВПР). Функция СМЕЩ (OFFSET) возвращает значение по относительной ссылке от определенной ячейки – в примере, от верхнего левого угла таблицы прайс-листов. Функция преобразования даты ДАТА (DATE) превращает дату в из таблицы продаж в дату, используемую в прайс-листе – первое число месяца.

Более простой вариант решения задачи использован в нижних ячейках таблицы продаж. Здесь использована формула обработки массива. Причем суммирование ведется по двумерному массиву:

Пример1!E22:

{=SUM(IF(B22=$A$10:$A$13;IF(MONTH(A22)=MONTH($C$9:$E$9);$C$10:$E$13)))}

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

Для лучшего понимания формулы, разложим ее в виде структуры и заменим диапазоны на значения (через нажатие F9 на выделенном диапазоне). Получим следующую картину:

SUM(IF("Продукт4"={"Продукт1":"Продукт2":"Продукт3":"Продукт4"}; IF(3={1;2;3}; { 2;2,1;2,2: 3;2,9;3,05: 1299;1280;1350: 6,4;6,9;6,7 })))

Первое условие на продукт возвращает массив {6,4;6,9;6,7}, второе условие выбирает из этого массива последнее значение.

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

Использование справочников для создания пользовательского интерфейса

Обратите внимание на выпадающий список для выбора элементов справочника на листе «Пример2», таблицы «Продажи» (Пример2!B17).

Организация подобных выпадающих списков возможна через опцию «Проверка». Доступ в Excel до 2007 через меню Данные\Проверка (Data\Validation), в Excel 2007 и старше – лента Данные\Работа с данными\Проверка данных (Data\Data Tools\Data Validation).

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

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

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

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

Обратите внимание на описание проверки в ячейке Пример2!B18. Здесь вместо ссылки на лист «Пример1» задана формула

Имя listProducts задано в примере как диапазон Пример1!$A$3:$A$6. Очевидно, что использование такого именованного диапазона делает более прозрачным смысл заданного условия проверки, а также снижает риск ошибки в формуле.

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

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

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

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

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

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

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

Если константа периодическая, то в списке констант храниться не только последнее ее значение, но и все ранее существовавшие значения с датами их ввода.

Для просмотра и редактирования истории значения константы необходимо:

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


Открыть нужный справочник можно через меню Справочники .

Для ввода в справочник нового элемента используется клавиша Insert или

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

Одноуровневый справочник – это простой список элементов.

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


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

Щелчком по знаку +(-) на дереве групп можно сворачивать и разворачивать структуру. Двойной щелчок по папке (на дереве папок или в списке) открывает группу. На клавиатуре Ctrl+↓ -- открыть группу, Ctrl+ -- закрыть группу.

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

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

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

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

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

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

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

При установке связей между таблицами СПРАВОЧНИК и СПРАВОЧНИК 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), но так же уменьшает размер базы за счет меньшего количества форм и таблиц.

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