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

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

DoctorRoza

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Алексей
Задача 3.04
« Ответ #30 : Ноябрь 19, 2011, 08:54:51 pm »
Romdavid, Видимо да, Вы правы. Вытеснений нет, поэтому вахту нужно определять в ПВР без периода действия. Спасибо за ошибку!
 p.s. ИМХО, нарушение основных принципов СПР в корне - самая главная ошибка программиста. Даже, если код изменять не надо. За это .. "Казнить, нельзя помиловать!" smile

sv_mikh

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Михайлов Сергей Валерианович
Задача 3.04
« Ответ #31 : Январь 05, 2012, 09:03:54 pm »
Прошу посмотреть мое решение.
 1. Все реализовал на Основных начислениях. Вида расчета 3. Оклад, командировка, надбавка. Доплату до оклада включил в командировку...
 Такое упрощение. Не знаю насколько наказуемое. Если доплату выделять, то сделал бы доп.начислением.
 2. Оклад и командировку разделяю по ставкам оклада.

Добавлено (05.01.2012, 21:03)
---------------------------------------------

Quote (Romdavid)
DoctorRoza, во-первых, надбавка не вытесняется другими видами расчета и не вытесняет другие виды расчета, во-вторых, надбавка не использует график. В вашем решении вы установили период действия у надбавки и никак не используете это. Если бы вы не установили наличие периода действия у надбавки, логика решения бы не изменилась и код фактически тоже. Однако, при установке галочки "Использует период действия" в БД появляются дополнительные поля.

 P.S. В СПР тоже опыта почти нет. Недавно только начал решать задачи из данного раздела.


 Попробую не согласиться. Считаю, что надбавка должна иметь период действия, ради того, чтобы иметь возможность получить базу не за весь месяц а за указанный период. Для этого надбавка имеет период действия и база = периоду действия ВР.
 Пример: Оклад с 01.01 по 31.01. Командировка с 16.01 по 20.01. Надбавка с 09.01 по 27.01. Как думаете считать надбавку?
Вложения:
sv_mikh_03_04.dt


sv_mikh

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Михайлов Сергей Валерианович
Задача 3.04
« Ответ #32 : Январь 05, 2012, 10:31:40 pm »
Вариант решения с выделенной доплатой до оклада в виде отдельного доп.начисления.
Вложения:
sv_mikh_03_04_2.dt

Кенгуру

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Кенгуру
Задача 3.04
« Ответ #33 : Апрель 23, 2012, 01:14:56 pm »
Не посчитают ли меня уважаемые господа преподаватели извращенцем, если

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

 т.е.

 Если (Выборка.ВидРасчета = Оклад) ИЛИ(Выборка.ВидРасчета = Надбавка) Тогда

 Если Выборка.ВидРасчета = Оклад Тогда
 К = 1;
 Иначе
 К = Выборка.ПроцентНадбавки / 100;
 КонецЕсли;

 ...

 ДляКаждогоЗапись ИзНабор Цикл

 Отбор.НомерСтроки = Запись.НомерСтроки;
 Выборка.Сбросить();
 ЕслиВыборка.НайтиСледующий(Отбор) Тогда

 Если(Запись.ВидРасчета = Оклад) ИЛИ(Запись.ВидРасчета = Надбавка) Тогда
 Запись.РезультатРасчета = ?(Выборка.План=0, 0, Запись.ПараметрРасчета * Выборка.Факт / Выборка.План);
 ...
« Последнее редактирование: Апрель 23, 2012, 01:16:24 pm от Кенгуру »

sv_mikh

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Михайлов Сергей Валерианович
Задача 3.04
« Ответ #34 : Апрель 23, 2012, 01:41:55 pm »
Quote (Кенгуру)
Не посчитают ли меня уважаемые господа преподаватели извращенцем, если
 буду считать надбавку также как и оклад, а не как некоторый вид расчета имеющий базу по окладу?


 Я думаю это неверное решение. Возможна ситуация, когда оклад за часть месяца не начисляется (по неизвестным причинам, не связанным с вытеснением), а надбавку начислили за все дни месяца. В целом тут прозрачно намекают на базу надбавки по периоду действия.
« Последнее редактирование: Апрель 23, 2012, 01:42:27 pm от Михайлов Сергей Валерианович »

Кенгуру

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Кенгуру
Задача 3.04
« Ответ #35 : Апрель 23, 2012, 03:07:17 pm »
Quote (sv_mikh)
Я думаю это неверное решение. Возможна ситуация, когда оклад за часть месяца не начисляется (по неизвестным причинам, не связанным с вытеснением), а надбавку начислили за все дни месяца. В целом тут прозрачно намекают на базу надбавки по периоду действия.

 Спасибо, не подумал об этом.. Буду делать через базу

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 3.04
« Ответ #36 : Апрель 23, 2012, 03:23:34 pm »
Такой вариант решения задачи.
 Спасибо за комментарии и замечания.
Вложения:
kow1976_3.4.dt

Кенгуру

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Кенгуру
Задача 3.04
« Ответ #37 : Апрель 24, 2012, 11:56:06 am »
kow1976
 объясните, у надбавки стоит галочка в вытесняюих-коммандировка.

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

 1) окладу не нужно указывать базовый период
 потому что он начисляется за период действия - отработал с 1 по 10 - получил с 1 по 10, например окладом по дням.
 А больничный, например, отболел с 1 по 10, а базу для расчета больничного взяли с 1 по 31 прошлого месяца.

 2) для надбавки можно также не указывать базовый период в обработке проведения при первой записи,
 т.к. у нее стоит галка "период действия является базовым периодом".
 В РР у нее не будут пустые значения в полях БПНачало и БПКонец, но начисления будут сделаны верно.

 3) можно не писать "Движение.Сторно=Ложь", пока не указано обратное, т.к. по умолчанию ложь

 Из вашей работы узнал, что у меня не правильно рассчитывает коммандировку - запрос берет по значение базы для расчтетов только по ОсновнымНачислениям
Вложения:
kenguru_3_4.dt
« Последнее редактирование: Апрель 24, 2012, 02:24:07 pm от Кенгуру »

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 3.04
« Ответ #38 : Апрель 24, 2012, 06:36:46 pm »
Кенгуру,
 Задача интересная. Рад что есть желание обсудить.
 
Quote (Кенгуру)
1) окладу не нужно указывать базовый период

 Делаю для того чтобы отделить командировку от оклада. Чтобы вычислить сколько дней был бы оклад если бы его не вытеснила командировка.

 Фактический период действия оклада минус базовый период действия оклада = Время недополученного оклада в результате командировки.

Добавлено (24.04.2012, 18:36)
---------------------------------------------

Quote (kow1976)
2) для надбавки можно также не указывать базовый период в обработке проведения при первой записи,

 Действительно можно ставить можно не ставить на получение базы по окладу влияние не оказывает. Делал в качестве эксперимента.

 
Quote (kow1976)
имхо не нужно ее ставить, т.к. надбавка берет базу по окладу, а оклад вытесняется коммандировкой,
 т.е. коммандировка и так будет косвенно вытеснять.


 Пробовал. Расчет правильный не получился.

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 3.04
« Ответ #39 : Апрель 25, 2012, 03:41:11 am »
Посмотрел ваше решение. Для одного сотрудника расчет вроде бы правильный. Командировку я вытесняю все таки зря. Хотя на этом построено все решение.

 При начислении з/п двум сотрудника ваше решение перестает правильно считать.

 Доплаты на мой взгляд надо бы включать в базу начисления командировок.
Вложения:
s7992011.jpg

Кенгуру

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Кенгуру
Задача 3.04
« Ответ #40 : Апрель 26, 2012, 10:50:01 am »
kow1976,
 странно, посмотрю, что не так; все-таки в фирме чаще больше одного сотрудника biggrin ..
 спасибо, попробую решить заново учитывая недоработки и потестить побольше.
Вложения:
kengoo_03_04.dt
« Последнее редактирование: Апрель 26, 2012, 06:23:53 pm от Кенгуру »

bezplana

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Ivan
Задача 3.04
« Ответ #41 : Май 18, 2012, 12:36:07 pm »
Quote (Lukashov_as)
Коллеги подскажите плз
 Посмотрел решения СрезПоследних по Окладу Все берут на ПериодРегистрации(на начало месяца)
 при этом в условии сказано
 "можно указать начисление оклада с 10.01 по 31.01"
 и если первичное значение оклада установить например на 08.01 то на 10.01 значение оклада будет =0

 
Quote (Matcoder)
Я считаю, что стоит. Решения в этой ветке не смотрел, но в ветке 3.2 есть мое решение, в котором используется запрос, решающий эту проблему.

 А нельзя ли воспользоватся таблицей РегистраСведений Срез первых? Я так и решил, не знаю насколько правильнее, но запрос получился намного понятнее.
 
Code

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

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

Oliver

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: Юрий
Задача 3.04
« Ответ #42 : Ноябрь 27, 2012, 08:27:08 am »
... Прочитал всю тему, посмотрел много баз ...
 ... самое интересное, что в данной задаче Павел Чистов считает, что надбавка не имеет периода действия (и соотвественно в доп. начислениях) ...
 ... под влиянием Авторитета я с Ним согласился ... Я бы мог его решение выложить, на нельзя наверное ...

 P.S. решил немного согрешить и выложу добавление записей в Рег (с разбивкой по периодам, изменение оклада произвольное колличество раз)... авторство: П.Чистов.
 
« Последнее редактирование: Ноябрь 27, 2012, 08:38:21 am от Кошелев Юрий Витальевич »

ivanovnm

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Ivanov N.M.
Задача 3.04
« Ответ #43 : Декабрь 21, 2012, 02:24:09 pm »
Quote
Следует учесть, что данные о командировке не могут вводиться в систему задним числом

 Как это понимать?
 1. Не учитывать ввод данных за прошлый период и не тратить время на работу со сторно, время решения задачи сокращается
 2. При проведении документа проверять ввод командировки задним, время решение задачи увеличивается.
« Последнее редактирование: Декабрь 21, 2012, 02:59:19 pm от Ivanov N.M. »

Oliver

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: Юрий
Задача 3.04
« Ответ #44 : Декабрь 22, 2012, 04:17:06 am »
Цитата
Как это понимать?

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