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

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

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

  • Проверенный
  • ***
  • Сообщений: 219
Коллеги, по отзывам тех, кто уже испытывал судьбу на экзамене, можно составить встретившиеся на экзамены задачи, подзадачи, не встречающиеся в Актуальных билетах. Предлагаю на этой ветке обсуждать их, выкладывать свои решения.
Итак, BobbyOs подготовил список таких задач на текущий момент:
1) Отображение результатов расчета в форме начисления зарплаты  с целью редактирования
2) График с дискретностью 15 мин для учета опозданий и начисления штрафов.
3) Прямая запись в таблицы перерасчета при проведении по регистрам накопления или бухгалтерии
4) Реализация процедуры перерасчета.
5) Премия с периодом действия и ее вытеснение выплатами фиксированных сумм
6) Вечерние часы по повышенной на 50% ставке
7)  Документ "Выплата зарплаты" с автозаполнением по результатам начисления
8 ) Учет испорченных товаров в задаче о скоропортящихся товаров

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

2. С условием "за каждые целые 15 минут опоздания начисляется штраф" всё сложнее. Подобное обсуждалось при решении задачи 3.24 (http://forum.chistov.pro/index.php?topic=1182.0) и в ветке "Результаты сдачи экзаменов", но к окончательному решению нигде не пришли, кто-то предлагает вводить количество 15 минуток опозданий, кто-то рассчитывать минуты опоздания и делить на 15, кто-то в графиках фиксировать не часы, а 15 минутки. Как Вы считаете (или успешно реализовали на экзамене) какой алгоритм здесь правильный?

3) Программная запись в таблицы перерасчета, здесь для меня совсем всё туманно. Не нашел какого-то конкретного обсуждения этого вопроса.
На примере 6 билета, где попадалось это нововведение. Есть вид расчета Надбавка, которая зависит от суммы оплаты пассажиров, а еще есть вид расчета Отпуск, у которого базовым выступает вид расчета Надбавка. Так вот, получается при изменении в документе, фиксирующем суммы оплаты, для правильного начисления по расчетам необходимо перепровести связанный документ Начисление с видом расчета Надбавка, а затем связанные документы с видом расчета Отпуск. Непонятно у нас должна информация в перерасчеты попасть как по документам, связанным с видом расчета Надбавка, так и с видом расчета Отпуск? И как должен осуществляться этот поиск - при проведении документа Сумма оплата с отбором данных этого документа по таблице регистра расчета по периоду и паре Сотрудник, Автомобиль или я чего то не понимаю? Нужна Ваша помощь, специалисты.

4)Реализация процедуры перерасчета. - я так понимаю, получаем данные из таблицы перерасчета и осуществляем расчет наборов записей соответствующих документов.

5) Условие " За произвольные период отработанного времени (должен указываться  в документе и может быть меньше периода ведения расчетов, например несколько дней) сотрудникам выплачивается премия процентом от оклада, начисленного за те же дни, за которые была начислена премия. Плюс за любой день может быть вместо премии выплачена любая сумма". Решение - Премия и Произвольная сумма в начисления с ПД, Произвольная сумма вытесняет Оклад. Для вида расчета Премия флажок "Период Действия является базовым"

6) "Три дня в неделю (пон.,среда, пятница) по два часа работы приходится на вечерние часы. За каждый час работы в вечернее время сотрудники получают оплату на 50% больше их часовой ставки по окладу" - заводим доп ресурс вечерние часы в графиках. Не совсем понятно, должен ли это быть отдельный вид расчета или сумма должна добавляться при расчете оклада. Наверно, всё-таки отдельный вид расчета, может будет больше понятно в контексте конкретной задачи

7) Документ "Выплата зарплаты" с автозаполнением по результатам начисления. Здесь вроде всё понятно - регистр остатков, в который Начисление делает приход, а документ Выплата - расход.

8 ) Учет испорченных товаров в задаче о скоропортящихся товаров. Текст задания и реализованное на экзамене решение http://forum.chistov.pro/index.php?topic=993.msg44431#msg44431

Гакусей

  • Проверенный
  • ***
  • Сообщений: 154
2. С условием "за каждые целые 15 минут опоздания начисляется штраф" всё сложнее. Подобное обсуждалось при решении задачи 3.24 (http://forum.chistov.pro/index.php?topic=1182.0) и в ветке "Результаты сдачи экзаменов", но к окончательному решению нигде не пришли, кто-то предлагает вводить количество 15 минуток опозданий, кто-то рассчитывать минуты опоздания и делить на 15, кто-то в графиках фиксировать не часы, а 15 минутки. Как Вы считаете (или успешно реализовали на экзамене) какой алгоритм здесь правильный?
Я бы делал с фиксацией в графиках 15 минуток. Мне кажется здесь как раз проверяется, как вы умеете работать со временем и графиками, даже в таком извращенном варианте.
Количество 15-минуток сделать  имеет к расчету более опосредованное отношение
6) "Три дня в неделю (пон.,среда, пятница) по два часа работы приходится на вечерние часы. За каждый час работы в вечернее время сотрудники получают оплату на 50% больше их часовой ставки по окладу" - заводим доп ресурс вечерние часы в графиках. Не совсем понятно, должен ли это быть отдельный вид расчета или сумма должна добавляться при расчете оклада. Наверно, всё-таки отдельный вид расчета, может будет больше понятно в контексте конкретной задачи
Однозначно отдельный ВР на каждый алгоритм.
7) Документ "Выплата зарплаты" с автозаполнением по результатам начисления. Здесь вроде всё понятно - регистр остатков, в который Начисление делает приход, а документ Выплата - расход.
Там не все так очевидно и зависит от точной формы отчета, которую никто не видел. Но могу только сказать, что делать документ по  выплате в разрезе видов начислений - это моветон

На остальные вопросы либо уже писал, либо слишком много писать...


Alexander16

  • Новичок
  • *
  • Сообщений: 5
2) График с дискретностью 15 мин для учета опозданий и начисления штрафов.
В задаче сказано, что за каждые 15 минут, значит вид расчета периодический. И либо он работает параллельно с окладом, что логически неверно, либо вытесняет оклад. А значит надо делать регистр сведений с минутной периодикой, и заполнять график через каждые 15 минут. Кода там добавляется с грамм. Да и в ТЧ поменять ДатаНачала и ДатаОкончания, на "Дата с временем".
С Гакусей абсолютно согласен.

3) Программная запись в таблицы перерасчета, здесь для меня совсем всё туманно. Не нашел какого-то конкретного обсуждения этого вопроса.
На примере 6 билета, где попадалось это нововведение. Есть вид расчета Надбавка, которая зависит от суммы оплаты пассажиров, а еще есть вид расчета Отпуск, у которого базовым выступает вид расчета Надбавка. Так вот, получается при изменении в документе, фиксирующем суммы оплаты, для правильного начисления по расчетам необходимо перепровести связанный документ Начисление с видом расчета Надбавка, а затем связанные документы с видом расчета Отпуск. Непонятно у нас должна информация в перерасчеты попасть как по документам, связанным с видом расчета Надбавка, так и с видом расчета Отпуск? И как должен осуществляться этот поиск - при проведении документа Сумма оплата с отбором данных этого документа по таблице регистра расчета по периоду и паре Сотрудник, Автомобиль или я чего то не понимаю? Нужна Ваша помощь, специалисты.
Отпуск берётся по всем начислениям, в том числе и от надбавки. Значит надбавка у него ведущая. Достаточно изменить надбавку и РР автоматом добавит запись по отпуску в перерасчёты. Отпуск трогать не надо.
А вот у надбавки зависимость от РБ, где разработчиками не создана процедура зависимости, а значит надо её создавать самому. При проводке документа поступление денег(в РБ), запросом получаем все записи из РР где период регистрации (т.к. все записи в документах за один расчетный период) больше или равно начало следующего месяца от даты документа приход денег и вид расчета равен виду надбавка. Обрабатываем запрос и добавляем в перерасчёты. Ещё раз повторюсь - в перерасчётах будет создана только вид надбавка. Когда начнутся проводить документы по надбавке, платформа автоматом начнёт добавлять ведомые по отпускам.

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

  • Проверенный
  • ***
  • Сообщений: 219
6) "Три дня в неделю (пон.,среда, пятница) по два часа работы приходится на вечерние часы. За каждый час работы в вечернее время сотрудники получают оплату на 50% больше их часовой ставки по окладу" - заводим доп ресурс вечерние часы в графиках. Не совсем понятно, должен ли это быть отдельный вид расчета или сумма должна добавляться при расчете оклада. Наверно, всё-таки отдельный вид расчета, может будет больше понятно в контексте конкретной задачи
Однозначно отдельный ВР на каждый алгоритм.
Значит в этой задаче просто в регистре графиков ресурс количества вечерних часов, новый вид расчета с ПД, из виртуальной таблицы данных графика берем количество часов и рассчитываем в соответствии с условием задания.
7) Документ "Выплата зарплаты" с автозаполнением по результатам начисления. Здесь вроде всё понятно - регистр остатков, в который Начисление делает приход, а документ Выплата - расход.
Там не все так очевидно и зависит от точной формы отчета, которую никто не видел. Но могу только сказать, что делать документ по  выплате в разрезе видов начислений - это моветон
Один из участников форумы выкладывал измененный билет №2, который попался ему на экзамене, там были следующие поля отчета - Сотрудник, Вид расчета, Нач. сальдо, Начислено, Выплачено, Кон. сальдо. Мне кажется, этим отчетом и определяется структура регистра - измерения Сотрудник, ВидРасчета, Ресурс Сумма. Соответственно и отчет будет отлично собираться из виртуальной таблицы остатков и оборотов.

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

  • Проверенный
  • ***
  • Сообщений: 219
2) График с дискретностью 15 мин для учета опозданий и начисления штрафов.
В задаче сказано, что за каждые 15 минут, значит вид расчета периодический. И либо он работает параллельно с окладом, что логически неверно, либо вытесняет оклад. А значит надо делать регистр сведений с минутной периодикой, и заполнять график через каждые 15 минут. Кода там добавляется с грамм. Да и в ТЧ поменять ДатаНачала и ДатаОкончания, на "Дата с временем".
С Гакусей абсолютно согласен.
Спасибо за разьяснения, значит в регистре графиков будет не 8 часов, а 32 пятнадциминутки, и вытеснение будет именно в этой единице... Попробую реализовать, может действительно не так это и страшно, как кажется на первый взгляд.

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

Alexander16

  • Новичок
  • *
  • Сообщений: 5
Спасибо за разьяснения, значит в регистре графиков будет не 8 часов, а 32 пятнадциминутки, и вытеснение будет именно в этой единице... Попробую реализовать, может действительно не так это и страшно, как кажется на первый взгляд.
Не забудь при заполнении, что в рабочих сутках всего 8 часов. Я на каждую запись с 8:00 по 16:00 писал в ресурс 0.4. (обед в расчёт не брал)
Здесь тоже стало понятнее. Действительно зачем еще программно анализировать вид расчета Отпуск, когда механизмами системы итак при проведении начислений по надбавке, данные по отпускам отразятся в перерасчетах. Не совсем только понял, почему берем записи, где период регистрации больше или равен началу следующего месяца, получается при изменении в январе, мы добавим в перерасчет и февральские, и мартовский, и апрельские записи. У нас (говоря о 6 билете) собираются же данные за прошлый месяц, значит достаточно будет взять только следующий месяц или я не прав? И, наверно, нужно будет еще отбор сделать по сотруднику указанному в документе ОплатаПассажиров с сотрудником регистра, чтобы лишние записи не хапануть.
Ну, там вроде база по окладу за 3 предыдущих месяца, а значит следовательно взять за 3 следующих месяца. И отбор по сотруднику, согласен.

Гакусей

  • Проверенный
  • ***
  • Сообщений: 154
Один из участников форумы выкладывал измененный билет №2, который попался ему на экзамене, там были следующие поля отчета - Сотрудник, Вид расчета, Нач. сальдо, Начислено, Выплачено, Кон. сальдо. Мне кажется, этим отчетом и определяется структура регистра - измерения Сотрудник, ВидРасчета, Ресурс Сумма. Соответственно и отчет будет отлично собираться из виртуальной таблицы остатков и оборотов.
В том билете только названия колонок и итого. Как расположены сами данные в нем не видно, они пустые

uksne

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

Alexander16

  • Новичок
  • *
  • Сообщений: 5
А вот какой вопрос возник: зачем делать график по 15 минут, как некоторые указывали еще в обсуждении задачи 3.24, ведь вытеснения по условию задачи нет?
А если считать время опозданий, то предлагаю проверить такой вариант:
Есть записи по 15 минут в регистре сведений, есть опоздание у работника, например, с 8:00 по 8:17.
Проводим документ и в запросе из видим, что по данным графика опоздание уже 30 минут.
Т.е. для корректного подсчета времени опоздания нужно делать регистр поминутно, но здесь другой вопрос, а нужен ли такой монстр при отсутствии вытеснений, да и ограничение учебной версии по количеству записей в регистре никто не отменял.
Т.е. Если сотруднику по окладу начисляется в среднем за каждые 15 минут 200 рублей (утрированно), а снимается 100, то на работу можно ходить только за деньгами. Я бы хотел такую работу. А в регистре начинать делать первую запись не с 0:00:00 а с 0:14:59 и прибавлять по 15 минут. Вытеснение работает как положено. Если сотрудник опоздал на 29 минут, то вытесняется только 1 запись регистра.

А вообще никто не запрещает делать так как хочешь. Главное доказать проверяющему почему так правильней.
« Последнее редактирование: Июнь 30, 2016, 02:43:54 pm от Alexander16 »

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

  • Проверенный
  • ***
  • Сообщений: 219
Спасибо за разьяснения, значит в регистре графиков будет не 8 часов, а 32 пятнадциминутки, и вытеснение будет именно в этой единице... Попробую реализовать, может действительно не так это и страшно, как кажется на первый взгляд.
Не забудь при заполнении, что в рабочих сутках всего 8 часов. Я на каждую запись с 8:00 по 16:00 писал в ресурс 0.4. (обед в расчёт не брал)
Почему в ресурсе 0.4? Я так понял, если реализуем вытеснение оклада опозданиями, то в графике два ресурса - один фиксирует единицы каждые 15 минут (для подсчета количества пятнадциминутных опозданий), а во втором - количество часов в интервале, т.е. 0.25. для подсчета отработанных часов оклада.

Maannar

  • Пользователь
  • **
  • Сообщений: 19
Значит в этой задаче просто в регистре графиков ресурс количества вечерних часов, новый вид расчета с ПД, из виртуальной таблицы данных графика берем количество часов и рассчитываем в соответствии с условием задания.

А если сделать Оклад - базовым для вечерних часов и отдельный график дни них? Доработка обработки заполнения графика проще, только часы добавить. При расчете количество вечерних часов из данных графика получаем. А часовую ставку из:
1) По базе - Сумма оклада / Отработано часов
2) Добавляем отдельный реквизит "часовая ставка" - куда записываем при расчете оклада
Из "параметра" получаем процент надбавки за вечерние часа.

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

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

  • Проверенный
  • ***
  • Сообщений: 219
Значит в этой задаче просто в регистре графиков ресурс количества вечерних часов, новый вид расчета с ПД, из виртуальной таблицы данных графика берем количество часов и рассчитываем в соответствии с условием задания.

А если сделать Оклад - базовым для вечерних часов и отдельный график дни них?
Здесь не все так просто. А какой будет этот график - для вечерних часов? Если у сотрудник основной график пятидневка, то доплата будет за работу в понедельник, среду и в пятницу. А если его график - работа только в выходные? Тогда ему совсем не светят вечерние часы. Тут универальный график не сделаешь для вечерних часов.
Перечитал несколько (десятков, а может и сотен) раз условие задачи "Три дня в неделю (пон.,среда, пятница) по два часа работы приходится на вечерние часы. За каждый час работы в вечернее время сотрудники получают оплату на 50% больше их часовой ставки по окладу" Два часа работы ПРИХОДЯТСЯ- то есть это два часа из графика по окладу, которые должны быть оплачены сверх ставки. Идеально простое решение - новый ресурс в графике количество вечерних часов и ПРИ РАСЧЕТЕ ОКЛАДА рассчитывать результат как КоличествоЧасовФакт * ТарифнаяСтавка + КоличествоВечернихЧасовФакт*0.5*ТарифнаяСтавка. В чем плюс решения - здесь уже будет рассчитана ТарифнаяСтавка, которая нам нужна для расчета вечерних часов + пользователю не надо для расчета вечерних часов указывать в документе начисление вид расчета ВечерниеЧасы, но Гакусей (а он спец в ЗУПе и теперь и по платформе) настаивает, что вечерние часы - это отдельный вид расчета. Тогда не понятно, как расчитается ТарифнаяСтавка для вечерних часов? (формула НачальноеЗначениеОклада/КоличествоРабочихЧасов) - необходимо будет тогда для вечерних часов также подтягивать НачальноеЗначениеОклада, а КоличествоРабочихЧасов брать КоличествоЧасовПериодДействия, а если пользователь ошибется и укажет для Оклада и для вечерних часов разные графики? - КоличествоРабочихЧасов рассчитается неверно...

Maannar

  • Пользователь
  • **
  • Сообщений: 19
Тогда не понятно, как расчитается ТарифнаяСтавка для вечерних часов? (формула НачальноеЗначениеОклада/КоличествоРабочихЧасов) - необходимо будет тогда для вечерних часов также подтягивать НачальноеЗначениеОклада, а КоличествоРабочихЧасов брать КоличествоЧасовПериодДействия, а если пользователь ошибется и укажет для Оклада и для вечерних часов разные графики? - КоличествоРабочихЧасов рассчитается неверно...
Тогда добавить ресурс отработано вечерних часов в осн начисления, и реквизит часовая ставка (или расчетно её получать)  Вечерние час в доп начислениях без периода действия. По базе получаем - сумму вечерних часов, и часовую ставку.


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

  • Проверенный
  • ***
  • Сообщений: 219
Тогда не понятно, как расчитается ТарифнаяСтавка для вечерних часов? (формула НачальноеЗначениеОклада/КоличествоРабочихЧасов) - необходимо будет тогда для вечерних часов также подтягивать НачальноеЗначениеОклада, а КоличествоРабочихЧасов брать КоличествоЧасовПериодДействия, а если пользователь ошибется и укажет для Оклада и для вечерних часов разные графики? - КоличествоРабочихЧасов рассчитается неверно...
Тогда добавить ресурс отработано вечерних часов в осн начисления, и реквизит часовая ставка (или расчетно её получать)  Вечерние час в доп начислениях без периода действия. По базе получаем - сумму вечерних часов, и часовую ставку.
В этом варианте мне кажется не очень правильно для оплаты по виду расчета, который обладает какой-то протяженностью во времени и по идее не имеет базы мы отключаем период действия и включаем базу.. Как то это всё нелогично...

Мне всё-таки больше нравится вариант с видом расчета ВечерниеЧасы, а расчет суммы как КоличествоВечернихЧасовФактическийПериодДействия * (НачальныйОклад/КоличествоЧасовПериодДействия). Отключать период действия для вечерних часов точно не стоит, возможно их еще будет что то вытеснять (в задаче 3 где встречалось это условие, еще и командировка).
« Последнее редактирование: Июль 03, 2016, 11:49:47 pm от pozitiFFF »

Maannar

  • Пользователь
  • **
  • Сообщений: 19
В этом варианте мне кажется не очень правильно для оплаты по виду расчета, который обладает какой-то протяженностью во времени и по идее не имеет базы мы отключаем период действия и включаем базу.. Как то это всё нелогично...
Мне всё-таки больше нравится вариант с видом расчета ВечерниеЧасы, а расчет суммы как КоличествоВечернихЧасовФактическийПериодДействия * (НачальныйОклад/КоличествоЧасовПериодДействия). Отключать период действия для вечерних часов точно не стоит, возможно их еще будет что то вытеснять (в задаче 3 где встречалось это условие, еще и командировка)
Командировка вытеснит оклад, и у вечерних часов база будет нулевая по вечерним часам.
А вот на счет логичности, не знаю, практический опыт проектирования расчетных задач - отсутствует. С моей стороны добавление вечерних часов пользователем означает включение для сотрудника такой доплаты, а базовый период - собственно за какой период идёт доплата.
Если попадётся на экзамене, попробую сделать так ради интереса.