Расчеты их зависимость от результатов. Сложные периодические расчеты

Новый объект "План видов расчета" -- отдаленный аналог видов расчета в 7.7. Виды расчета являются объектами данных, а не метаданных. Могут быть предопределенные виды расчета.

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

Новый объект "Регистр расчета" -- отдаленный аналог журнала расчета в 7.7

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

Встроенный язык

Для значительного расширения возможностей платформы была разработана новая унифицированная объектная модель языка 1С:Предприятия 8.0. Это позволило резко расширить возможности платформы, ускорить ее освоение, повысить понятность программных модулей.

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

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

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

При написании программных модулей применяется технология контекстной подсказки (аналог IntelliSense). Текстовый редактор программных модулей поддерживает группировки (свертку) синтаксических конструкций, а также описаний процедур и функций (в виде комментариев).

Функциональность внешней компоненты v7plus.dll включена в платформу в виде объектов "Почта", "Системная Информация", "Интернет Соединение", "FTP Соединение и т.д. Есть средства для работы с XML-документами, а также для последовательного чтения и записи больших текстовых файлов.

Интересно, когда же я все таки прочитаю эту книжку? 8.3 тогда уже выйдет поди)))

Что такое сложные периодические расчеты?

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

Что такое вид расчета, база?

Вид расчета – какая-либо часть из сложного периодического расчета, например, премия.

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

Какая разница между базовым периодом, фактическим периодом и периодом действия?

Период действия – указывается вами, то есть данные, действующие в указанном периоде.

Фактический период- то, что осталось от периода действия, после проведения расчетов (например, уберутся все нерабочие дни).

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

На самом деле вот конкретно этот вопрос я нихера не понимаю. Какая-то словесная эквилибристика, чесслово.

Что такое зависимость по базовому периоду?

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

Что такое вытеснение по периоду действия?

Начнем с того, что «вытеснение» - это влияние на расчет. Некст.Вот мы считаем, что кто-то проработал 20 дней, насчитали ему оклад, а выяснилось, что он отработал всего 10 дней. Тогда оклад надо пересчитать, как раз за тот период, когда сотрудник непосредственно работал, это и называют одинэсники как вытеснение по периоду действия.

Для чего предназначен объект конфигурации План видов расчета?

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

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

Каковы основные свойства плана видов расчета?

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

Зависимость от базы – будут ли находится зависимые по базовому периоду виды расчета.

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

Зависимость по периоду регистрации – будет идти работа с теми данными, чья запись в поле Период Регистрации попадает в базовый период;

Какая разница между базовыми, вытесняющими и ведущими видами расчетов?

Базовые – результаты базовых видов расчета должны быть использовать при перерасчете;

Вытесняющие – вытесняют расчет по периоду действия;

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

Как создать план видов расчета?

Так же, как и все в 1С же! В дереве конфигурации правый клик.

Что такое объект конфигурации Регистр расчета?

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

Многие программисты 1С никогда не сталкивались в своей практике с компонентой «Расчет»,поэтому, когда им приходится сдавать экзамены на Специалиста по Платформе 8.0, где в каждомзадании есть задача по сложным периодическим расчетам, возникают сложности, прежде всего сложности понимания.

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

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

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

Что такое расчеты

В принципе, конечный продукт расчета зарплаты - это набор записей регистра расчета вида:

Сотрудник

Период

Вид расчета

Результат

Данные

Комментарий

Измерение

Служебный

Служебный

Реквизит

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

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

Каждая запись регистра расчетов относится к определенному виду расчета и периоду времени.

Виды расчетов

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

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

Для примера заведем план видов расчета Основной и в нем предопределенные виды расчета оклад , премия , невыход , командировка .

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

Вид расчета

Описание

Пример

По базовому периоду

Результат расчета зависимого периода зависит от результата базового периода. Если результат базового периода изменится, то результат зависимого периода нужно пересчитать.

Премия зависит по базовому периоду от оклада.

Вытеснение по периоду

Период действия зависимого периода вытесняет период действия базового периода, таким образом у базового периода появляется фактический

Невыход влияет на фактический период действия оклада.

Ведущие расчеты

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

Премия зависит по базе от оклада, но также косвенно зависит и от невыхода.

В силу подобного влияния, период действия записи регистра расчетов делится на четыре периода:

Период

Описание

Период регистрации

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

Период действия

В каком периоде действует событие, т.е. к какому периоду относится событие.

Базовый период

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

Фактический период действия

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

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

Графики времени

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

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

Измерение, которое связывается с регистром расчета обычно носит смысл «вид графика».

Дата

Вид графика

Значение

11.01.05 пт

Пятидневка

11.01.05 пт

Шестидневка

12.01.05 сб

Пятидневка

12.01.05 сб

Шестидневка

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

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

Перерасчет

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

Для этого и служат перерасчеты.

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

По сути перерасчеты - это список записей регистра расчета, которые нужно перерасчитать .

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

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

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

Достаточно теории. Попробуем изучить детали на практике. За основу возьмем каркасную конфигурацию.

Постановка задачи:

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

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

Пусть за невыходы с сотрудника взымается штраф в размере половины оклада за период невыхода.

Ход выполнения:

Начальная подготовка

Создадим новый план видов расчета «Основной».

Определим виды расчета и зависимости между ними:

Базовые

Вытесняющие

Ведущие

Оклад

Невыход, Командировка

Премия

Невыход, Командировка

Оклад, Невыход, Командировка

Командировка

Невыход

Занесем эти виды расчета в план видов расчета «Основной» и в свойствахвидов расчета поставим зависимости согласно таблице.

В регистре расчета зарплаты сделаем измерение «Сотрудник» типа «ФизическиеЛица » - чтобы в регистре был разрез аналитики по сотрудникам.

В конфигурации уже имеется документ «Начисление зарплаты».

В нем две даты в шапке - «дата» и «период регистрации», а также по две даты «дата начала» и «датаконца » в каждой строчке.

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

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

Модуль документа будет выглядеть примерно так:

Для К аждого ТекСтрокаСписок Из Список Цикл

// регистр Расчеты

Движение = Движения.Р асчеты.Добавить ();

Движение.С торно = Ложь;

Движение.В идРасчета = ТекСтрокаСписок.ВидРасчета ;

Движение.П ериодДействияНачало = НачалоДня (ТекСтрокаСписок.ДатаНачала );

Движение.П ериодДействияКонец = КонецДня ();

Движение.П ериодРегистрации = ПериодРегистрации ;

Движение.Б азовыйПериодНачало = НачалоДня (ТекСтрокаСписок.ДатаНачала );

Движение.Б азовыйПериодКонец = КонецДня (ТекСтрокаСписок.ДатаОкончания );

Движение.С отрудник = ТекСтрокаСписок.Сотрудник ;

Движение.Г рафикРаботы = ТекСтрокаСписок.График ;

Движение.Р езультат = 0;

Движение.Д анные = ТекСтрокаСписок.Размер ;

КонецЦикла ;

Реквизит Сторно нужен чтобы сторнировать записи (аналог минуса).

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

Все документы датировать будем 20.01.2003, период регистрации будем ставить 02.01.2003 (специально указываю не начальные и конечные данные, здесь это неважно, все равно при записи в ПериодРегистрации преобразуется в начало периода 01.01.2003). Январь 2003 года используем, потому что за этот период заполнены графики работ.

Заведем перерасчет «Перерасчет», добавим в него измерение «Сотрудник», связанное с измерением «Сотрудник».

Играем с Перерасчетами.

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

ВЫБРАТЬ

РасчетыПерерасчет.О бъектПерерасчета ,

РасчетыПерерасчет.В идРасчета ,

РасчетыПерерасчет.С отрудник

ИЗ

РегистрРасчета.Р асчеты.Перерасчет КАК РасчетыПерерасчет

Сформируем три документа - первым начислим оклад сотрудникам А и Б. Сотрудник А работает с 1 по 31 января, Б работает с 1 по 20 января. Вторым начислим премию сотруднику Б за период с 1 по 31 января, третьим назначим невыход сотруднику А с 20 по 25 января.

Играем с Фактическим периодом действия.

Создадим новый запрос - на этот раз в него добавим данные таблицы РегистрыРасчета.Р асчеты.ФактическийПериодДействия .

Сформируем запрос и увидим, что сотруднику А период действия оклада разбит на два периода - с 1 по 19 и с 26 по 31 января. Надеюсь вам понятно, что период был разбит на два, т.к. невыход вытеснил оклад.

Думаю, механизмы работы регистра расчета проясняются на глазах.

Изучаем графики.

Теперь попробуем начислить зарплату по окладу сотрудника.

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

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

Колонка результата

Значение

ЗначениеПериодДействия

На какой период действия в часах была запись в регистре.

ЗначениеФактическийПериодДействия

Сколько сотрудник фактически проработал в часах

ЗначениеБазовыйПериод

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

ЗначениеПериодРегистрации

Сколько рабочих часов в периоде регистрации (месяц январь)


Ключевые слова: регистр расчета, зарплата, ЗУП

Введение

Многие программисты 1С никогда не сталкивались в своей практике с компонентой «Расчет», поэтому когда им приходится сдавать экзамены на Специалиста по Платформе 8.0, где в каждом задании есть задача по сложным периодическим расчетам, возникают сложности, прежде всего сложности понимания.
Попробуем разобраться с этой компонентой в 8.0.

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

Что такое расчеты

В принципе, конечный продукт расчета зарплаты – это набор записей регистра расчета вида:

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

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

Каждая запись регистра расчетов относится к определенному виду расчета и периоду времени.

Виды расчетов

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

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

Для примера заведем план видов расчета Основной и в нем предопределенные виды расчета оклад, премия, невыход, командировка.

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

Ведущие расчеты

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

Премия зависит по базе от оклада, но также косвенно зависит и от невыхода.

В силу подобного влияния, период действия записи регистра расчетов делится на четыре периода:
1. Период регистрации . В каком периоде зарегистрировано событие, т.е. обычно когда введен документ.
2. Период действия . В каком периоде действует событие, т.е. к какому периоду относится событие.
3. Базовый период . Имеет смысл только для периодов, имеющих базовый период – описывает интервал базового периода.
4. Фактический период действия . Если период действия вытесняется другими видами расчетов, то фактический период действия состоит из нескольких периодов, когда этот вид расчета фактически действует.

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

Графики времени

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

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




Дата Вид графика Значение
11.01.05 пт Пятидневка 8
11.01.05 пт Шестидневка 8
12.01.05 сб Пятидневка 0
12.01.05 сб Шестидневка 8

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

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

Перерасчет

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

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

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

Достаточно теории. Попробуем изучить детали на практике. За основу возьмем каркасную конфигурацию.

Постановка задачи:

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

Пусть за невыходы с сотрудника взымается штраф в размере половины оклада за период невыхода.

Ход выполнения:

Начальная подготовка

Создадим новый план видов расчета «Основной».

Определим виды расчета и зависимости между ними:

Занесем эти виды расчета в план видов расчета «Основной» и в свойствах видов расчета поставим зависимости согласно таблице.

В регистре расчета зарплаты сделаем измерение «Сотрудник» типа «ФизическиеЛица» - чтобы в регистре был разрез аналитики по сотрудникам.

В конфигурации уже имеется документ «Начисление зарплаты».

В нем две даты в шапке – «дата» и «период регистрации», а также по две даты «дата начала» и «датаконца» в каждой строчке.

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

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

Модуль документа будет выглядеть примерно так:

Для Каждого ТекСтрокаСписок Из Список Цикл // регистр Расчеты Движение = Движения.Расчеты.Добавить(); Движение.Сторно = Ложь; Движение.ВидРасчета = ТекСтрокаСписок.ВидРасчета; Движение.ПериодДействияНачало = НачалоДня(ТекСтрокаСписок.ДатаНачала); Движение.ПериодДействияКонец = КонецДня(ТекСтрокаСписок.ДатаОкончания); Движение.ПериодРегистрации = ПериодРегистрации; Движение.БазовыйПериодНачало = НачалоДня(ТекСтрокаСписок.ДатаНачала); Движение.БазовыйПериодКонец = КонецДня(ТекСтрокаСписок.ДатаОкончания); Движение.Сотрудник = ТекСтрокаСписок.Сотрудник; Движение.ГрафикРаботы = ТекСтрокаСписок.График; Движение.Результат = 0 ; Движение.Данные = ТекСтрокаСписок.Размер; КонецЦикла;

Реквизит "Сторно" нужен чтобы сторнировать записи (аналог минуса).

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

Все документы датировать будем 20.01.2003, период регистрации будем ставить 02.01.2003 (специально указываю не начальные и конечные данные, здесь это неважно, все равно при записи в ПериодРегистрации преобразуется в начало периода 01.01.2003). Январь 2003 года используем, потому что за этот период заполнены графики работ.

Заведем перерасчет «Перерасчет», добавим в него измерение «Сотрудник», связанное с измерением «Сотрудник».

Играем с Перерасчетами

Для игры откроем консоль запроса – обработка «ПроизовльныйЗапрос» в каркасной конфигурации. Создадим новый запрос конструктором запроса, добавим туда виртуальную таблицу Перерасчеты.Расчеты.Перерасчет, текст запроса будет таким:

ВЫБРАТЬ РасчетыПерерасчет.ОбъектПерерасчета, РасчетыПерерасчет.ВидРасчета, РасчетыПерерасчет.Сотрудник ИЗ РегистрРасчета.Расчеты.Перерасчет КАК РасчетыПерерасчет

Сформируем три документа – первым начислим оклад сотрудникам А и Б. Сотрудник А работает с 1 по 31 января, Б работает с 1 по 20 января. Вторым начислим премию сотруднику Б за период с 1 по 31 января, третьим назначим невыход сотруднику А с 20 по 25 января.

Играем с Фактическим периодом действия

Создадим новый запрос – на этот раз в него добавим данные таблицы РегистрыРасчета.Расчеты.ФактическийПериодДействия.

Сформируем запрос и увидим, что сотруднику А период действия оклада разбит на два периода – с 1 по 19 и с 26 по 31 января. Надеюсь вам понятно, что период был разбит на два, т.к. невыход вытеснил оклад.

Думаю, механизмы работы регистра расчета проясняются на глазах.

Изучаем графики

Теперь попробуем начислить зарплату по окладу сотрудника.

Создадим новый запрос по регистру расчета используя виртуальную таблицу РегистрыРасчета.Расчеты.ДанныеГрафика. У этой виртуальной таблицы можно задать параметр - условие отбора записей, например Сотрудник=&ВыбСотрудник и ВидРасчета=&ВидРасчета и График=&ВидГрафика.
Зададим в параметрах запроса конкретных сотрудников, виды расчета и графиков и посмотрим, сколько часов получается в результате.

Статья еще недописана до конца, многое можно усовершенствовать, но как курс молодого бойца пойдет.

Механизм сложных периодических расчетов позволяет реализовывать различные модели расчета заработной платы.

Работа механизма сложных периодических расчетов обеспечивается двумя объектами прикладного решения: План видов расчета и Регистр расчета.

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

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

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

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

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

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

Отчеты и обработки

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

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

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

Рис. П2.20. Пример настройки ролей в конфигурации

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

Рис. П2.21. Настройка прав для каждой роли в свойствах объекта метаданных в Конфигураторе

Каждому пользователю, работающему в системе «1С:Предприятие» ставится в соответствие одна или несколько ролей (см. Практикум 1-2).

При попытке пользователя выполнить действие, на которое у него нет разрешения, действие выполнено не будет, а система выдаст окно предупреждения «Нарушение прав доступа!»

1 ФИФО – от англ. «First Input, First Output» - «первый пришел, первый ушел»

2 КУДиР – аббревиатура «Книга учета доходов и расходов»

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