Автор Тема: Расхождения от актуальных билетов - обсуждения, методы решения  (Прочитано 43099 раз)

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

Михаил Проходцев

  • Проверенный
  • ***
  • Сообщений: 219
И еще закрались сомнения - по условию "За каждый час работы в вечернее время сотрудники получают оплату на 50% больше их часовой ставки по окладу", то есть мы должны для вечерних часов делать оплату как КоличествоЧасов * 1.5 часовой ставки, но тогда необходимо будет при оплате по окладу рассчитывать только 6 часов. Или я уже чересчур заморачиваюсь...

pelenur1

  • Новичок
  • *
  • Сообщений: 7
  • ФИО: Евгений
Может, все-таки сделать новый ВР "Оплата вечерние часы" с графиком пн,ср,пт, Период действия равен базовому, база Оклад, и считать База*50%*(вечерние часы / всего рабочих часов) ?
Выглядит вполне логично, учитывая, что на экзамене проверяют умение работать с начислениями, а не с мутными заумными формулами и взаимосвязями

Если есть опасение что пользователь ошибется при вводе данных, то в обработке проведения НЗ можно автоматически создавать строку с "Оплата вечерних часов" для каждой строки с "Оклад" с теми же ПДНачало и ПДКонец, только с Графиком "Пн,ср,пт"
« Последнее редактирование: Июль 04, 2016, 07:00:13 am от pelenur1 »


Alexander16

  • Новичок
  • *
  • Сообщений: 5
Почему в ресурсе 0.4? Я так понял, если реализуем вытеснение оклада опозданиями, то в графике два ресурса - один фиксирует единицы каждые 15 минут (для подсчета количества пятнадциминутных опозданий), а во втором - количество часов в интервале, т.е. 0.25. для подсчета отработанных часов оклада.
Косяк. Да. Заполнять по 0.25

Михаил Проходцев

  • Проверенный
  • ***
  • Сообщений: 219
Чтобы отвлечься пока от вечерних часов, реализовал задачу по формированию документу ВыплатаЗарплаты. Новый регистр остатков ВзаиморасчетыССотрудниками (Сотрудник, Подразделение, ВидРасчета, Сумма). В обработке проведения документа НачислениеЗарплаты делаем в него приход, в новом документе ВыплатаЗарплаты расход + отчет Расчетно-платежная ведомость  - достаточно простой на виртуальном регистре ВзаиморасчетыССотрудникамиОстаткиИОбороты.
Единственное, что смущает - в документе ВыплатаЗарплаты кнопка Заполнить подтягивает остатки из регистра и заполняет по ним табличную часть, вопрос - должны ли эти остатки получаться на момент времени документа или достаточно будет получить их на дату документа. А то у меня получилась конструкция, которая мне не очень нравится: Запрос.УстановитьПараметр("МоментИтогов", РеквизитФормыВЗначение("Объект").МоментВремени()); Решеная задача во вложении, буду рад конструктивной критике.
« Последнее редактирование: Июль 04, 2016, 11:43:09 am от pozitiFFF »

Михаил Проходцев

  • Проверенный
  • ***
  • Сообщений: 219
Реализовал также задачу программной записи перерасчетов в 5 и 6 билетах, где данные для надбавки рассчитываются по данным из регистра бухглатерии и накопления сооответственно. Расскажу на примере 5 билета. В чем загвоздка - при добавлении перерасчета в регистр расчета система требует чтобы ПВР этого регистра был с базой. Может как то можно обойтись без этого, у меня не получилось. Раз уж пошла такая пьянка, появилась мысль - включить базу для ПВР и регистра, и в появившихся полях регистра БазовыйПериодНачало и БазовыйПериодКонец сохранять даты периода, за которые мы получаем данные из регистра накопления и бухгалтерии, но выяснилось, что для перерасчета достаточно только для ПВР указать зависимость от базы, тогда смысла включать базу для регистра только для того, чтобы работать с полями БазовыйПериодНачало и БазовыйПериодКонец нет, в связи с чем оставил только зависимость по базе для ПВР.
Реализацию делал в модуле набора записей - в процедуре ПриЗаписи делал проверку, что наборЗаписей не пустой, затем запрос, в котором сцеплял данные из регистра ДвиженияССубконто (отбор по документу- Отбор.Регистратор.Значение) и регистра расчета допначисления.
На что следует обратить внимание (это описано и на сайте ИТС) при получении запроса для записи в перерасчеты необходимо обеспечить уникальность записей (если могут быть задвоения, то Различные в запросе), также необходимо проверять не присутствуют ли записи, которые мы получаем в запросе, уже в таблице перерасчетов (для этого необходимо соединение в запрос с таблицей перерасчетов и в условии ОбъектПерерасчетов Есть Null)
Выкладываю 5 билет на суд общественности.

freez1301

  • Пользователь
  • **
  • Сообщений: 68
Ребят, по поводу 2 пункта - учет опозданий. Я так понял из обсуждений, что - делаем ресурс с фиксацией 15 минуток. В ПВР создаем ВР Штраф. ПВР использует период действия. Создаем РР Удержания, связываем его с РС ГрафикиРаботы. По идее должен быть расчет факт времени невыхода?

Михаил Проходцев

  • Проверенный
  • ***
  • Сообщений: 219
Ребят, по поводу 2 пункта - учет опозданий. Я так понял из обсуждений, что - делаем ресурс с фиксацией 15 минуток. В ПВР создаем ВР Штраф. ПВР использует период действия. Создаем РР Удержания, связываем его с РС ГрафикиРаботы. По идее должен быть расчет факт времени невыхода?
В регистре сведений графиков работ - два ресурса КоличествоЧасов и КоличествоПятнадцитиминуток, день разбит по 15минутным интервалом - с 8.15 по 16.00, и в каждой записи количество часов равно 0.25, количество интервалов равно 1.
Дальше либо в Основных начислениях вид расчета, который вытестняет оплату по окладу (или тарифу) и он же рассчитывает штраф за каждые 15 минут либо в основных вид расчета, который вытесняет оклад и накапливает в ресурсе количество пятнадциминуток, а в удержаниях вид расчета, для которого базой будет вид Расчета фиксирующий опоздания и в котором будет рассчитываться сумма удержания.

freez1301

  • Пользователь
  • **
  • Сообщений: 68
Ребят, по поводу 2 пункта - учет опозданий. Я так понял из обсуждений, что - делаем ресурс с фиксацией 15 минуток. В ПВР создаем ВР Штраф. ПВР использует период действия. Создаем РР Удержания, связываем его с РС ГрафикиРаботы. По идее должен быть расчет факт времени невыхода?
В регистре сведений графиков работ - два ресурса КоличествоЧасов и КоличествоПятнадцитиминуток, день разбит по 15минутным интервалом - с 8.15 по 16.00, и в каждой записи количество часов равно 0.25, количество интервалов равно 1.
Дальше либо в Основных начислениях вид расчета, который вытестняет оплату по окладу (или тарифу) и он же рассчитывает штраф за каждые 15 минут либо в основных вид расчета, который вытесняет оклад и накапливает в ресурсе количество пятнадциминуток, а в удержаниях вид расчета, для которого базой будет вид Расчета фиксирующий опоздания и в котором будет рассчитываться сумма удержания.
в общем единственный момент с котором не разобрался - был именно 15-минутки. Сдавал 20 июля. Попался 5 билет. Сделал на 1 ресурсе в РС, который разбит по 15 мин. правда с
8:00 до 16:00. В основных начислениях оклад и штраф, который вытесняет оклад. В целом все работоспособно оказалось. Делал на лету, т.к. повторюсь - не понял этот момент при подготовке и понадеялся на авось. Как придет результат - более подробно отпишусь в соотв. ветке форума

misev

  • Новичок
  • *
  • Сообщений: 9
А вот какой вопрос возник: зачем делать график по 15 минут, как некоторые указывали еще в обсуждении задачи 3.24, ведь вытеснения по условию задачи нет?
А если считать время опозданий, то предлагаю проверить такой вариант:
Есть записи по 15 минут в регистре сведений, есть опоздание у работника, например, с 8:00 по 8:17.
Проводим документ и в запросе из видим, что по данным графика опоздание уже 30 минут.
Т.е. для корректного подсчета времени опоздания нужно делать регистр поминутно, но здесь другой вопрос, а нужен ли такой монстр при отсутствии вытеснений, да и ограничение учебной версии по количеству записей в регистре никто не отменял.

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

Salameika

  • Новичок
  • *
  • Сообщений: 3
  • ФИО: Salameika
Задача СПР 6 билета.


[вложение удалено администратором]

Вася

  • Пользователь
  • **
  • Сообщений: 36
Ребят, по поводу 2 пункта - учет опозданий. Я так понял из обсуждений, что - делаем ресурс с фиксацией 15 минуток. В ПВР создаем ВР Штраф. ПВР использует период действия. Создаем РР Удержания, связываем его с РС ГрафикиРаботы. По идее должен быть расчет факт времени невыхода?
В регистре сведений графиков работ - два ресурса КоличествоЧасов и КоличествоПятнадцитиминуток, день разбит по 15минутным интервалом - с 8.15 по 16.00, и в каждой записи количество часов равно 0.25, количество интервалов равно 1.
Дальше либо в Основных начислениях вид расчета, который вытестняет оплату по окладу (или тарифу) и он же рассчитывает штраф за каждые 15 минут либо в основных вид расчета, который вытесняет оклад и накапливает в ресурсе количество пятнадциминуток, а в удержаниях вид расчета, для которого базой будет вид Расчета фиксирующий опоздания и в котором будет рассчитываться сумма удержания.
в общем единственный момент с котором не разобрался - был именно 15-минутки. Сдавал 20 июля. Попался 5 билет. Сделал на 1 ресурсе в РС, который разбит по 15 мин. правда с
8:00 до 16:00. В основных начислениях оклад и штраф, который вытесняет оклад. В целом все работоспособно оказалось. Делал на лету, т.к. повторюсь - не понял этот момент при подготовке и понадеялся на авось. Как придет результат - более подробно отпишусь в соотв. ветке форума

Добрый день.
Я так понимаю результат вам пришел, не могли бы вы более подробно расписать решение с 15 минутками? Попалось на экзамене именно это условие, не смог его реализовать.

EgSneg

  • Пользователь
  • **
  • Сообщений: 27
Есть мнение, что нужно реализовывать так:
1. Заводим график 15 минутками, то есть не по 1 записи на каждый день, а 32, в каждой по 0.25 (для 8-ми часового рабочего дня). Соответственно тип измерения "Дата"РС ГрафикиРаботы меняем на Дата, состав Дата+Время.

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

Процедура ЗаполнитьГрафик(ДатаНачала, ДатаОкончания, ВыходныеДни, Сотрудник, Подразделение, ВремяНачала, ВремяОкончания) Экспорт

Набор = РегистрыСведений.ГрафикиРаботы.СоздатьНаборЗаписей();

Набор.Отбор.Сотрудник.Установить(Сотрудник);
Набор.Отбор.Подразделение.Установить(Подразделение);

Набор.Прочитать();

Дат = ДатаНачала;

Пока Дат <= ДатаОкончания Цикл

Врем = дата(1,1,1)+ (Дат - НачалоДня(Дат));

Если Врем >=ВремяНачалаРаботы и Врем <= ВремяОкончанияРаботы Тогда

Запись = Набор.Добавить();
Запись.Дата = Дат;

Запись.Сотрудник = Сотрудник;
Запись.Подразделение = Подразделение;

Если Найти(ВыходныеДни, Строка(ДеньНедели(Дат))) Тогда
Запись.Значение = 0;
Иначе          
Запись.Значение = 0.25;
КонецЕсли;

КонецЕсли;

Дат = Дат + 900;
КонецЦикла;
Набор.Записать();

КонецПроцедуры

2. ВР Оклад и ВР Опоздание оба в ПВР Основные начисления, у которого ПД. Опоздание вытесняет Оклад. Однако, тут подводный камень: ХЗ как правильно - должно ли Опоздание вытеснять Оклад или нет? По логике, ты получаешь как обычно, а потом из этого "обычно" вычитают штраф... Но! Это ж экзамен, надо продемонстрировать умение работать с вытеснением.. так что я на экзамене сделаю Опоздание вытесняющим :)))

3. Соответственно, в документе НЗ тип реквизитов ДатаНачала и ДатаОкончания не просто Дата, а Дата+Время.
4. Вводите, скажем: Иванов, Оклад, с 01.01.2016 09:00:00 по 31.01.2016 23:59:59
5. Ну и Иванов, Опоздание, с 05.01.2016 09:00:00 по 05.01.2016 09:59:59

6. Дальше в Расчете считаете Оклад, ДанныеГрафика.ЗначениеФактическийПериодДействия, у вас там получится меньше, вытеснение будет Опозданием.
7. Ну и Опоздания тоже, ДанныеГрафика.ЗначениеФактическийПериодДействия, делите на 0.25, умножаете на 100 руб

P.S. Сам я этот алгоритм в бою не испробовал, так как сам первый раз иду сдаваться в эту пятницу...


Попалось на экзамене именно это условие, не смог его реализовать.

А что, за не реализацию всего лишь одного этого условия уже сразу несдача?
« Последнее редактирование: Октябрь 06, 2016, 10:02:35 pm от EgSneg »

al7

  • Пользователь
  • **
  • Сообщений: 46

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

Вася

  • Пользователь
  • **
  • Сообщений: 36
Есть мнение, что нужно реализовывать так:
1. Заводим график 15 минутками, то есть не по 1 записи на каждый день, а 32, в каждой по 0.25 (для 8-ми часового рабочего дня)

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

Процедура ЗаполнитьГрафик(ДатаНачала, ДатаОкончания, ВыходныеДни, Сотрудник, ВремяНачала, ВремяОкончания) Экспорт

Набор = РегистрыСведений.ГрафикиРаботы.СоздатьНаборЗаписей();
Набор.Отбор.Сотрудник.Установить(Сотрудник);

Дат = ДатаНачала;

Пока Дат <= ДатаОкончания Цикл

Врем = Дата(1,1,1) + (Дат - НачалоДня(Дат));

Если Врем >= ВремяНачала И Врем <= ВремяОкончания Тогда
Запись = Набор.Добавить();
Запись.Дата = Дат;
Запись.Сотрудник = Сотрудник;
Если Найти(ВыходныеДни, Строка(ДеньНедели(Дат))) Тогда
Запись.Часы = 0;
Иначе          
Запись.Часы = 0.25;
КонецЕсли;
КонецЕсли;
Дат = Дат + 900;
КонецЦикла;
Набор.Записать();
КонецПроцедуры

2. ВР Оклад и ВР Опоздание оба в ПВР Основные начисления, у которого ПД. Опоздание вытесняет Оклад.
3. Соответственно, в документе НЗ тип реквизитов ДатаНачала и ДатаОкончания не просто Дата, а Дата+Время.
4. Вводите, скажем: Иванов, Оклад, с 01.01.2016 09:00:00 по 31.01.2016 18:59:59
5. Ну и Иванов, Опоздание, с 05.01.2016 09:00:00 по 05.01.2016 10:00:00

6. Дальше в Расчете считаете Оклад, ДанныеГрафика.ФактическийПериодДействия, у вас там получится меньше, вытеснение будет Опозданием.
7. Ну и Опоздания тоже, ДанныеГрафика.ФактическийПериодДействия,делите на 0.25, умножаете на 100 руб

P.S. Сам я этот алгоритм в бою не испробовал, так как сам первый раз иду сдаваться в эту пятницу...


Попалось на экзамене именно это условие, не смог его реализовать.

А что, за не реализацию всего лишь одного этого условия уже сразу несдача?


Спасибо за развернутый ответ! Нет конечно, у меня набралось порядком ошибок тогда. Точно уже не вспомню что, сдавал в ноябре прошлого года. 25.10.16 снова пойду.

EgSneg

  • Пользователь
  • **
  • Сообщений: 27
25.10.16 снова пойду.

Я тоже если завтра не сдам, пойду 20.10.16  или 03.11.16 повторно сдаваться.
Буду штудировать билеты, ну и мандража, надеюсь, во второй раз поменьше будет.
« Последнее редактирование: Октябрь 06, 2016, 05:28:35 pm от EgSneg »