Автор Тема: Билет 2. Спец по платформе V8  (Прочитано 134667 раз)

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

серж

  • Пользователь
  • **
  • Сообщений: 93
  • Билеты: https://expert.chistov.pro/public/1127069/
Re: Билет 2. Спец по платформе V8
« Ответ #465 : Июнь 24, 2019, 01:30:42 am »
Расчеты.
 Размер премии процентом как я понял считается от базы (оклад) и одновременно вытесняется премией суммой.
Пытаюсь сообразить, как для нее правильная формула расчета выглядит ?
Допустим, премию процентом нужно посчитать за 4 дня (указано в документе начисления), причем
 размер базы (оклад за 4 дня) = 10000 руб,
 фактический период действия премии = 3 дня (1 день был вытеснен фиксированной премией),
 процент премии = 50%.
Результат = 3/4*50*10000/100 ?
Как получить из регистра 4 дня, что это за величина, дней в базовом периоде ?


EVSt

  • Пользователь
  • **
  • Сообщений: 10
Re: Билет 2. Спец по платформе V8
« Ответ #466 : Июнь 24, 2019, 08:36:41 am »
Как получить из регистра 4 дня, что это за величина, дней в базовом периоде ?

ОсновныеНачисленияДанныеГрафика.ЧасыПериодДействия

По условию задачи, кстати, всё в часах считается, а не в днях.
« Последнее редактирование: Июнь 24, 2019, 08:38:57 am от EVSt »


letyurij

  • Пользователь
  • **
  • Сообщений: 87
Re: Билет 2. Спец по платформе V8
« Ответ #467 : Июнь 24, 2019, 09:13:40 am »
Расчеты.
 Размер премии процентом как я понял считается от базы (оклад) и одновременно вытесняется премией суммой.
Пытаюсь сообразить, как для нее правильная формула расчета выглядит ?
Допустим, премию процентом нужно посчитать за 4 дня (указано в документе начисления), причем
 размер базы (оклад за 4 дня) = 10000 руб,
 фактический период действия премии = 3 дня (1 день был вытеснен фиксированной премией),
 процент премии = 50%.
Результат = 3/4*50*10000/100 ?
Как получить из регистра 4 дня, что это за величина, дней в базовом периоде ?
Флаг "Период действия является базовым периодом" установи.

серж

  • Пользователь
  • **
  • Сообщений: 93
  • Билеты: https://expert.chistov.pro/public/1127069/
Re: Билет 2. Спец по платформе V8
« Ответ #468 : Июнь 24, 2019, 09:22:09 pm »
 Ах вот оно что, хитрый флажок в настройке вида расчета, спасибо.
Я и думаю, как так то, фактический период действия меняется, за счет вытеснения, а размер базы (ОсновныеНачисленияБазаОсновныеНачисления.РезультатБаза) тот же самый остается.
Тогда формула для премии процентом будет такая: результат = РезультатБаза * Процент / 100.
Дни действительно лишние, хотел по ним определять рабочее время для фиксированной премии согласно условию "Вместо премии, за любой отработанный день".  Но сейчас вижу что и часов достаточно, если есть хоть 1 рабочий час в фактическом периоде действия, значит это "отработанный день" и начисляем премию.
 Интересно, если для фиксированной премии указать вместо 1 дня некий период, то сумма премии же не должна измениться по идее, т.к. она фиксированная. Т.е. если указали для фикс. премии период  = 1 неделя, то на результат расчета по фикс. премии это не повлияет, зато повлияет на результат по премии процентом, т.к. неделя будет вытеснена.
  Вообще думаю что это излишнее усложнение условия задачи - проверка на рабочий день перед начислением фикс. премии. В условии же не сказано, что если не рабочий то нельзя начислять. Поэтому при записи движений сразу буду писать в результат сумму фикс. премии.
 
« Последнее редактирование: Июнь 25, 2019, 10:42:21 pm от серж »

letyurij

  • Пользователь
  • **
  • Сообщений: 87
Re: Билет 2. Спец по платформе V8
« Ответ #469 : Июнь 26, 2019, 09:16:37 am »
Дело в том, что для системы базовый период и период действия — это разные таблицы. Одна премия считается по базе, а вторая фиксированная её должна вытеснять. Система смотрит одна премия посчиталась по одной таблице, другая по другой. Всё хорошо — пересечения нет — нет и вытеснения. А чтобы оно было, надо, чтобы базовый период совпадал с периодом действия, тогда система увидит пересечение периодов и   сработает механизм вытеснения. Задачка СПР во втором билете, как раз на знание этого механизма.

серж

  • Пользователь
  • **
  • Сообщений: 93
  • Билеты: https://expert.chistov.pro/public/1127069/
Re: Билет 2. Спец по платформе V8
« Ответ #470 : Июнь 26, 2019, 11:20:53 pm »
Дело в том, что для системы базовый период и период действия — это разные таблицы. Одна премия считается по базе, а вторая фиксированная её должна вытеснять. Система смотрит одна премия посчиталась по одной таблице, другая по другой. Всё хорошо — пересечения нет — нет и вытеснения. А чтобы оно было, надо, чтобы базовый период совпадал с периодом действия, тогда система увидит пересечение периодов и   сработает механизм вытеснения. Задачка СПР во втором билете, как раз на знание этого механизма.
  По-моему суть флага "Период действия является базовым периодом" в том, чтобы делать отбор у оклада не по границам периода действия Премии (например, с 1 по 31), а по границам ее фактических периодов времени (например, с 1 по 9 и с 11 по 31). В таком случае 10 число не попадет в выборку, соответственно размер базы (суммы начисленного оклада) будет меньше.
 А без установки флага отбор по окладу у меня делался по границам периода действия премии, т.е. тупо с 1 по 31 число, при этом конечно не был учтен факт вытеснения премии 10-го числа (10-м числом я ввел премию суммой)

letyurij

  • Пользователь
  • **
  • Сообщений: 87
Re: Билет 2. Спец по платформе V8
« Ответ #471 : Июнь 27, 2019, 07:53:54 am »
Нет. Период действия (норма дней, часов) вообще не причем.  Период действия, фактический период действия, базовый период — это разные таблицы.
Флаг ставиться, если требуется вытеснение по базовому периоду: базовый период = фактический период действия.
« Последнее редактирование: Июнь 27, 2019, 07:58:09 am от letyurij »

серж

  • Пользователь
  • **
  • Сообщений: 93
  • Билеты: https://expert.chistov.pro/public/1127069/
Re: Билет 2. Спец по платформе V8
« Ответ #472 : Июнь 27, 2019, 09:37:43 pm »
Возник вопрос по решению Расчетной задачи:
Расчет премии делаться следующим запросом.:
"ВЫБРАТЬ
| ОсновныеНачисленияДанныеГрафика.НомерСтроки,
| ОсновныеНачисленияДанныеГрафика.Размер,
| ЕСТЬNULL(ОсновныеНачисленияБазаОсновныеНачисления.РезультатБаза, 0) КАК База
|ИЗ
| РегистрРасчета.ОсновныеНачисления.ДанныеГрафика(
| Регистратор = &Ссылка
| И ВидРасчета = &Премия) КАК ОсновныеНачисленияДанныеГрафика
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисления.БазаОсновныеНачисления(
| &Измерения,
| &Измерения,
| ,
| Регистратор = &Ссылка
| И ВидРасчета = &Премия) КАК ОсновныеНачисленияБазаОсновныеНачисления
| ПО ОсновныеНачисленияДанныеГрафика.НомерСтроки = ОсновныеНачисленияБазаОсновныеНачисления.НомерСтроки";

Зачем здесь используется ВТ "Данные Графика". Ведь реквизит "размер" доступен из ВТ "БазаОсновныеНачисления"
правильно ли я понимаю что избыточное использование ВТ "Данные Графика"  ?

 Данные графика тут не нужны, берем базу по окладу и все :
      "ВЫБРАТЬ
      |   ОсновныеНачисленияБазаОсновныеНачисления.НомерСтроки КАК НомерСтроки,
      |   ОсновныеНачисленияБазаОсновныеНачисления.ЗначениеПремии КАК ПроцентПремии,
      |   ОсновныеНачисленияБазаОсновныеНачисления.РезультатБаза КАК ОкладЗаПериод
      |ИЗ
      |   РегистрРасчета.ОсновныеНачисления.БазаОсновныеНачисления(
      |         &Измерения,
      |         &Измерения,
      |         ,
      |         Регистратор = &Ссылка
      |            И ВидРасчета = &ПремияПроцентом) КАК ОсновныеНачисленияБазаОсновныеНачисления";

 Вопрос по отчету "Платежно-расчетная ведомость" - в шапке есть виды расчета и поле "выплачено".
 Это что, предполагается общую сумму выплаты по каждому виду расчета разносить в процедуре проведения ?

letyurij

  • Пользователь
  • **
  • Сообщений: 87
Re: Билет 2. Спец по платформе V8
« Ответ #473 : Июнь 28, 2019, 07:38:11 am »
Вопрос по отчету "Платежно-расчетная ведомость" - в шапке есть виды расчета и поле "выплачено".
 Это что, предполагается общую сумму выплаты по каждому виду расчета разносить в процедуре проведения ?
Нет. Сумма выплаты — одна общая. Заводится регистр "РасчетыССотрудниками". ВидРасчета делаем реквизитом. Оперативное проведение у документа выплаты запрещаем. Для отчета делаем три запроса НачОст, Начислено, Выплачено. Помещаем их во ВТ и делаем полное соединение.

серж

  • Пользователь
  • **
  • Сообщений: 93
  • Билеты: https://expert.chistov.pro/public/1127069/
Re: Билет 2. Спец по платформе V8
« Ответ #474 : Июнь 28, 2019, 09:10:43 pm »
Вопрос по отчету "Платежно-расчетная ведомость" - в шапке есть виды расчета и поле "выплачено".
 Это что, предполагается общую сумму выплаты по каждому виду расчета разносить в процедуре проведения ?
Нет. Сумма выплаты — одна общая. Заводится регистр "РасчетыССотрудниками". ВидРасчета делаем реквизитом. Оперативное проведение у документа выплаты запрещаем. Для отчета делаем три запроса НачОст, Начислено, Выплачено. Помещаем их во ВТ и делаем полное соединение.
Такое решение я видел у кого-то на форуме, это гарантированные минус 1.5 балла за "В задачах получения итоговой информации использование прямого обращения к реальным таблицам регистра".
 Сделал левым соединением таблицы остатков и оборотов регистра взаиморасчетов с регистром расчетов. "Выплачено" вывожу только в итогах.

letyurij

  • Пользователь
  • **
  • Сообщений: 87
Re: Билет 2. Спец по платформе V8
« Ответ #475 : Июнь 28, 2019, 10:08:12 pm »
Такое решение я видел у кого-то на форуме, это гарантированные минус 1.5 балла за "В задачах получения итоговой информации использование прямого обращения к реальным таблицам регистра".
 Сделал левым соединением таблицы остатков и оборотов регистра взаиморасчетов с регистром расчетов. "Выплачено" вывожу только в итогах.
Это касается только задач ОУ и БУ.
В СПР много отчетов делается через обращение к реальным таблицам. Именно такой вариант расчетно-платежной ведомости, как я написал выше, показывают на курсах по подготовке на Специалиста методисты фирмы 1С.

« Последнее редактирование: Июнь 28, 2019, 10:11:56 pm от letyurij »

letyurij

  • Пользователь
  • **
  • Сообщений: 87
Re: Билет 2. Спец по платформе V8
« Ответ #476 : Июнь 28, 2019, 10:34:16 pm »
Соединение должно быть полное, а не левое. Остатков может и не быть, а начисления есть.

серж

  • Пользователь
  • **
  • Сообщений: 93
  • Билеты: https://expert.chistov.pro/public/1127069/
Re: Билет 2. Спец по платформе V8
« Ответ #477 : Июнь 29, 2019, 12:37:54 am »
Соединение должно быть полное, а не левое. Остатков может и не быть, а начисления есть.

Если допускается делать запросы к реальным таблицам и детализация выплат по видам расчетов не нужна,  тогда можно и на одном регистре сделать, просто соединив остатки с движениями физ. таблицы.  Зачем там три запроса с объединениями ?

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

letyurij

  • Пользователь
  • **
  • Сообщений: 87
Re: Билет 2. Спец по платформе V8
« Ответ #478 : Июнь 29, 2019, 08:22:42 am »
Почему ты берёшь актуальный конечный остаток? Отчет может быть за прошлый период.

Ситуация: в текущем периоде выплатили всю задолженность, конечного остатка нет. А у тебя левое соединение.

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

Необходимо сделать наоборот. Сначала отобрать необходимое, и только потом уже соединять.

Через консоль запросов посмотри на результат своего запроса до наложения условия ГДЕ.
« Последнее редактирование: Июнь 29, 2019, 08:24:38 am от letyurij »

letyurij

  • Пользователь
  • **
  • Сообщений: 87
Re: Билет 2. Спец по платформе V8
« Ответ #479 : Июнь 29, 2019, 09:17:49 am »
По вопросу об актуальных остатках я, наверное, догадался — ты скопировал отчет из СКД. Предупреждать надо )