Автор Тема: Задача 3.03  (Прочитано 35675 раз)

0 Пользователей и 1 Гость просматривают эту тему.

SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Задача 3.03
« : Сентябрь 07, 2010, 12:07:40 am »
Просмотрел ветку задачи в 8.1, ни в одном решении не увидел требования, что у сотрудника может быть стаж. Как я решал:
 1. Данные о приеме на работу (дата) добавил в спр. ФизЛица, туда же добавил три реквизита: Год, Месяц, День для хранения сведений о пред. стаже. Можно было и в РС сделать, просто итак их много в задаче получилось.
 2. Долго думал как лучше выцепить сведения о проценте премии, вот как получилось:
 -Определяем сколько полных лет сотр. отработал (нужно учесть еще стаж который мог быть у сотр)
 -Соединяем таблицу ОснНачисления док. НачислениеЗП левым соединением с РС Премия (там у меня процент премии от стажа зависит) по условию что СколькоОнОтработал >= ЧтоВРегистреПремия, затем группируем а процент Премии берем МАКСИМУМ
 На расчеты мало задач, решал, поэтому есть вопросы, не хочется в посл. задачах те же ошибки делать:
 1. Премия начисляется процентом от начисленного в том же периоде оклада. Сделал зависимость от базы по периоду регистрации, это норм? или все равно надо по периоду действия?
 2. Правильно ли я понимаю, что связь через реальные таблицы должна быть только когда мы считаем базу и эта вирт. таблица
 может содержать разное количество строк по сравнению с реальной (например в доп начислениях у нас есть ПремияОтОклада и ПремияСуммой, для которой базы нет, то есть в вирт таблицу она не попадет.) А если у нас все начисления имеют базу, тогда можно и не соединять через реальную табл.
 3. Видел у некоторых ребят, в модуль расчета передают не только ссылку на регистратор, но и сам Объект Движения документя Начисление. То есть теперь, не надо отбор по регистратору делать, по сути все движения у нас уже есть. Задал этот вопрос Павлу, он ответил, что если будут перерасчеты, то это плохой вариант. А если их не будет? Кто как думает?
 4. Надо ли стараться для расчета (в общем модуле) все начисления выбирать одним запросом? Или будет нормально на каждый План видов расчета по запросу?
 5.Буду рад любым комментариям по момему решению)
Вложения:
3.03.dt
« Последнее редактирование: Сентябрь 07, 2010, 12:08:57 am от Сергей »

palax

  • Пользователь
  • **
  • Сообщений: 45
  • ФИО: Алексей
Задача 3.03
« Ответ #1 : Сентябрь 08, 2010, 10:57:09 am »
Вот функция ;

Функция ПремияОтСтажа(Значение)Экспорт;
 Запрос = Новый Запрос;
 Запрос.Текст = "
 | ВЫБРАТЬ
 |   ШкалаПремииОтСтажа.ЗначениеМин,
 |   ШкалаПремииОтСтажа.ЗначениеМакс,
 |   ШкалаПремииОтСтажа.Процент
 |ИЗ
 |   РегистрСведений.ШкалаПр емииОтСтажа КАК ШкалаПремииОтСтажа
 |ГДЕ
 |   ШкалаПремииОтСтажа.ЗначениеМин < &Значение
 |   И ШкалаПремииОтСтажа.ЗначениеМакс > &Значение";
 Запрос.УстановитьПараметр("Значение",Значение);    //Число
 РезультатЗапроса = Запрос.Выполнить();

Выборка=РезультатЗапроса.Выгрузить();

Возврат ?(Значение=Неопределено,0,Выборка[0].Процент);

КонецФункции

2. в запросе при вычислении РасчетДН стаж расчтывал так:

ВЫРАЗИТЬ(РАЗНОСТЬДАТ(СотрудникиСрезПервых.ДатаПриема, &ПериодРегистрации, МЕСЯЦ) / 12 + СотрудникиСрезПервых.СтажНаПрошлойРаботе КАК ЧИСЛО(15, 0)) КАК Стаж

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

3. В расчете ДН пишем следующее:

Если Выборка.ВидРасчета=ПланыВидовРасчета.ДополнительныеНачисления.Премия тогда
 НаборЗаписей[Выборка.НомерСтроки-1].Размер=ПремияОтСтажа(Выборка.Стаж);
 НаборЗаписей[Выборка.номерСтроки-1].Результат=Выборка.База*ПремияОтСтажа(Выборка.Стаж)/100;
 КонецЕсли;

« Последнее редактирование: Сентябрь 08, 2010, 11:28:28 am от Алексей »


SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Задача 3.03
« Ответ #2 : Сентябрь 08, 2010, 11:49:38 am »
palax,
Quote
Думаю надо рег.сведений завести СтажПредРаботе(изм-Сотр. ресурс -Значение). Справочник для этого не подойдет явно.

 Хм..Я предполагаю, что справочник ФизЛица это как бы спр. "Сотрудники". То есть если там есть "элемент", то этот "элемент" принят на работу. При приеме на работу указывается дата приема и пред. стаж и они не меняются! Если сотрудник уволился и потом опять пришел на работу, то он заново попадает в этот спр., графа пред. стаж заполняется из его трудовой (расчитывается кадровиком). Так что по моему справочник не так плохо. Ну единственное нужно бы конечено новый спр. завести Сотрудники, но его тада заполнять придется. Поэтому считал так.
 
Quote
и никакие дни и месяцы нам не нужны. зачем усложнять, в шкале их же нет в сборнике, там говорится только про года...

 Дни и месяцы используются в типовой зупии, взял от туда. А вдруг сотрудник отработал 2 года и 1 день, устроился к нам и через 364 дня начисляем премию. Если этот день не указать, то премия будет 10. А если указать получиться 3 полных года и будет 15.
 Про функцию пока не могу посмотреть, но могу сказать, что у меня точно верно считает премию, в независимости от количества строк в шкале.
 Спасибо, что ответил, я знаю ты уже сдал этот экзамен, если тебе не трудно посмотри эту базу на предмет реализации самих механизмов расчета. Или мои вопросы в первом посте)

Добавлено (08.09.2010, 11:49)
---------------------------------------------
Слушай, ты при расчете премии, получаешь запросом, данные из регистра, перебираешь их для каждой строки вызываешь функцию? Запрос в цикле?


palax

  • Пользователь
  • **
  • Сообщений: 45
  • ФИО: Алексей
Задача 3.03
« Ответ #3 : Сентябрь 08, 2010, 04:53:00 pm »
SergTH000, вот решение мое, пересмотри свой метод записи в регистр расчета начальных данных. Ты при проведении делаешь запрос к ТЧ(я то же люблю запросы), но потом делаешь еще цикл и все через точку, а это тормозит систему. я к примеру подготавливаю запрос и потом разом заношу все данные , все просто и красиво))) как мне кажется...Обрати внимание на функцию для расчета процента премии от стажа...Думаю не стоит добавлять в ТЧ дока Нач.Зар. колонки Подразделение,Должность. т.к все пусть хранится в регистре сведений и при расчете не надо думать правильно ли ты выбрал подразделение сотрудника. весь выбор скрыт от пользователя в процедуре записи в рег.расчета..

Добавлено (08.09.2010, 16:53)
 ---------------------------------------------
 

Quote (SergTH000)
Если сотрудник уволился и потом опять пришел на работу, то он заново попадает в этот спр.,
, вот именно поеэтому и нужно все регистре держать
Вложения:
palax-8.2-3.03.dt
« Последнее редактирование: Сентябрь 08, 2010, 08:44:05 pm от Алексей »

SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Задача 3.03
« Ответ #4 : Сентябрь 08, 2010, 04:56:41 pm »
palax, Спасибо ща гляну.
 
Quote
Думаю не стоит добавлять в ТЧ дока Нач.Зар. колонки Подразделение,Должность. т.к все пусть хранится в регистре сведений

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

palax

  • Пользователь
  • **
  • Сообщений: 45
  • ФИО: Алексей
Задача 3.03
« Ответ #5 : Сентябрь 08, 2010, 04:56:42 pm »
Quote (SergTH000)
Дни и месяцы используются в типовой зупии, взял от туда. А вдруг сотрудник отработал 2 года и 1 день, устроился к нам и через 364 дня начисляем премию. Если этот день не указать, то премия будет 10. А если указать получиться 3 полных года и будет 15.
говорю не заморачивайся, в задаче от тебя другое требуется, посмотри в условие где ты видишь про дни и месяцы? посмтори на шкалу где месяцы и дни? в шкале черным по белому целые цифры стоят.Поэтому не надо придумывать себе лишних проблем-гляди в суть задачи и тогда победишь. Если что обращайся...чем могу помогу...
« Последнее редактирование: Сентябрь 08, 2010, 04:58:00 pm от Алексей »

SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Задача 3.03
« Ответ #6 : Сентябрь 08, 2010, 04:59:52 pm »
palax, Смотри, сотрудник РАНЬШЕ отработал 2 года 1 месяц. Пришел к нам 01.01.2010. Через 11 месяцев мы начисляем ему премию - 01.11.2010. Какой стаж у сотрудника? Если ты укажешь только полные года при приеме то у него будет 2 года, если с месяцем то 3 года. Это разные премии.
 Месяцы и Дни нужны для подсчета ПОЛНЫХ ЛЕТ
« Последнее редактирование: Сентябрь 08, 2010, 05:01:03 pm от Сергей »

palax

  • Пользователь
  • **
  • Сообщений: 45
  • ФИО: Алексей
Задача 3.03
« Ответ #7 : Сентябрь 08, 2010, 05:06:26 pm »
У меня сборник от 8.1, а нового нет, нарисуй какой у тебя вид расчета попробую сделать как у тебя в сборнике...

Добавлено (08.09.2010, 17:06)
---------------------------------------------

Quote (SergTH000)
palax, Смотри, сотрудник РАНЬШЕ отработал 2 года 1 месяц. Пришел к нам 01.01.2010. Через 11 месяцев мы начисляем ему премию - 01.11.2010. Какой стаж у сотрудника? Если ты укажешь только полные года при приеме то у него будет 2 года, если с месяцем то 3 года. Это разные премии. Месяцы и Дни нужны для подсчета ПОЛНЫХ ЛЕТ

 ...Думаю ты лезешь в дебри. Тогда возьми функцию с конфы ЗУП и пиши с месяцами и днями, думаю препод этого точно не поймет)))

SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Задача 3.03
« Ответ #8 : Сентябрь 08, 2010, 05:07:39 pm »
Подразделение|Сотрудник|Вид расчета|Должность1|Должность2|...|

Итого


palax

  • Пользователь
  • **
  • Сообщений: 45
  • ФИО: Алексей
Задача 3.03
« Ответ #9 : Сентябрь 08, 2010, 05:09:39 pm »
Пойми от тебя совсем другое требуется, я то же когда готовился заморачивался на такие мелочи пока не отучили от ерунды, а научили в суть глядеть.

Добавлено (08.09.2010, 17:09)
---------------------------------------------

Quote (SergTH000)
Подразделение|Сотрудник|Вид расчета|Должность1|Должность2|...| Итого
, ну и у меня такой же, чем тебе мой отчет не понравился?!

SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Задача 3.03
« Ответ #10 : Сентябрь 08, 2010, 05:12:48 pm »
palax, Если тебе не сложно посмотри мой код. Там нет дебрей. Просто от даты приема на работу я отнимаю год, потом месяц, потом день и получаю так называемую Актуальную дату стажа. Нахожу разность дат от этой и даты регистрации, получаются как раз полне года которые сравниваем с регистром. От зупа взял только идею.

Добавлено (08.09.2010, 17:12)
---------------------------------------------

Quote
ну и у меня такой же, чем тебе мой отчет не понравился?!

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

palax

  • Пользователь
  • **
  • Сообщений: 45
  • ФИО: Алексей
Задача 3.03
« Ответ #11 : Сентябрь 08, 2010, 05:15:53 pm »
Quote (SergTH000)
palax, Смотри, сотрудник РАНЬШЕ отработал 2 года 1 месяц. Пришел к нам 01.01.2010. Через 11 месяцев мы начисляем ему премию - 01.11.2010. Какой стаж у сотрудника? Если ты укажешь только полные года при приеме то у него будет 2 года, если с месяцем то 3 года. Это разные премии. Месяцы и Дни нужны для подсчета ПОЛНЫХ ЛЕТ
, А ЕЩЕ ГОД МОЖЕТ БЫТЬ ВЫСОКОСНЫМ И В ФЕВРАЛЕ РАЗНОЕ КОЛ-ВО ДНЕЙ, ТОГДА ТОЖЕ РЕАЛИЗУЙ И УЧТИ)))-понимаешь теперь, что это все мелочи?!)))

Добавлено (08.09.2010, 17:15)
---------------------------------------------

Quote (SergTH000)
Из за того что у сотрудника могут быть разные должности, приходится в ТЧ документа Начисление, указывать на какую должность сотруднику ты начисляешь оклад. Для этого и нужны колонки в ТЧ
, нет ты не понял, отчет совсем другой смысл в себе несет

SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Задача 3.03
« Ответ #12 : Сентябрь 08, 2010, 05:16:55 pm »
palax,
Quote
А ЕЩЕ ГОД МОЖЕТ БЫТЬ ВЫСОКОСНЫМ И В ФЕВРАЛЕ РАЗНОЕ КОЛ-ВО ДНЕЙ, ТОГДА ТОЖЕ РЕАЛИЗУЙ И УЧТИ

 При моем методе это учитывается. Я всегда получу реальное полное количество лет отработанных сотрудником. Точнее это учитываю не я, а функция запроса РАЗНОСТЬДАТ
« Последнее редактирование: Сентябрь 08, 2010, 05:22:58 pm от Сергей »

palax

  • Пользователь
  • **
  • Сообщений: 45
  • ФИО: Алексей
Задача 3.03
« Ответ #13 : Сентябрь 08, 2010, 05:17:39 pm »
Quote (SergTH000)
Из за того что у сотрудника могут быть разные должности, приходится в ТЧ документа Начисление, указывать на какую должность сотруднику ты начисляешь оклад. Для этого и нужны колонки в ТЧ
, изменение должности во времени -это регистр сведений Сотрудники, там же и подразделение

SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Задача 3.03
« Ответ #14 : Сентябрь 08, 2010, 05:22:00 pm »
Quote
нет ты не понял, отчет совсем другой смысл в себе несет

 А какой? Разве это не означает, что у сотрудника могут быть разные должности? А если так то на какую должность ты начисляешь оклад, если колонки должность у тебя нет?

Добавлено (08.09.2010, 17:22)
---------------------------------------------
palax,

Quote
изменение должности во времени -это регистр сведений Сотрудники, там же и подразделение

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