Справочник «Сотрудники» является ключевым для задачи «Зарплата» комплекса СБиС++. В нём содержится основная информация о сотрудниках предприятия, данные, необходимые для правильного расчёта заработной платы.
На экране карточка сотрудника выглядит очень красиво – все данные скомпонованы, сгруппированы и представлены как единое целое. На самом деле, в базе данных вся эта информация хранится в различных таблицах, связанных между собой связями разных типов.
Информация о сотруднике поделена в базе данных на две очень и очень неравные части, меньшая из которых представлена в таблице «Сотрудники», а большая – в таблице «Сотрудники (расширение)». Сделано это для оптимизации базы данных, для сокращения времени обращения к базе.
Общая схема
Общая схема хранения в базе данных о сотруднике выглядит следующим образом:

Таблица «Сотрудники»
ФИО (Строка)
Фамилия, имя и отчество сотрудника хранятся в базе данных комплекса СБиС++ именно в этом поле рассматриваемой таблицы. Значение поля не может быть пустым, оно и понятно – раз уж вы заводите карточку на сотрудника, то у него, как минимум, есть имя.
ТабНомер (Целое)
Здесь хранится табельный номер сотрудника – целое число не меньше нуля. В таблице не должно быть записей с одинаковыми значениями данного поля.
Принят, Уволен (Дата)
Информация о дате принятия сотрудника на работу и дате его увольнения с вашего предприятия хранится в данных полях, в формате «дд.мм.гггг».
Признаки (Флаги)
Данное поле типа «Флаги» хранит выбранную пользователем комбинацию флагов «Резидент» и «Всегда выдавать копейки».
На этом собственные данные таблицы закончились. Все остальные поля – это поля связи, содержащие адреса записей в связанных таблицах.
Расширение сотрудника (Один к одному)

Таблицы «Сотрудники» и «Сотрудники (расширение)» связаны между собой связью «один к одному», что понятно – для каждого сотрудника может быть лишь одно расширение, и наоборот.
О каждом сотруднике в базу может быть занесено огромное количество всевозможной информации, начиная от фамилии, имени и отчества и заканчивая годностью к военной службе. При повседневной же работе, вам не требуется видеть всю эту информацию, достаточно вывести на экран ФИО, табельный номер и пол сотрудников. Всю дополнительную информацию удобно хранить отдельно от основной, и в случае необходимости извлекать её из базы данных. Из таких соображений и созданы две таблицы: «Сотрудники» (минимум данных) и «Сотрудники (расширение)» (море всевозможных данных по каждому сотруднику).
Сотрудники (Иерархия)
Это поле связи типа «Иерархия», задаёт структуру справочника «Сотрудники». У корневых отделов (подразделений) в поле «Сотрудники» указывается значение «корень у». Слово «корень», явно говорит о том, что данная запись находится в корне, то есть на первом уровне иерархии, а буква «у» – о том, что запись является узлом, то есть на неё ссылаются (находятся как бы внутри неё) другие записи таблицы.
У отделов (подразделений) более высокого уровня иерархии (второго, третьего и т.д.) в данном поле будет указан адрес записи-узла отдела, в состав которого входит данный. При этом в адресе также будет присутствовать буква «у». Например, «000000009у».
Для записей, соответствующих карточкам сотрудников, в поле «Сотрудники» указывается только адрес записи-узла (то есть отдела, подразделения, в котором работает сотрудник).
Лицо_ (На основную таблицу)
Это поле условной связи типа «На основную таблицу». Дело в том, что в

базе данных комплекса СБиС++ есть таблица «Лицо», которая содержит данные о следующих объектах: карточках и разделах номенклатуры, основных средствах, аналитиках, статьях бюджета, частных лицах, организациях, сотрудниках. В частности, названия всех этих объектов в явном виде хранятся не только в одноимённых таблицах («Номенклатура», «Организации» и др.), но и в таблице «Лицо» в строковом поле «Название». Таблица эта очень компактна, поскольку помимо названия и субсчёта содержит только поля связей – ссылки на записи других таблиц (подробнее о таблице «Лицо» см. Справочное руководство).
Говоря о компактности, отметим, что если в таблице «Сотрудники», ФИО сотрудника хранится в виде «Васечкин Пётр Данилович», то в таблице «Лицо» имя и отчество сотрудника сокращены до инициалов, то есть имеют вид «Васечкин П.Д.» (тоже касается частных лиц, а для организаций таблица «Лицо» хранит их краткие названия).
Путешествуя по связям уже таблицы «Лицо», можно выбрать, например, проводки, для которых тот или иной сотрудник (организация и пр.), выступил в качестве аналитики. Предположим, сотруднику вашей организации Петрову была депонирована заработная плата. Программа сделает проводки на счета бухгалтерского учёта, а информацию о дебетуемом, кредитуемом счёте, сумме проводки, а также аналитику запишет в таблицу «Проводки». При этом аналитика к счёту, то есть наш сотрудник Петров будет задана в таблице не явно, а посредством связи с таблицей «Лицо» (поле связи «Лица-Кредит», тип связи «многие к одному» – многие записи таблицы «Проводки» могут иметь одну и ту же аналитику-запись таблицы «Лицо»), которая в свою очередь связана с таблицей «Сотрудники». Теперь становится понятно, что таблица «Лицо» выступает в роли быстрого посредника между основными справочными таблицами и, скажем, таблицей «Проводки». В результате схема будет иметь следующий вид:

Стоит ещё заметить, что если в поле связи «Лицо_» таблицы «Сотрудники» хранится только адрес соответствующей записи таблицы «Лицо», то в том же поле связи таблицы «Лицо» адрес записи хранится с указанием типа лица, например, «00000023 Сотрудники» или «00000155 Аналитики».
Категория (Многие к одному)
Поле связи типа «многие к одному» связывает таблицу «Сотрудники» с таблицей «Классификаторы». Значением поля является адрес записи таблицы «Классификаторы».

Прочувствовали важность связей между таблицами базы данных? Благодаря им, можно не раздувать те или иные таблицы до бесконечности, а просто указывать короткие адреса нужных записей из других таблиц, где находится подробная информация о том или ином объекте.
Сотрудники-Расчёт (Один ко многим)
Поле связи «Сотрудники-Расчёт» устанавливает связь типа «один ко многим» между таблицами «Сотрудники» и «Расчёт».

Зачем это нужно? Дело в том, что именно в таблице «Расчёт» хранятся данные о начислении заработной платы сотрудникам: суммы, рассчитанные на основе табеля учёта рабочего времени, суммы отпусков и больничных, суммы постоянных и разовых начислений/удержаний таких как, премия, льгота на сотрудника, алименты и др. Каждому начислению или удержанию соответствует отдельная строка таблицы «Расчёт». Отсюда и тип связи «один ко многим» – для каждого сотрудника может храниться множество записей о расчёте заработной платы. Подробнее о таблице «Расчёт» будет рассказано ниже.
Подразделение-Расчёт (Один ко многим)
Поле устанавливает связь между корневыми записями таблицы «Сотрудники» (подразделениями) и записями таблицы «Расчёт» – исчисленными суммами н/у, для которых аналитикой является то или иное подразделение.
Сотр-Осн (Один ко многим)
Поле связи типа «один ко многим» с таблицей «Основные средства». Эта связь позволяет быстро найти акт приёмки основного средства, материально-ответственным лицом для которого в акте был указан данный сотрудник. Поскольку один и тот же человек может быть ответственным за несколько основных средств сразу, то тип данного поля «один ко многим». Значит, с помощью данной связи можно для любого сотрудника извлечь из базы данных сведения обо всех актах приёмки подведомственных ему основных средств.
В таблице «Основные средства» поле «Сотр-Осн» содержит адреса материально-ответственных сотрудников из таблицы «Сотрудники».

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

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