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

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

axel_work

  • Проверенный
  • ***
  • Сообщений: 161
  • ФИО: Алексей
Re: Задача 3.04
« Ответ #75 : Март 07, 2016, 12:18:58 pm »
Критикуем и обсуждаем.

Первый вариант - как у большинства.

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

Доплата и надбавка - в доп. начислениях.

axel_work

  • Проверенный
  • ***
  • Сообщений: 161
  • ФИО: Алексей
Re: Задача 3.04
« Ответ #76 : Март 07, 2016, 12:28:20 pm »
Второй вариант - как предлагал кто-то на 5-й странице форума.

Сначала пишем только оклад в РР и доплату с базовыми периодами, равными периодам командировки. Доплата есс-но зависит по базе от оклада. Считаем оклад, потом считаем доплаты. Получаем суммы оклада за периоды командировки.

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

Минус такой - два раза полная запись (с вытеснением) и в РР ОсновныеНачисления и в Доп. начисления. Ну и кодить больше и дольше немного :)

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

ЗЫ: Все не вкурю - получение рабочих дней как правильно? Такая же ерунда - что по графику командировки получаются (базовый период). Можно было бы сделать ресурс Дни и туда писать при расчете оклада период действия план, т.е. как раз рабочие дни. Но если оклад не начислять - то и рабочих дней не будет, тоже нехорошо, а кроме того, непонятно когда человек в командировке - рабочие дни у него по окладу надо считать для этого ресурса (Дни) или и по графику командировки тоже?


aevdovin

  • Пользователь
  • **
  • Сообщений: 21
  • aevdovin
  • ФИО: Вдовин Андрей Евгеньевич
Re: Задача 3.04
« Ответ #77 : Апрель 05, 2016, 10:13:00 pm »
Всем привет.

Делаюсь своим решением. Это моя 2-ая  самостоятельная задача по РР. После 3.35 это пошла легче, правда в некоторых местах ухитрялся как мог )) Например принуждаю пользователей вводить предполагаемую сумму оклада при расчете командировочных. Ведь в задаче есть очень интересное условие: "Если сумма начисленных командировочных, оказывается меньше, чем сумма оклада, который мог бы быть начислен за дни командировки, тогда сотруднику начисляется доплата до оклада"   - долго думал делать доп. вид расчета "ДоплатаДоОклада", но решил просто параллельно с командировкой считать возможный оклад за эти дни - и выбирать МАКС(Знач1, Знач2)...

Fat_Mike

  • Пользователь
  • **
  • Сообщений: 12
Re: Задача 3.04
« Ответ #78 : Май 20, 2016, 04:28:01 am »
Посмотрите ребята решение, делаю доплату прямо в коде, путем сравнения подсчитанного оклада и командировки. Надбавки считается базой от оклада как обычно, фишка в частично попадании в период действия базового расчета. Ставишь в расчете надбавке базовый период, равный длительности вахты и он берет базу от оклада равную длительности дежурства. Командировку вытесняет оклад,  базовые у него все виды расчета а тут фишка в базовом периоде, выставляем прошлый месяц и он берет все начисления за прошлый месяц. Естественно в запросе нужно просуммировать результаты базовых регистров и считать командировку в последнюю очередь, то есть зависимым последнего уровня.

alfalume

  • Проверенный
  • ***
  • Сообщений: 103
Re: Задача 3.04
« Ответ #79 : Июль 18, 2016, 07:40:37 am »
мое решение, покритикуйте

erdem.badluev

  • Проверенный
  • ***
  • Сообщений: 139
Re: Задача 3.04
« Ответ #80 : Октябрь 09, 2016, 01:00:59 pm »
 :D моё решение. всё просто.

Павел2С

  • Новичок
  • *
  • Сообщений: 2
Re: Задача 3.04
« Ответ #81 : Ноябрь 08, 2016, 11:38:20 am »
Решение с максимально прозрачным кодом, для понимания, где командировка сделана двумя начислениями. Одно по Основным начислениям, второе по дополнительным.

majestic

  • Новичок
  • *
  • Сообщений: 9
  • ФИО: Александр
Re: Задача 3.04
« Ответ #82 : Ноябрь 28, 2016, 05:09:36 pm »
Павел2С, посмотрел ваше решение. Я сам при решении данной задачи по-другому реализовал начисление надбавки за вахту, у меня данная надбавка имеет период действия, и рассчитывается от оклада за тот же период действия. Судя по всему я не так понял условие задачи. В варианте, когда в документе не указан оклад, но указана надбавка, выходит ошибка при проведении. Связана с тем, что при получении базы для надбавки выборка из запроса не содержит ни одной записи, у вас нет проверки выборки на наличие записей. И никак не выполнено условие задачи "в течение расчетного периода первоначальное значение оклада может быть один раз изменено". В вашей базе можно изменять оклад каждый день. А вообще после просмотра вашего решения нашел много собственных недочетов :) Спасибо.

p/s/ Если будет желание посмотреть ошибку, прикрепил базу, посмотрите документ №4
« Последнее редактирование: Ноябрь 28, 2016, 05:13:05 pm от majestic »

majestic

  • Новичок
  • *
  • Сообщений: 9
  • ФИО: Александр
Re: Задача 3.04
« Ответ #83 : Ноябрь 28, 2016, 05:24:42 pm »
Павел2С, а измененная форма списка документа "НачислениеЗарплаты" - это для удобства?

mxs89

  • Пользователь
  • **
  • Сообщений: 16
  • Нужно делать так, как нужно
  • ФИО: Макаров Максим
Re: Задача 3.04
« Ответ #84 : Октябрь 17, 2017, 02:28:55 pm »
Второй вариант - как предлагал кто-то на 5-й странице форума.

Сначала пишем только оклад в РР и доплату с базовыми периодами, равными периодам командировки. Доплата есс-но зависит по базе от оклада. Считаем оклад, потом считаем доплаты. Получаем суммы оклада за периоды командировки.

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

Минус такой - два раза полная запись (с вытеснением) и в РР ОсновныеНачисления и в Доп. начисления. Ну и кодить больше и дольше немного :)

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

ЗЫ: Все не вкурю - получение рабочих дней как правильно? Такая же ерунда - что по графику командировки получаются (базовый период). Можно было бы сделать ресурс Дни и туда писать при расчете оклада период действия план, т.е. как раз рабочие дни. Но если оклад не начислять - то и рабочих дней не будет, тоже нехорошо, а кроме того, непонятно когда человек в командировке - рабочие дни у него по окладу надо считать для этого ресурса (Дни) или и по графику командировки тоже?
как решения проверяете? создал новое начисление, заполнил график и начислил сотруднику оклад, убедился, что в основных начислениях он появился. далее начисляю второй строкой командировку. период тот же. что ожидаю, оклад в ноль, командировка в ноль, предыд. месяц пустой, и надбавка = окладу. что вижу - оклад 0 и командировка 0.

mxs89

  • Пользователь
  • **
  • Сообщений: 16
  • Нужно делать так, как нужно
  • ФИО: Макаров Максим
Re: Задача 3.04
« Ответ #85 : Октябрь 17, 2017, 02:33:49 pm »
первый вариант так же не работает.

alenka2296

  • Новичок
  • *
  • Сообщений: 4
Re: Задача 3.04
« Ответ #86 : Август 30, 2018, 11:46:20 am »
как правильно понять условие?

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

Вводить вид расчета Доплата в Дополнительные начисления и тогда в доке Начисление зарплаты получается всегда если есть командировка, надо начислять доплату, а там уже сумма доплаты либо 0, либо разница оклад-командировка?
Тогда надо и какую то проверку делать чтобы не было попыток начисления доплат без командировок? неудобно как то

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

есть у кого-то пример на этот счет?

reset

  • Новичок
  • *
  • Сообщений: 4
Re: Задача 3.04
« Ответ #87 : Июнь 21, 2019, 12:03:45 am »

Как то все всё усложняют. Какие-то периоды делят ...  :o

В моём решении:
1. Изменение оклада пользователь фиксирует непосредственно в документе начисления (2 строки с окладом и разным периодом)
2. НедополученныйОклад - ресурс регистра основных начислений
При расчете оклада - заполняем его с "плюсом" (Результат по базовому периоду - Результат)
При расчете командировки - с "минусом" (просто -Результат)
При расчете Добавки - получаем базу по нему

Все условия задачи соблюдены. Можно вводить несколько командировок за один месяц (окладов кстати тоже).





molodchic

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: булатов владимир петрович
Re: Задача 3.04
« Ответ #88 : Июль 30, 2021, 02:59:12 pm »
Ребят из тех кто хорошо разбирается в расчетных механизмах, проверьте пжлста.
Кратко.
1. Разделил на два регистра Основные(Оклад,Командировка) и дополнительные начисления(НадбавкаЗаВахту).
2. Создал два регистра сведений для хранения промежуточных данных об окладе и проценте надбавки.
3. Основная трудность возникла в командировках.
  3.1. Решил добавить доп.реквизит в регистр основные начисления "Дубль".
  3.2. Привязал к каждой записи о командировках дубль с базовым периодом за период действия.
  3.2.1. Сначала производил запись окладов, так как оклад и командировка могли оказаться как в разных так и в одном периоде действия в одном документе.
  3.3. При получении базы (отдельно доп и осн базы) в существующую запись записываю расчетное значение, в дубль только расчет по базе(то значение оклада которое могло быб быть начислено).
  3.4. Сохраняю номера строк дублей в массив после обхода выборки сравниваю значение и тут уже на ваш вкус или создать доп запись с доплатой или заменить значение если оно не соответствует условию задачи.
  3.5. отчет не делал (не сложный)

  3.4.