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

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

Danan

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Данияр
Re: Задача 3.1
« Ответ #45 : Январь 22, 2011, 09:29:25 am »
SergTH000,
 По 4 пункту: Видать вправду текст не очень читабельный, ты кажется мою идею не понял. И так две процедуры, для расчета одного НабораЗаписей своя процедура со своим запросом.

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

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

« Последнее редактирование: Январь 22, 2011, 09:52:37 am от Данияр »

detec

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Andrew
Re: Задача 3.1
« Ответ #46 : Январь 25, 2011, 11:08:29 am »
Мой вариант. Сделал не совсем так, как показано в видеоуроках. В документе "Начисление зарплаты" я создал отдельные процедуры, по которым рассчитываются начисления. Результаты расчёта записываются в табличную часть. При проводке документа никаких новых вычислений не производится - данные просто сохраняются в регистр расчёта.
 Знаю, что это не соответствует теории, но на практике, в типовых конфигурациях, делается примерно так же.
Вложения:
1Cv8_detec_3.01.dt


Danan

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Данияр
Re: Задача 3.1
« Ответ #47 : Февраль 18, 2011, 01:33:06 pm »
pershinsergei, Командировка должна вытеснять оклад по периоду действия.
 Например начисляют оклад с 1 числа по 31 сотруднику.
 Этого же сотрудника отправляют с 10 по 20 в командировку.
 Командировка вытесняет оклад за этот интервал времени и у оклада остаются интервалы с 1 по 9 и с 21 по 31. Фактическим периодом действия оклада будут являться эти два интервала. Или если получить данные графика ЗначениеФактическийПериодДействия=21( если график работы 7 дневка).
 Потому за 21 день должен начисляться оклад, который составит базу расчета для премии.

Допустим ставка оклада 10000, процент премии 10
 Оклад =21*10000/31=6774,19;
 Премия=6774,19*10/100=677.41;
 И еще нужно рассчитать командировку по условиям задачи.

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


Danan

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Данияр
Re: Задача 3.1
« Ответ #48 : Февраль 21, 2011, 01:09:53 pm »
Сейчас я уже точно не помню как я делал, в этой задаче. В рамках этой задаче я бы взял значение ставки по окладу на начало месяца и от нее рассчитывал оклад.

Если хочешь рассчитывать оклад с учетом изменений ставки по окладу в течении месяца, то можно для примера посмотреть решение задачи 3.28 от SINISTER_STAR, или мое решение этой же задачи в теме Билит № 2. В обоих случаях в модуле документа НачислениеЗарплаты можно увидеть как формируются записи РР с учетом изменений тарифных ставок в расчетном периоде(месяце).


SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Re: Задача 3.1
« Ответ #49 : Февраль 25, 2011, 01:30:48 am »
pershinsergei,
 1.
Quote
Зачем в некоторых решениях используются реальные таблицы РР и соединяются с виртуальными (хотя вроде все необходимые данные есть в виртуальных табл)?

 Мое мнение - использовать реальные таблицы в задачах по СПР не нужно. Но нужно учитывать, что в виртуальных таблицах может не быть записей. Например в вирт табл. ДанныеГрафика есть все что и в реал, а если данных нет, то график не заполнен ну и рассчитывать тогда нечего, поэтому ее можно соединять Левыми соединениями с остальными вирт таблицами.
 Другой пример - при расчете доп. начислений есть вид расчета в базу которого входят виды и из Основых и Дополнительных начислений. Вот тут может возникнуть ситуация, изначально не известно вдруг в какой то одной таблице нет записей, тогда нужно брать номер из другой. То есть выбирать нужно например так - IsNULL(БазаОснНачисления.НомерСтроки, БазаДопНачисления.НомерСтроки) и соединять полным соединением.
 2.
Quote
Необходимо ли делать проверку на дату начала и окончания для видов расчета???? Или это имеется в виду что не заморачиваться по этому поводу???

 Именно не заморачиваться.
 3.
Quote
Также нужно ли очищать записи в начале документа так как делали в оперативном и бух учете (Движения.ОсновныеНачисления.Записать();) ????
Нет, очищать не нужно, также как например в Приходной накладной (в большинстве случаев) или при новой методике. В обработке проведения сразу же записываются новые движения кот. сами затрут старые.
« Последнее редактирование: Февраль 25, 2011, 01:31:54 am от Сергей »

Alejandro_m

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Александр
Re: Задача 3.1
« Ответ #50 : Июнь 08, 2011, 11:07:01 pm »
Вопрос. А как узнать количество "количество рабочих часов в двух предыдущих месяцах"? Т.е. не отработанных данным сотрудником а именно Рабочих - по тому графику он работал, при этом я так понимаю в одном месяце он может работать по одному графику а в другом по другому. У меня только вариант использовать вложенный запрос ну или временную таблицу.

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


 Судя по тому как это делают в типовых конфигурациях - нужно добавлять еще один ресурс - норма часов - т.е. учитывать сколько сотрудник должен бы был отработать в данном периоде. хотя в данной задаче не понятно - предположим он работает по графику ВТ,СР,ЧТ а командировку ему сказано начислять по пятидневке. в этом случае количество "рабочих" часов сумма всех рабочих часов по графику ВТ,СР,ЧТ или нет?
« Последнее редактирование: Июнь 08, 2011, 11:36:46 pm от Александр »

Gyd

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Re: Задача 3.1
« Ответ #51 : Июнь 09, 2011, 09:23:42 am »
Quote (Alejandro_m)
в этом случае количество "рабочих" часов сумма всех рабочих часов по графику ВТ,СР,ЧТ или нет?
 

 Количество рабочих часов у вас будет определяться по тем записям которые уже сделаны, в этих записях же указаны графики по которым работал сотрудник. Допустим в первом месяце - ВТ, СР, ЧТ, во втором - пятидневка, соответственно за первый месяц посчитается количество рабочих часов по графику ВТ,СР,ЧТ, а за второй - по пятидневке. Посмотрите уже решенные задачи как в них это реализовано.

Gulf_Stream

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Радомский Виктор Сергеевич
Re: Задача 3.1
« Ответ #52 : Июнь 09, 2011, 04:26:07 pm »
Моё решение, попинайте кому не влом,
Вложения:
3.01_Gulf_Strea.dt

Alejandro_m

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Александр
Re: Задача 3.1
« Ответ #53 : Июнь 09, 2011, 10:03:57 pm »
Quote (Gyd)
Посмотрите уже решенные задачи как в них это реализовано.

 Можете подсказать какой именно пример? (что бы не учиться тому как делать не нужно)

Gyd

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Re: Задача 3.1
« Ответ #54 : Июнь 10, 2011, 10:37:04 am »
Quote (Alejandro_m)
Можете подсказать какой именно пример?

 Ну если вам не лень, то гляньте все базы, посмотрите насколько разными могут быть пути решения smile
 лично мне больше всего понравился вариант AndreiPiter, хотя пока не могу сказать всё там правильно или нет, но решение само по себе интересное и простое.

Slimper

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Slava
Re: Задача 3.1
« Ответ #55 : Июнь 16, 2011, 02:10:18 pm »
вот, первая задачка по расчетам, которую сделал

 Посмотрел выложенные решения, у всех оклад берется на ПериодРегистрации или НачалоМесяца(ПериодРегистрации), те если начислим майский оклад в июне, то оклад он возьмет июньский

 И ещё, кто-нибудь может обосновать, почему для Подразделения народ использует измерение регистра, а не реквизит?
Вложения:
3_1_Slimper.dt
« Последнее редактирование: Июнь 16, 2011, 02:22:14 pm от Slava »

Gyd

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Re: Задача 3.1
« Ответ #56 : Июнь 16, 2011, 04:01:08 pm »
Quote (Slimper)
И ещё, кто-нибудь может обосновать, почему для Подразделения народ использует измерение регистра, а не реквизит?

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

Добавлено (16.06.2011, 16:01)
---------------------------------------------

Quote (Slimper)
Посмотрел выложенные решения, у всех оклад берется на ПериодРегистрации или НачалоМесяца(ПериодРегистрации), те если начислим майский оклад в июне, то оклад он возьмет июньский

 Согласен. Просто многие наверное подумали что документ вводится в том месяце за который вводятся данные.

Slimper

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Slava
Re: Задача 3.1
« Ответ #57 : Июнь 16, 2011, 04:22:06 pm »
Quote (Gyd)
Наверное для того чтобы можно было проще производить отбор (и последующую выборку) по нужному подразделению, например при установке параметров виртуальной таблицы. Ну и подразделение это все таки не вспомогательная информация, а один из разрезов учета, подразумевается что один и тот же сотрудник может работать в разных подразделениях, значит нужны отдельные записи по каждому подразделению.


 Это понятно, но в условии задачи про подразделение нет ни слова (те отбор и выборка не обязательны), оно присутствует только в отчете. Получается построив отчет по физ или виртуальной таблице, где бы ни было подразделение, в реквизите или измерении, результат получится одинаковый. С другой стороны как пишут тут, отвечая на этот вопрос
 http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=545035#545035
 "Измерение - это признак детализации итоговых данных, накапливаемых в ресурсах регистра. Отчет - средство отображения этих итоговых данных. "
 Но! В этой задаче, в этой же роли может выступать и реквизит, так что фиг его знает как правильно

Gyd

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Re: Задача 3.1
« Ответ #58 : Июнь 17, 2011, 03:30:21 pm »
Quote (Slimper)
Но! В этой задаче, в этой же роли может выступать и реквизит, так что фиг его знает как правильно

 Думаю вот это был правильный ответ:
 
Quote (Белоусов Павел, 1С)
Не снизит. Вопрос только: почему реквизит, а м.б. измерение? Поэтому, необходимо подумать: чем измерение регистра отличается от реквизита?

valdu

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Александр
Re: Задача 3.1
« Ответ #59 : Июнь 24, 2011, 12:46:13 pm »
Господа, прочитав две ветки, не нашел ответа на свой вопрос. Что если сотрудник работает по шестидневке (в условии сказано, что это необходимо предусмотреть). При этом рабочие дни командировки всегда считаются по пятидневке. Как тогда получить количество рабочих часов в двух предыдущих месяцах (ЗначениеБазовыйПериод) по шестидневке, а продолжительность самой командировки (ЗначениеФактическийПериодДействия) по пятидневке.

 Или с этим не надо заморачиваться, а просто всех обсчитывать по пятидневке. Графики сделать просто, чтобы выполнить требование условия задачи.