Подписка на RSS-ленту

RSS-подписка

Подпишитесь на RSS и получайте свежие материалы в удобной форме!

Глава 10. Структурное построение расчёта заработной платы

31
Авг

Таблица «ФРВ»

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

Название (Строка)

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

График, Шаблон (Двоичные данные)

Эти поля хранят шаблон заполнения того или иного графика и непосредственно сам заполненный график.

День (Время)

Здесь в формате «чч.мм» задаётся продолжительность рабочего дня по графику.

Неделя (Флаги)

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

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

Смена (Строка)

В этом поле хранится номер смены, для которого создан тот или иной график рабочего времени.

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

Папки (Иерархия)

Это поле задаёт структуру справочника «Графики рабочего времени» (узлы, листья). Хранит данные о том, какие графики к какой группе относятся.

Связь (Иерархия)

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

ФРВ-Должности (Один ко многим)

Поле связи типа «один ко многим» устанавливает связь между таблицами «ФРВ» и должности. То есть хранит данные о типовом графике учёта рабочего времени для той или иной должности. Тип связи объясняется тем, что один и тот же график может выступать в качестве типового для нескольких должностей.

График вида н/у (Один ко многим)

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

Так вот, поле связи «График вида н/у» как раз и указывает какой график к какому виду начислений/удержаний выбран. Поскольку каждый график может быть выбран в несколько видов н/у, то тип связи «один ко многим».

ФРВ-Отпуск (Один ко многим)

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

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

23
Авг

Расчётный листок

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

Можно сказать, что расчётный листок представляет собой выборку записей таблицы «Расчёт». Мы постоянно говорили, что практически все ваши действия, хоть как-то связанные с расчётом заработной платы, отображаются записями таблицы «Расчёт»: и начисления по должности, и постоянные н/у, и разовые н/у, и больничные и отпускные. Выборка производится по двум критериям: сотруднику и подходящей дате расчёта.

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

Все записи расчётного листка группируются по начислениям, удержаниям и аналитикам. Определить, какая запись расчётного листка, к какому типу относится, можно с помощью связи «ВНУ-Расчёт», с таблицей «Виды начислений/удержаний».

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

Остаток на начало месяца + Начислено – Удержано – Остаток на конец месяца = К выдаче

Ежемесячно для каждого сотрудника определяются суммы, причитающиеся к выдаче, и суммы остатка. Соответствующие записи делаются в таблице «Расчёт». При этом записи типа «Остаток» связаны только с таблицей «Сотрудники», и ни с какими данными больше. Это понятно, ведь об остатке и нужно-то лишь знать, чей он, когда рассчитан и сколько составляет.

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

11
Авг

Больничные листы

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

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

Для листка нетрудоспособности, оформляемого в программе, создаётся запись таблицы «Отпуск/Больн», в которой хранятся основные данные о больничном:

§       период нетрудоспособности и дата начала больничного (поля «ДатНач», «ДатКнц» и «Дата начала»),

§       график, по которому считаются дни нетрудоспособности (поле «ФРВ-Отпуск», устанавливающее связь с таблицей «ФРВ»),

§       число дней и часов нетрудоспособности (поля «ПропДни» и «ПропЧасы»),

§       процент, в размере которого производятся начисления по больничному листу (поле «Процент»),

§       метка, которой помечаются дни нетрудоспособности в табеле учёта рабочего времени (поле «Метка»).

Записи таблицы «Отпуск/Больн» соответствует запись таблицы «Расчёт», содержащая дополнительные данные о больничном:

§       прежде всего, это вид начисления, по которому производится расчёт сумм по листу нетрудоспособности (поле «ВНУ-Расчёт» устанавливает связь с таблицей «Виды начислений/удержаний»),

§       шифр затрат, к которому относится начисленная сумма (поле «ШПЗ»),

§       сумма, начисленная по листу нетрудоспособности (поле «Сумма»),

§       сотрудник, которому оформлен больничный и подразделение, в котором он работает (поля связи «Сотрудники-Расчёт» и «Подразделение-Расчёт» с таблицей «Сотрудники»),

§       дата расчёта больничного (поле «Дата расчёта»).

Отпуска и больничные, разбиваемые по месяцам

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

06
Авг

Таблица «Семья»

Состав семьи (Многие к одному)

Поле устанавливает связь с таблицей «Сотрудники (расширение)».

Кто (Перечисляемое)

В данном поле хранится степень родства (муж/жена, сын/дочь и др.).

Член семьи (Многие к одному)

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

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

Итак, чтобы вы могли увидеть на экране имя дочки бухгалтера Петрова, программе придётся извлечь данные из следующих таблиц: «Сотрудники», «Сотрудники (расширение)», «Семья», «Частные лица».

01
Авг

Переводы

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

При оформлении приказа на перевод в базе данных происходят следующие изменения:

§       Создаётся запись типа «ПрикПеревод» в таблице «Документ», в которой хранятся дата, номер, тема приказа. А также устанавливается связь между документом и записью о сотруднике, на которого выписан приказ (поле «Лицо1»).

§       Создаётся запись в таблице «Кадровые документы», которая связывает запись приказа с таблицами «Отпуск/Больн» и «Классификаторы». В таблице «Классификаторы» могут находиться записи о причинах перевода.

§       В таблице «Расчёт» создаётся запись типа «Должность». Здесь хранится новый оклад, и ссылка на новую должность сотрудника (через поле «Виды расчётов-Расчёт» и таблицу «Виды расчётов», поле «Виды расчётов-Должности» и таблицу «Должности»).

§       В таблице «Отпуск/Больн» создаётся новая запись, хранящая условия перевода на новую должность. А также связывающая таблицу «Расчёт» с записью таблицы «Документ».

То есть уже ставшая привычной схема ввода и хранения данных.

Приказ на перевод для нескольких сотрудников

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

25
Июл

Схема расчёта заработной платы

К процедуре расчёта программа подходит комплексно, охватывая проблему целиком. Она не может себе представить, что расчёт можно делать как-то усечённо, мол, этот документ в расчёт беру, на второй смотрю, третий примечаю, а четвёртый всё мерещится. Если вы дали программе команду рассчитать кому-то или всем зарплату, она подойдёт к вопросу как примерная ученица, активистка, комсомолка и просто красавица. То есть будет производить расчёт на основе всех имеющихся у неё документов. Более того, программа никогда не хватается за несколько дел сразу, уж если начала рассчитывать зарплату, скажем, Петрову, то пока все расчёты по нему не закончит, считать зарплату Васечкину не станет. То есть нельзя посчитать сначала всем сотрудникам должностные оклады, а потом всем премии.

Мы можем уверенно гарантировать, что если для расчёта значения некоторого н/у «Х» требуется предварительно вычислить значения некоторых других н/у, то будьте спокойны – все нужные значения будут своевременно вычислены, и к расчёту «Х» программа подойдёт во всеоружии.

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

О том, как реализована в базе такая зависимость, мы коротко говорили при рассмотрении таблицы «Виды начислений/удержаний».

Ещё раз о «Таблице входимости»

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

Поле связи «Виды н/у входит в» для каждого вида н/у определяет, в состав каких н/у входит данное. Поле связи «Виды н/у общая сумма из» определяет, на основе каких н/у рассчитывается данное.

Поле «Коэф» определяет коэффициент умножения при расчёте.

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

К моменту расчёта заработной платы, в таблице «Расчёт» должны быть сформированы все необходимые записи (табели, приказы, отпуска, больничные, межрасчётные выплаты, наряды). То есть каждому сотруднику в базе данных соответствует некоторый набор записей таблицы «Расчёт».

§       Перво-наперво, команда «Рассчитать» формирует расчётный листок, то есть делает выборку записей из таблицы «Расчёт». Затем из выборки (и из самой таблицы тоже) удаляются все уже рассчитанные для сотрудника суммы (на случай, если вы делаете перерасчёт). Удаляются, однако, не все суммы. В выборке остаются записи, которые были введены документами (отпуска, больничные, приказы, межрасчётные выплаты, наряды).

§       Теперь к выборке добавляются записи с постоянными н/у сотрудника. Через поле «Расчёт_» эти записи связаны с таблицей «Постоянные н/у».

§       Просматривается таблица «Виды начислений/удержаний» и выбираются те виды н/у, которые рассчитываются для всех. На каждое такое н/у делается запись в таблице «Расчёт». Эти записи через поле «Расчёт_» не связаны ни с какими таблицами.

§       После того, как список записей сформирован, программа начинает последовательно просматривать каждую их них. Все записи, соответствующие тем видам н/у, для которых правило вычисления пустое (то есть эти виды н/у задаются в фиксированной сумме), а также записи, соответствующие закрытым документам (суммы по ним пересчитывать не надо), метятся как рассчитанные. Напомним, что записи таблицы «Расчёт» полем «ВНУ-Расчёт» связаны с записями таблицы «Виды начислений/удержаний», в которой хранится правило расчёта.

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

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

Для всех н/у, сумма по которым определяется командой «СохранитьНУ», в таблице «Расчёт» будут сформированы новые записи. Поле связи «Расчёт» которых, будет указывать на запись, из которой была вызвана команда.

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

§       По итогам расчёта в таблице «Расчёт» формируются записи об остатке и сумме к выдаче. То есть, если в таблице «Расчёт» появилась запись типа «Остаток» (она формируется всегда, даже если остаток нулевой), расчёты по сотруднику проводились. Состояние расчёта указывается в поле ШПЗ этой записи:

!     –  при расчёте возникли ошибки, расчёт не закончен.

ÿ
                –  расчёты по сотруднику закрыты.

+    –  после расчёта в расчётный листок были внесены изменения.

#    –  после внесения изменений сотрудник был закрыт для расчёта.

«пусто»   –  сотрудник не рассчитан.

23
Июл

Справочники «Резерв сотрудников» и «Архив уволенных сотрудников»

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

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

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

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

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

С резервом сотрудников ситуация немного сложнее, здесь допускается иерархическая структура данных. Для того, чтобы не перепутать её с иерархией справочника «Сотрудники», в таблицу помещается специальная запись, поля которой инициализированы значением «нет», а поле «Сотрудники» имеет значение «нет    у». Эта запись будет обозначать как бы корень справочника «Резерв сотрудников». Пусть адрес корневой записи будет «00000001». Остальная иерархия справочника «пляшет» именно от этой записи, то есть записи, находящиеся в корне справочника, будут в поле «Сотрудники» иметь адрес той самой специальной записи с пометкой «у», в нашем случае, «00000001у». Для остальных записей поле «Сотрудники» заполняется аналогично, как это происходит для записей справочника «Сотрудники».

17
Июл

Справочник «Сотрудники»

Справочник «Сотрудники» является ключевым для задачи «Зарплата» комплекса СБиС++. В нём содержится основная информация о сотрудниках предприятия, данные, необходимые для правильного расчёта заработной платы.

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

Информация о сотруднике поделена в базе данных на две очень и очень неравные части, меньшая из которых представлена в таблице «Сотрудники», а большая – в таблице «Сотрудники (расширение)». Сделано это для оптимизации базы данных, для сокращения времени обращения к базе.

Общая схема

Общая схема хранения в базе данных о сотруднике выглядит следующим образом:

Таблица «Сотрудники»

ФИО (Строка)

Фамилия, имя и отчество сотрудника хранятся в базе данных комплекса СБиС++ именно в этом поле рассматриваемой таблицы. Значение поля не может быть пустым, оно и понятно – раз уж вы заводите карточку на сотрудника, то у него, как минимум, есть имя.

ТабНомер (Целое)

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

Принят, Уволен (Дата)

Информация о дате принятия сотрудника на работу и дате его увольнения с вашего предприятия хранится в данных полях, в формате «дд.мм.гггг».

Признаки (Флаги)

Данное поле типа «Флаги» хранит выбранную пользователем комбинацию флагов «Резидент» и «Всегда выдавать копейки».

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

Расширение сотрудника (Один к одному)

Таблицы «Сотрудники» и «Сотрудники (расширение)» связаны между собой связью «один к одному», что понятно – для каждого сотрудника может быть лишь одно расширение, и наоборот.

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

Сотрудники (Иерархия)

Это поле связи типа «Иерархия», задаёт структуру справочника «Сотрудники». У корневых отделов (подразделений) в поле «Сотрудники» указывается значение «корень   у». Слово «корень», явно говорит о том, что данная запись находится в корне, то есть на первом уровне иерархии, а буква «у» – о том, что запись является узлом, то есть на неё ссылаются (находятся как бы внутри неё) другие записи таблицы.

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

Для записей, соответствующих карточкам сотрудников, в поле «Сотрудники» указывается только адрес записи-узла (то есть отдела, подразделения, в котором работает сотрудник).

Лицо_ (На основную таблицу)

Это поле условной связи типа «На основную таблицу». Дело в том, что в

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

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

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

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

Категория (Многие к одному)

Поле связи типа «многие к одному» связывает таблицу «Сотрудники» с таблицей «Классификаторы». Значением поля является адрес записи таблицы «Классификаторы».

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

Сотрудники-Расчёт (Один ко многим)

Поле связи «Сотрудники-Расчёт» устанавливает связь типа «один ко многим» между таблицами «Сотрудники» и «Расчёт».

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

Подразделение-Расчёт (Один ко многим)

Поле устанавливает связь между корневыми записями таблицы «Сотрудники» (подразделениями) и записями таблицы «Расчёт» – исчисленными суммами н/у, для которых аналитикой является то или иное подразделение.

Сотр-Осн (Один ко многим)

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

В таблице «Основные средства» поле «Сотр-Осн» содержит адреса материально-ответственных сотрудников из таблицы «Сотрудники».

Водители-Сотр (Один к одному)

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

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

16
Июл

Наряды

Наряды – ещё один тип документов, которыми может быть начислена заработная плата. Особенно удобно при помощи нарядов вести бригадный расчёт от КТУ.

Схема хранения данных для нарядов точно такая же, как и для приказов, за исключением того, что тип документа в таблице «Документ» будет «Наряд». На каждого члена бригады, входящего в наряд, будет сформирована отдельная запись таблицы «Расчёт» и таблицы «Разовое н/у».

По документам

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

Когда вы даёте программу команду «Сформировать наряд», предварительно указав в поле «По документам» все нужные производственные наряды, происходит следующее:

§       Для индивидуальных нарядов – для каждого сотрудника из всех указанных нарядов будут выбраны суммы выплат. При этом будет учитываться шифр затрат, по каждому сотруднику по каждому ШПЗ будут сформированы итоговые суммы. То есть, если производственные наряды сотруднику были выписаны на несколько ШПЗ, то в наряд для зарплаты этот сотрудник будет включён несколько раз – столько, сколько различных ШПЗ для него встречалось, по каждому ШПЗ будет подсчитана итоговая сумма.

§       Для сводных нарядов – для каждого сотрудника берутся все записи, сделанные для него в производственных нарядах, и объединяются в разрезе отделов (подразделений) и ШПЗ.

Скажем, сотрудник Петров в текущем месяце выполнял работы для цеха1, ШПЗ при этом в нарядах указаны «20-1» и «20-6», и работы для цеха2 с ШПЗ «20-2» и «20-6». Тогда в наряде для расчёта заработной платы фамилия Петрова будет встречаться четыре раза: для цеха1 ШПЗ «20-1», для цеха1 ШПЗ «20-6», для цеха2 ШПЗ «20-2» и для цеха2 ШПЗ «20-6». По каждому цеху в разрезе ШПЗ будут подсчитаны общие суммы.

Вообще говоря, можно задать другой порядок «склейки» данных из производственных нарядов. Для этого достаточно в ресурсе «Сводный наряд» (файл zpl.rs) изменить временные индексы. Так, если указать временный индекс «Нормы-Разовые н/у», то группировка данных в наряд для зарплаты будет происходить по видам работ, то есть будут подсчитываться общие суммы по каждому виду работ.

§       Для бригадных нарядов – для каждого сотрудника на основе производственных нарядов подсчитываются общие суммы в разрезе отделов и ШПЗ.

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

Обратите внимание, что при создании наряда в задаче «Производство», его сумма остаётся белой до тех пор, пока на его основе не будет сформирован наряд задачи заработная плата. «Жёлтые» производственные наряды программа не даст ни открыть для редактирования, ни удалить. Чтобы внести изменения в производственный наряд, потребуется либо удалить связанный с ним наряд задачи «Зарплата», либо в наряде для зарплаты удалить из поля «По документам» тот наряд, который хотите редактировать.

14
Июл

Таблица «Образование»

Кроме данных об образовании таблица «Образование» содержит записи о трудовой деятельности сотрудника на других предприятиях и об его инвалидности.

Тип (Перечисляемое)

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

Вид (Перечисляемое)

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

Форма обучения (Перечисляемое)

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

Учебное заведение (Многие к одному)

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

Дата начала, Дата окончания (Дата)

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

Дата выдачи диплома (Дата)

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

Специальность (Строка)

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

Факультет (Строка)

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

N диплома (Строка)

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

Стаж0 (Текст)

Хранится стаж работы сотрудника в других организациях.

Стаж1 (Текст)

Общий научный стаж.

Стаж2 (Текст)

Педагогический стаж.

ОКПДТР­ (Строка) ­

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

Вид деятельности (Перечисляемое)

В данном поле хранятся данные о виде деятельности сотрудника (данные необходимы для формирования формы СЗВ-К, предоставляемой в ПФР).

Формат данных о научном сотруднике

Для каждой записи научного сотрудника в карточке справочника «Сотрудники» программа создаёт три записи в таблице «Образования». Поскольку содержимое этих записей не совсем очевидно, рассмотрим каждую из них отдельно. Все записи имеют тип «Учёная степень». Первые две записи из трёх содержат данные непосредственно об учёной степени и звании сотрудника: поле «Специальность» – название учёной степени/звания, поле «Факультет» – название документа о присвоении учёной степени/звания, поле «Дата выдачи диплома» – дату документа, поле «N диплома» – номер документа. Третья запись содержит следующие данные: в поле «Специальность» – название специализации, в поле «N диплома» – название научной специальности, в поле «Факультет» – название кафедры, в поле «Стаж0» – стаж по специализации, в поле «Стаж1» – общий научный стаж, в поле «Стаж2» – педагогический стаж.