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

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

sada

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Андрей
Задача 3.22
« : Октябрь 03, 2010, 12:20:53 pm »
Мой вариант решения задачи 3.22
Вложения:
1Cv8_sada_3_22.dt

SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Задача 3.22
« Ответ #1 : Октябрь 03, 2010, 07:35:18 pm »
sada, Ну написал бы хоть как ты понял задачу, а то разбирать решения даже не зная что и зачем не охота как то +)
 Как я делал: ОснНачисления - Надбавка, Доп - Оклад, Премия, Удержания - Взносы.
 Я норму дней храню в РС. При расчете Надбавки если ЗначениеФактПД - Норма > 0 получаю базу делю на Норму и умножаю на эту разницу.
 Все остальное в задаче несколько типовое: вводить свои виды и т.д. Ручную корректировку сделал как у Чистова на вебинаре=) Перерасчет осилил только ОН...=) однообразная задача какая то

Добавлено (03.10.2010, 19:27)
---------------------------------------------
sada, Че то я не понял у тебя как учитывается что за каждый переработанный час сотруднику платят надбавку?

Добавлено (03.10.2010, 19:33)
---------------------------------------------
Ух нифига у тебя мудрено все как для ручной корректировки, посмотри мое решение=) Я обработку проведения документа сделал экспортной, из модуля формы вызвыю ее в тразакции передаю в форму результат и отменяю транзакцию все дела - документ не провелся, результат посчитался=)

Добавлено (03.10.2010, 19:35)
---------------------------------------------
sada, И еще самое точное добавить реквизит типа булево - Корректировка, если он истина данные просто записываются в регистр без расчета.


Вложения:
3.22.dt


sada

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Андрей
Задача 3.22
« Ответ #2 : Октябрь 03, 2010, 09:42:54 pm »
SergTH000,
 Да, код хороший, такой вариант можно даже быстрее чем за час написать. 5+ wink

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

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

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

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

Посмотрел той вариант по переработке, думаю он правильный.

« Последнее редактирование: Октябрь 03, 2010, 10:29:18 pm от Андрей »

SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Задача 3.22
« Ответ #3 : Октябрь 03, 2010, 10:14:31 pm »
sada,
Quote
Почему ты для расчета передаешь только ссылку, а не готовый набор записей, неужели создание нового набора записей и отбора по регистратору работает быстрее, чем передача готового набора?

 Честно, не знаю=) мне кажется, что также. Просто я набил руку, у меня такой код на автомате идеь и не хочу ее сбивать. Только из-за скрости.
 
Quote
Я не реализовывал механизм по расчету сверхурочных часов. Как отразить переработку в системе, если все работают по графику. Мне не понятен этот момент, вот недоработку можно отразить уменьшением количества дней работы в месяце, а переработку как? Накручивать не хочется, по этому я просто ввел количество часов переработки в документ, и от него рассчитывал переработку.

 Я думаю что расчетчик сам корректирует график. Например Бельдыев отработал в среду не 8 как предполагалось а 12 расчетчик залез и исправил. На этом мое решение и основывается, фактический период действия как раз то что сотрудник реально отработал. Или может ему норму установят поменьше и получится что он переработает всегда сколько то часов
 
Quote
В задаче есть такое условие «После проведения расчетов, в том же расчетном периоде размер суммы может быть признан ошибочным и подлежит исправлению.» - я предполагаю, что это намек на то, что при изменения оклада , надо фиксировать перерасчет в текущем периоде.

 Да я тоже так подумал: при изменении константы - добавить в перерасчет записи (ну также как мы там из расходной передавали). Да забыл потом=) Я сейчас стараюсь во всех задачах неясности прояснить, завтра сдавать иду=) поэтому бросаю когда уж точно знаю как доделывать=)

Добавлено (03.10.2010, 22:14)
 ---------------------------------------------
 

Quote
Да, код хороший, такой вариант можно даже быстрее чем за час написать. 5+

 Спасибо=) Но идея с корректировкой не моя, взял у Чистова=)
« Последнее редактирование: Октябрь 03, 2010, 10:18:57 pm от Сергей »

sada

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Андрей
Задача 3.22
« Ответ #4 : Октябрь 03, 2010, 10:25:01 pm »
Quote (SergTH000)
Я думаю что расчетчик сам корректирует график. Например Бельдыев отработал в среду не 8 как предполагалось а 12 расчетчик залез и исправил. На этом мое решение и основывается, фактический период действия как раз то что сотрудник реально отработал.

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

Удачи :))) , пиши завтра как и что.. smile


SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Задача 3.22
« Ответ #5 : Октябрь 03, 2010, 10:30:42 pm »
sada, Спасибо, обязательно напишу=)

ut2k5

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Максим
Задача 3.22
« Ответ #6 : Октябрь 05, 2010, 11:52:07 am »
SergTH000, ага мне тоже интересно, удачи на экзамене, скоро и мы там будем smile

hapcher

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Марина
Задача 3.22
« Ответ #7 : Октябрь 11, 2010, 04:05:28 pm »
SergTH000, в чем смысл флажка "Корректировка"? Я ввела два начисления за один РП и теперь в базе две записи с ВР "Оклад фиксированной суммой". Может быть, в данной задаче следует использовать вытеснение или как-то организовать сторнирование предыдущих записей?

sada

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Андрей
Задача 3.22
« Ответ #8 : Октябрь 12, 2010, 08:58:10 pm »
hapcher, думаю можно просто в документе условие наложить (провеку на заполненность реквизита "Размер") только по окладу, если размер установлен, то не расчитываем а берем из реквизита а если не установлен то расчитваем , т.е. после расчета если что то не понравилось по окладу, заходим в документ и введя нужную цифру переповодим его.

hapcher

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Марина
Задача 3.22
« Ответ #9 : Октябрь 13, 2010, 09:57:43 pm »
А чем для данной задачи не подходит такой вариант: рассчитываем документ, проводим (без расчета), когда захотим откорректировать, опять заходим в этот документ и просто меняем сумму, затем проводим? Насколько я правильно поняла, нам вовсе не обязательно хранить информацию о том, что какая-то запись была откорректирована, нам просто необходимо менять сумму начисления без расчета.

sada

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Андрей
Задача 3.22
« Ответ #10 : Октябрь 14, 2010, 05:06:23 am »
hapcher, Я думаю, мы об одном и том же говорим smile , в этой задаче нет необходимости заполнять реквизиты документа по результатам расчета, по этому после изначального расчета реквизит "размер" будет пустым. А когда необходимо откорректировать записи расчета по этому документу по окладу, мы его открываем и вводим нужное значение, при проведении т.к. реквизит размер не пустой, то уже ничего не считаем по окладу, а берем значение из него.

Zhora_Vlg

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Георгий
Задача 3.22
« Ответ #11 : Октябрь 18, 2010, 05:57:25 am »
Выполнение перерасчета сделал простым перепроведением объектов перерасчета.
 Так можно, кто знает?
Вложения:
Zhora_Vlg-3.22.dt
« Последнее редактирование: Октябрь 18, 2010, 05:57:39 am от Георгий »

SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Задача 3.22
« Ответ #12 : Октябрь 18, 2010, 05:32:22 pm »
Zhora_Vlg, Нет, так нельзя=) Получаешь наборы записей кот нужно пересчитать и через общий модуль перерасчитываешь.

Добавлено (18.10.2010, 17:32)
 ---------------------------------------------
 hapcher,

Quote
в чем смысл флажка "Корректировка"? Я ввела два начисления за один РП и теперь в базе две записи с ВР "Оклад фиксированной суммой". Может быть, в данной задаче следует использовать вытеснение или как-то организовать сторнирование предыдущих записей?

 В задаче сказано, что пользователь может изменить результат расчета. А как мы узнаем нужно при проведении документа считать или он уже посмотрел расчет и изменил результат?
 Там где флаг корректировка стоит, результат записи не расчитывается.
« Последнее редактирование: Октябрь 18, 2010, 05:33:04 pm от Сергей »

Zhora_Vlg

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Георгий
Задача 3.22
« Ответ #13 : Октябрь 18, 2010, 05:53:19 pm »
Quote (SergTH000)
Нет, так нельзя=) Получаешь наборы записей кот нужно пересчитать и через общий модуль перерасчитываешь.

 Ты так думаешь, или где то об этом написано?

sada

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Андрей
Задача 3.22
« Ответ #14 : Октябрь 18, 2010, 06:55:42 pm »
Zhora_Vlg, Назначение механизма перерасчета определить конкретные записи которые необходимо пересчитать, зачем перерасчитывать весь документ , ради 1, 2... записей.
 чем более что этот документ может еще какие нибудь записи для переасчета зарегистрирует, уже по другим сотрудникам, и вновь прийдется перезаполнять обработку и чтото перепроводить, так цепочку долго раскручивать прийдется smile

hapcher

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Марина
Задача 3.22
« Ответ #15 : Октябрь 18, 2010, 10:03:12 pm »
Quote (SergTH000)
А как мы узнаем нужно при проведении документа считать или он уже посмотрел расчет и изменил результат?
 Там где флаг корректировка стоит, результат записи не расчитывается.
 

SergTH000, твоя логика ясна.
 Но кроме этого решения, можно пойти другим путем: сделать как в ЗУПе, т.е. не рассчитывать записи при проведении, а только по кнопке "Рассчитать". Лично меня условия задачи наталкивают именно на этот способ реализации.


SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Задача 3.22
« Ответ #16 : Октябрь 19, 2010, 08:28:00 am »
Zhora_Vlg, Не знаю где написано, сам додумался=)
 sada, Во-первых да, зачем же тогда измерение в объекте перерасчет, если весь документ (объект перерасчета) будет перепроводится.
 Не только в этом дело. При проведении документа сначала выполняется заново запись его движений, а зачем? Движения документа не поменялись, поменялась БАЗА расчета, нужно только пересчитать записи, основываясь на тех же движениях.

Добавлено (19.10.2010, 08:19)
 ---------------------------------------------
 Для этого и процедура расчета записей выносится из обработки проведения.

Добавлено (19.10.2010, 08:28)
 ---------------------------------------------
 hapcher, Наверное можно и так.Есть только один момент, если запись вручную отредактирована пользователем, то она не должна попадать в перерасчет. Смысла нет. По какому алгоритму пользователь что-то там наменял? А при твоем подходе эти записи будут не различимы и все попадут в перерасчет. Или попадать, но как то сообщить, что она вручную скорректирована.Хотя может это и неважно, не знаю.
 Я, повторюсь, что эту идею взял из вебинаров Чистова и мне понравилось, трудно здесь придраться к чему-то=)

« Последнее редактирование: Октябрь 19, 2010, 08:30:19 am от Сергей »

Slimper

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Slava
Задача 3.22
« Ответ #17 : Июль 20, 2011, 01:19:22 pm »
Начал разбираться в перерасчетах, запутался, в этой задаче есть такие виды расчета:

 -фикс оклад
 -надбавка от всех начислений за прошлый месяц
 -премия процентом от всех начислений за текущий период
 -удержание процентом от всех начислений за текущий период

 получается у каждого вида расчета, кроме оклада, ведущие виды расчета - все остальные? Зациклится же
« Последнее редактирование: Июль 20, 2011, 01:20:32 pm от Slava »

Gyd

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 3.22
« Ответ #18 : Сентябрь 12, 2011, 05:19:30 pm »
Quote (Slimper)
получается у каждого вида расчета, кроме оклада, ведущие виды расчета - все остальные?

 Оклад - ведущий для Надбавки (если в прошлом месяце он изменялся). Оклад, Надбавка, Премия - ведущие для Премии, если изменялись в прошлом месяце. Оклад, Надбавка, Премия - ведущие для Профвзносов, если менялись в этом месяце.

Добавлено (12.09.2011, 17:19)
---------------------------------------------
Понравился вариант SergTH000, но на мой взгляд не совсем правильно реализован перерасчет:
 перерассчитываются только записи по перерасчету РР Основные начисления (так как остальных в обработке нет, видимо с точки зрения экономии времени), перерасчет идет по всем документу целиком, а не по нужным записям.
 Транзакция при расчете из формы документа тоже непонятно зачем, документ итак не проводится. Графики неправильно заполнены, нужно по подразделениям графики вести и соответственно связь измерения с графиком реализовать.

 Часы отработанные сверх нормы я сделал вводом вручную, а рабочие часы накапливаю на ресурсе, потом получаю по нему базу. Это конечно посложнее чем у SergTH000.

« Последнее редактирование: Сентябрь 08, 2011, 01:04:31 pm от Олег »

sv_mikh

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Михайлов Сергей Валерианович
Задача 3.22
« Ответ #19 : Январь 15, 2012, 02:20:46 pm »
Мое решение... Как то вроде не сложная по условию задача... А далась не просто.
 Сначала запутался на условии начисления премии от начислений сделанных В прошлом месяце (надбавка ЗА прошлый месяц). Начал делать 2 РР без периода действия (база по периоду регистрации + база по периоду действия).. Потом заметил допущение "Считать, что все данные вводятся только в пределах одного месяца".
 Очень конечно сомнительно уместить решение в час... Чего то наверно не оптимально сделал sad Отладка сожрала не мало времени.
Вложения:
sv_mikh_03_22.dt
« Последнее редактирование: Январь 15, 2012, 02:21:24 pm от Михайлов Сергей Валерианович »

DoctorRoza

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Алексей
Задача 3.22
« Ответ #20 : Январь 31, 2012, 10:44:09 pm »
Внимание вопрос!
 Скажите, имеются 4 вида расчета .. Вытеснения у них нет. Тогда какие виды расчета нужно определять в ПВР с периодом действия, чтобы получить фактический период действия?
« Последнее редактирование: Январь 31, 2012, 10:45:52 pm от Алексей »

Gyd

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 3.22
« Ответ #21 : Январь 31, 2012, 11:31:41 pm »
Quote (DoctorRoza)
Скажите, имеются 4 вида расчета .. Вытеснения у них нет. Тогда какие виды расчета нужно определять в ПВР с периодом действия, чтобы получить фактический период действия?

 А зачем нужен фактический период действия?

 С периодом действия я бы оклад сделал (фикс.сумма). Чтобы получить рабочие часы.

DoctorRoza

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Алексей
Задача 3.22
« Ответ #22 : Февраль 01, 2012, 09:58:46 pm »
Предлагаю решение задачи 3.22 в рамках Билета 16. Особого изящества в обработке перерасчета нет, но все перерассчитывается, у обоих РР. Корректировку отдельно никак не выношу .. надо корректировать, изменяйте оклад в докумете и будет перерасчет.
Вложения:
_16_1_37_2_21_3.dt

max_osodoev

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: макс
Задача 3.22
« Ответ #23 : Февраль 09, 2012, 09:05:39 am »
мое
Вложения:
3.22_max_osodoe.dt

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 3.22
« Ответ #24 : Июнь 18, 2012, 10:49:56 am »
Как-то не подымается рука вносить количество сверхурочных часов в таб. часть документа ЗП. С таким подходом можно заставить пользователя вводить количество рабочих или отработанных дней.

 Может есть у кого нибудь мысли как их можно посчитать с использованием РР?

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 3.22
« Ответ #25 : Июнь 20, 2012, 05:52:51 am »
Такой вариант решения задачи.
 Спасибо за комментарии и замечания.
Вложения:
3912657.dt

SAV_tlt

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Антон
Задача 3.22
« Ответ #26 : Июнь 29, 2012, 12:26:02 pm »
Тут всё просто, но не на первый взгляд конечно)

 РС ГрафикиРаботы - График(тип подразделение), Значение(Часы)

 ОснПВР(использует ПД, база по ПД):
 - Сверхурочные -> база(ФиксОклад,Премия,Сверхурочные)
 ---результат = параметр * 0.5 * (база за прошлый месяц / ЧасыПериодДействия(план часы из графика))
 ДопПВР(база по ПД):
 - Премия -> база(ФиксОклад,Премия ,Сверхурочные)
 ---результат = процент из регистра / 100 * база за прошлый месяц
 - ФиксОклад -> база(ФиксОклад), // обязательно не должно быть ведущих! дабы не получить замкнутый цикл в перерасчетах
 ---результат = параметр - база;
 Удержания(база по ПР):
 - Профвзносы -> база(ФиксОклад,Премия,Сверхурочные) - последний приоритет в расчете
 ---результат = база за этот месяц * 0.1

 Всегда в задачках где сомневаетесь, перед тем как приступить накидайте на листочке, полностью всю схему чтобы потом не переделывать wink
« Последнее редактирование: Июнь 29, 2012, 12:32:14 pm от Антон »

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 3.22
« Ответ #27 : Июнь 29, 2012, 01:02:32 pm »
SAV_tlt,
 
Quote (SAV_tlt)
Всегда в задачках где сомневаетесь, перед тем как приступить накидайте на листочке, полностью всю схему чтобы потом не переделывать


 Все равно два раза за бутылкой бегать. biggrin

SAV_tlt

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Антон
Задача 3.22
« Ответ #28 : Июль 02, 2012, 04:23:25 pm »
kow1976 ну так то да))
« Последнее редактирование: Июль 02, 2012, 04:24:56 pm от Антон »

SAV_tlt

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Антон
Задача 3.22
« Ответ #29 : Июль 02, 2012, 04:24:25 pm »
kow1976 всё таки за бутылкой пришлось бегать из-за перерасчетов)))
 Сделал рекурсивную процедуру и в отбор по ВР обязательно каждый раз жестко нужно добавлять Профвзносы, а иначе система не берет их, потому что они находятся в одном регистраторе и при записи наборов по этому регистратору попросту сбрасывается... ну это из-за особенностей конструкции моего варианта... а еще, думаю, нужно проверку делать, чтобы при открытии документа, данные в ТЧ брались из движений, иначе после перерасчета данные будут отличаться
Вложения:
3_22_SAV.dt
« Последнее редактирование: Июль 02, 2012, 04:36:40 pm от Антон »

magrib

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Максим
Задача 3.22
« Ответ #30 : Июль 03, 2012, 06:41:38 pm »
Quote (SAV_tlt)
- ФиксОклад -> база(ФиксОклад), // обязательно не должно быть ведущих! дабы не получить замкнутый цикл в перерасчетах
 ---результат = параметр - база;


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

SAV_tlt

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Антон
Задача 3.22
« Ответ #31 : Июль 04, 2012, 12:24:49 pm »
Из условий:
Quote
в том же расчетном периоде размер суммы может быть признан ошибочным и подлежит исправлению.

 Вот например, сделали один документ с начислениями, оклад 20 000, потом оказалось что нужно исправить оклад, делаем другой документ, чтобы зафиксировать факт ошибки, а не исправлять в том же документе и не пере проводить тот документ, там в параметре ставим нужный оклад например 18000 нажимаем расчет(вот тут то и нужно узнать базу) и в результат попадает -2000. Потом еще можно один документ делать например на 22000 нужно исправить, в результат попадет 4000. Вот только если пере проводить (перерасчитывая) первый документ, то нужно и остальные в хронологической порядке...
 Ну в общем, я так понимаю это условие.
« Последнее редактирование: Июль 04, 2012, 12:26:53 pm от Антон »

andrew-ko

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Андрей
Задача 3.22
« Ответ #32 : Ноябрь 06, 2012, 11:27:13 pm »
1. Оклад фикс. суммой - осн. нач. для расчета нормы дней.
 2. Сверхурочные - осн. нач. по тому же графику что и Оклад, но в параметре "Размер" - указываю количество часов сверху, ДатаНачала - ДатаОкончания - период действия (дни сверхуорчных).
 3. Премия процентом - доп. нач., база по периоду регистрации (ПВР) (т.к. "В" периоде).
 4. Удержания - ПВР удержания с базой по периоду действия (т.к. "ЗА" период)

 Поправьте, пожалуйста, если не прав.
Вложения:
3.22_andrew-ko.dt
« Последнее редактирование: Ноябрь 06, 2012, 11:34:08 pm от Андрей »

@cool@

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Иванов Иван Иваныч
Задача 3.22
« Ответ #33 : Ноябрь 08, 2012, 07:52:39 pm »
Доброго времени суток. Не могу решить как расчитывать (или накапливать) эти сверхурочные часы. Есть варианты:
 1) Вводить вручную в качестве параметра для соответствующегоВР в до-ке Нача.Зарпл.
 2) Вводить через документ типа табеля фактически отработанные (или уже сверхурочные ) для каждого дня и накапливать в РН (оборотном) хотя про табель в задаче не говорится..наоборот надо методом отклонения
 3) Для ВР "Надбавка" создать график почасовой с ресурсами "Норма"-восем записей с знач "1" (если 8 часовой день) остальные "0" и "Переработка" все 24 записи (для одного дня) с значением "1" и указанием интервалов в до-ке Нач.Зарп. отсчитывать факт отработанные часы.. можно для этого ВР отдельный РР с периодичность день чтобы вытащить норму часов как НормаПериодДействия и факт как ПереработкаФактическийПериодДействия
 Ну и зависимость от базы от Оклада с него БазаНачислено(деньги) и БазаРабочиеЧасы - для этого Оклад имеет ПД и работает по обычному графику "одна запись на день" периодичность РР месяц... (типа вырыване гландов через опу...)
 кто что думает по этому поводу в ЗУПе по моему переработку вводят вруную в спец. док.

NigaStoleMyPlane

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Anton
Задача 3.22
« Ответ #34 : Июнь 13, 2013, 04:31:06 pm »
Приветствую!
 Мое решение... не работает одна вещь - Виды расчета из ПВР "Удержания" (ПрофсоюзныеВзносы)  не попадают в таблицу перерасчетов. В чем мб дело...
Вложения:
3-22--.dt

89161008397

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Дмитрий
Задача 3.22
« Ответ #35 : Август 01, 2013, 08:07:33 am »
Всем привет!
 Помогите!!!!!!!!!!!!! с задачей, не могу понять почему в таблицу перерасчета не попадают записи (отчет Перерасчет).
 Есть два документа. Если провожу документ за первый месяц должна заполнятся таблица перерасчета. Что не так скажите.
Вложения:
3-22.dt

TuMyP1985

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Тимур
Задача 3.22
« Ответ #36 : Сентябрь 06, 2013, 01:01:09 am »
Цитата (89161008397)
Всем привет! Помогите!!!!!!!!!!!!! с задачей, не могу понять почему в таблицу перерасчета не попадают записи (отчет Перерасчет).
Не попадают, потому что при проведении документа не заполняются базовый период начало, базовый период конец у ПВР Дополнительные начисления и Удержания.

 Мой вариант.
Вложения:
KTT_3_22.dt

TuMyP1985

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Тимур
Задача 3.22
« Ответ #37 : Сентябрь 09, 2013, 12:54:02 am »
Скорректировал решение - использование подразделение в РС ГрафикиРаботы (вместо реквизита графики в справочнике подразделения).
Вложения:
1450382.dt

artfa

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Артур
Задача 3.22
« Ответ #38 : Сентябрь 19, 2013, 10:58:44 pm »
в задаче множество неочевидных сложностей
Вложения:
7370708.dt

fimanich

  • Пользователь
  • **
  • Сообщений: 49
Задача 3.22
« Ответ #39 : Ноябрь 03, 2013, 05:00:44 pm »
Цитата artfa ()
в задаче множество неочевидных сложностей
есть и очевидные smile . Например, у тебя опечатка
 Для Каждого ТекСтрокаДополнительныеНачисления Из ДополнительныеНачисления Цикл
         Должность = РегистрыСведений.СведенияОСотрудниках.ПолучитьПоследнее(НачалоМесяца(ПериодРегистрации),Новый Структура("Подразделение", ТекСтрокаОсновныеНачисления.Подразделение)).Должность;

 Цикл по доп. начислениям, а Подразделение из основных начислений берешь, если ТЧ Основные начисления пустая - вылет с синтаксической ошибкой.

 Однако больше хотелось бы другое обсудить. Насколько я понял, в процедуре РасчитатьНачисления ты в конце программно создаешь перерасчеты. Скорее всего, это делается, для того, чтобы предусмотреть следующую ситуацию: есть документ за январь, есть премия и профвзнос за февраль. Перепроводим документ за январь. В перерасчет попадет премия, но не попадет профвзнос, т.к. база его в феврале.
 В своем решении я, чтобы подобную ситуацию разрешить, в случае перерасчета при записи набора РР параметр ТолькоЗапись устанавливаю в Ложь. То есть предполагаю, что в обработке надо будет несколько раз нажать кнопки Заполнить - Перерасчитать: сначала в перерасчет попадет документ с премией, потом - с профвзносом.

 Еще один момент:
 в твоем решении в случае перерасчета идет внутренее соединение виртуальной таблицы (например, ДанныеГрафика) с таблицей перерасчета. Однако, более эффективно, на мой взгляд, в случае перерасчета ограничение передавать в параметры виртуальной таблицы.

 Прикрепляю свое решение. Критика приветствуется.
Вложения:
fimanich_03_22.dt

artfa

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Артур
Задача 3.22
« Ответ #40 : Ноябрь 04, 2013, 05:03:53 pm »
1. спасибо исправил.
 2. ты правильно понял.
 3. я так делал когда вид расчета завит от самого себя, например премия начисляется от всех начислений (в т.ч. и премии) за предыдущий период, только я еще избавил пользователя от необходимости нажимать кнопку Заполнить, Заполнить отрабатывало сразу после перерасчета.
 4. не понял о чем речь.
Вложения:
2890031.dt

fimanich

  • Пользователь
  • **
  • Сообщений: 49
Задача 3.22
« Ответ #41 : Ноябрь 04, 2013, 06:29:58 pm »
Цитата artfa ()
4. не понял о чем речь.
Поясню на примере (примеры из 2-х разных задач 3.17 и 3.22, т.е. это не один и тот же запрос в 2-х вариантах).
 1-й вариант: соединение с таблицей перерасчета:
 ВЫБРАТЬ
 ДанныеГрафика.НомерСтроки,
 ЕСТЬNULL(ДанныеГрафика.ЗначениеФактическийПериодДействия, 0) КАК ДнейФакт,
 ДанныеГрафика.ВидРасчета.СпособРасчета КАК СпособРасчета
 ИЗ
 РегистрРасчета.ОсновныеНачисления.ДанныеГрафика(
 Регистратор = &Регистратор
 И ВидРасчета.СпособРасчета В (&Оклад, &Невыход)) КАК ДанныеГрафика
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисления.ПерерасчетОН КАК ПерерасчетОН
 ПО ДанныеГрафика.Подразделение = ПерерасчетОН.Подразделение
 И ДанныеГрафика.Сотрудник = ПерерасчетОН.Сотрудник
 И    ДанныеГрафика.Регистратор = ПерерасчетОН.Регистратор

 2-й вариант: отбор по таблице перерасчета в параметрах виртуальной таблицы.
 ВЫБРАТЬ
 ПерерасчетОН.Подразделение,
 ПерерасчетОН.Сотрудник
 ПОМЕСТИТЬ Перерасчет
 ИЗ
 РегистрРасчета.ОсновныеНачисления.ПерерасчетОН КАК ПерерасчетОН
 ГДЕ
 ПерерасчетОН.ОбъектПерерасчета = &Регистратор
 И ПерерасчетОН.ВидРасчета = &Сверхурочные
 ;
 ////////////////////////////////////////////
 ВЫБРАТЬ
 ДанныеГрафика.НомерСтроки,
 ЕСТЬNULL(ДанныеГрафика.ЗначениеБазовыйПериод, 0) КАК ЧасовБаза,
 ЕСТЬNULL(БазаОН.РезультатБаза, 0) + ЕСТЬNULL(БазаДН.РезультатБаза, 0) КАК РезультатБаза
 ИЗ
 РегистрРасчета.ОсновныеНачисления.ДанныеГрафика(
 ВидРасчета = &Сверхурочные
 И Регистратор = &Регистратор
 И (Подразделение, Сотрудник) В
 (ВЫБРАТЬ
 Перерасчет.Подразделение,
 Перерасчет.Сотрудник
 ИЗ
 Перерасчет КАК Перерасчет)

 ) КАК ДанныеГрафика
 ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисления.БазаОсновныеНачисления(
 &Измерения,
 &Измерения,
 ,
 ВидРасчета = &Сверхурочные
 И Регистратор = &Регистратор
 И (Подразделение, Сотрудник) В
 (ВЫБРАТЬ
 Перерасчет.Подразделение,
 Перерасчет.Сотрудник
 ИЗ
 Перерасчет КАК Перерасчет)

 ) КАК БазаОН
 ПО ДанныеГрафика.НомерСтроки = БазаОН.НомерСтроки
 ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисления.БазаДополнительныеНачисления(
 &Измерения,
 &Измерения,
 ,
 ВидРасчета = &Сверхурочные
 И Регистратор = &Регистратор
 И (Подразделение, Сотрудник) В
 (ВЫБРАТЬ
 Перерасчет.Подразделение,
 Перерасчет.Сотрудник
 ИЗ
 Перерасчет КАК Перерасчет)

 ) КАК БазаДН
 ПО ДанныеГрафика.НомерСтроки = БазаДН.НомерСтроки

 2-й вариант вроде как более правильный, т.к. отбор по параметрам виртуальной таблицы, но конечно же, более громоздкий.
« Последнее редактирование: Ноябрь 04, 2013, 06:37:26 pm от Смирнов Валерий »

artfa

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Артур
Задача 3.22
« Ответ #42 : Ноябрь 04, 2013, 08:39:20 pm »
нужно проверить производительность обоих вариантов,
 но я думаю сдесь выигрыш в скорости будет незначительный, да и создавать такой запрос более проблематично, слишко много будет условий Если Перерасчет Тогда...

Alexander

  • Пользователь
  • **
  • Сообщений: 33
  • ФИО: Kulikov Alexander
Задача 3.22
« Ответ #43 : Декабрь 08, 2013, 03:21:19 pm »
К сожалению, не достаточно быстро пишется всё ещё.
 А так, спасибо fimanich, ну и всем остальным, включая давно покинувших эту ветку.
 Жду не дождусь критики.
Вложения:
Kul_3_22_122_21.dt
« Последнее редактирование: Декабрь 08, 2013, 03:22:08 pm от Kulikov Alexander »

IT_PROGRAMMIST

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Дмитрий
Задача 3.22
« Ответ #44 : Февраль 16, 2014, 07:16:22 pm »
мой вариант решения. Благодарен за критику
Вложения:
IT_PROGR_22.dt

non1ka

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: Тюрин Илья Александрович
Задача 3.22
« Ответ #45 : Февраль 23, 2014, 09:36:02 pm »
Решение далось жестко. 2 часа.
 Проблемы с пере расчетами, хотел что бы и в документе производилась модификация результата перерасчета,
 Наверное не правильно, нужно было просто изменять движения в регистре.
 Но условие задачи странное, если пользователь руками зашел в документ и изменил результат расчета, как действовать при перерасчете, изменять его данные введенные руками и проводить по измененной базе или менять его значения введенные вручную.

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

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

 Выкладываю свой вариант решения.
Вложения:
3.22_non.dt

korsal

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Королёв Сергей Александрович
Задача 3.22
« Ответ #46 : Апрель 03, 2014, 10:59:50 am »
Заглянул в решения sv_mikh и non1ka. В перерасчетах запрос в цикле.

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


Leo705

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Андрей
Задача 3.22
« Ответ #47 : Май 13, 2014, 11:39:51 am »
Наконец-то руки дошли до этой задачи smile

 Мои мысли...:
 1. Размер проф. сборов и процент для расчета сверхурочных можно было хранить и в константе, сделал в коде согласно размерам в задаче;
 2. Количество сверхурочных вводиться в документе, не вижу смысла городить все остальное;
 3. По данному пункту "...После проведения расчетов, в том же расчетном периоде размер суммы может быть признан ошибочным и подлежит исправлению..." сделал, как писали выше, при изменении константы добавляю перерасчет;
 4. Как вариант, перерасчет, можно было бы делать не по всему документу, а конкретно по сотрудникам, но лень;
 5. Подразделение и должность не стал добавлять в измерения РР и их перерасчеты, а сделал как реквизиты, т.к. в условии ничего не сказано про совместительство, можно было бы сделать РС типа кадровой истории и брать оттуда.
« Последнее редактирование: Май 13, 2014, 12:35:11 pm от Андрей »

Igor-pn

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Игорь
Задача 3.22
« Ответ #48 : Май 13, 2014, 08:43:32 pm »
Цитата sada ()
В задаче есть такое условие «После проведения расчетов, в том же расчетном периоде размер суммы может быть признан ошибочным и подлежит исправлению.» - я предполагаю, что это намек на то, что при изменения оклада , надо фиксировать перерасчет в текущем периоде.
Учитывая http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=567332, можно предположить, что необходимо создать вид расчета "корректировка оклада", который будет вытеснять оклад. Похожее условие есть в 3.24, но там перерасчеты не нужны. Поэтому добавление "корректировки оклада" кажется логичным.
Вложения:
1694909.dt

Leo705

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Андрей
Задача 3.22
« Ответ #49 : Май 14, 2014, 07:31:58 am »
Цитата Igor-pn ()
можно предположить, что необходимо создать вид расчета "корректировка оклада", который будет вытеснять оклад. Похожее условие есть в 3.24, но там перерасчеты не нужны. Поэтому добавление "корректировки оклада" кажется логичным

     Но там указано "...в том же расчетном периоде размер суммы может быть признан ошибочным и подлежит исправлению...", а если Вы будете делать запись в том же расчетном периоде, то есть период регистрации будет одинаков в записях оклада и корректировки оклада, механизм сторнирования не сработает, кстати в Вашем решении в крайнем документе именно это и происходит. 
     Еще у Вас в решении "ОтчетПоПерерасчетам", а должна быть обработка с функционалом перерасчета. 
 
Код
ВыборкаДетальныеЗаписи.Сбросить();
    Выборку можно и не сбрасывать, если запрос упорядочивать по номеру строки.
 
Код
Если Записываем Тогда
           НаборУд.записать(,Истина);
           Если Перерасчет Тогда
                  НаборУД.записать(,,Ложь);
           КонецЕсли;
    КонецЕсли;

 В принципе указывая "НаборУд.записать(,Истина);" фактический период пересчитываться не будет.
 
Код
Движение.БазовыйПериодКонец = ДобавитьМесяц(ТекСтрокаОсновныеНачисления.ДатаОкончания,-1);
Не совсем правильно, если Вы добавите к дате: 30.04.2014 23:59:59 -1 месяц, то у Вас получиться дата: 30.03.2014 23:59:59, хотя на сколько я помню в марте 31 день.

Igor-pn

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Игорь
Задача 3.22
« Ответ #50 : Май 14, 2014, 01:05:37 pm »
...если Вы будете делать запись в том же расчетном периоде, то есть период регистрации будет одинаков в записях оклада и корректировки оклада, механизм сторнирования не сработает, кстати в Вашем решении в крайнем документе именно это и происходит.

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

 Нашел так же такое мнение - рассчитывать сумму корректировки
 http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=579238

 По поводу обработки соглашусь, нужно делать как в сказано в задании.
 По поводу выборки -  уже так привык :), но попробую так как и вы говорите.

 Цитата Leo70534952НаборУд.записать(,Истина);
 Почему то это этот код не отрабатывал при обработке, равно как НаборУД.записать(,Истина,,Истина); , пришлось дописывать НаборУД.записать(,,Ложь); Этот момент так и не понял.:(

 Насчет базового периода ценное замечание, очень благодарен, спасибо!!!
« Последнее редактирование: Май 14, 2014, 02:01:42 pm от Игорь »

maksonman

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Галимов Максим Николаевич
Задача 3.22
« Ответ #51 : Май 21, 2014, 01:22:01 pm »
Интересная задачка. Посмотрите решение. Интересны мнения
Вложения:
4555766.dt

DimaKV

  • Пользователь
  • **
  • Сообщений: 16
  • ФИО: Дмитрий
Re: Задача 3.22
« Ответ #52 : Январь 26, 2015, 10:38:26 pm »
Посмотрел несколько решений. Возник вопрос, зачем в Основных и Дополнительных начислениях указывать ведущие виды расчета? У многих такое увидел. Сверхурочные часы и премия зависят от всех начислений предыдущего расчетного периода. Т.к. данные задним числом не вводятся,  на расчеты текущего периода ничего не влияет. Следовательно, список ведущих расчетов у начислений должен быть пустым.
Другое дело, профсоюзные Удержания. Зависят от всех начислений текущего периода, поэтому при изменении какого-либо начисления, удержание должно пересчитаться. Вот здесь и заполняем ведущие виды расчета.
Какие есть мнения по этому вопросу?

rusmosav

  • Проверенный
  • ***
  • Сообщений: 137
Re: Задача 3.22
« Ответ #53 : Июнь 02, 2015, 04:04:50 pm »
Прощу оценить.
« Последнее редактирование: Июнь 02, 2015, 05:36:01 pm от rusmosav »