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

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

w1nd_n

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Дмитрий
Задача 3.41
« Ответ #15 : Сентябрь 23, 2013, 12:32:15 pm »
День добрый. В данной задачи нужно ли чтобы при проведении запись с командировкой и окладом создавались с периодом действия соответствующим фактическому(по дням из табеля), или будет достаточно при расчете взять факт. часов из оборотного регистра для табеля?

artfa

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Артур
Задача 3.41
« Ответ #16 : Октябрь 01, 2013, 05:13:50 pm »
решение
Вложения:
3.41.dt


Goxanov

  • Новичок
  • *
  • Сообщений: 3
  • ФИО: Александр
Задача 3.41
« Ответ #17 : Октябрь 01, 2013, 11:54:16 pm »
sv_mikh 
 Нашел ошибку в составление графика, после установки отбора по РС ГрафикиРаботы не поставил прочитал набор записей. 
 
Код
Набор = РегистрыСведений.ГрафикиРаботы.СоздатьНаборЗаписей();
    Набор.Отбор.График.Установить(График);
     
  ЧислоСекундВСутках = 86400;

 При вводе новых данных, старые затираются.

Legat

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Пётр
Задача 3.41
« Ответ #18 : Октябрь 07, 2013, 09:14:27 am »
При проведении расчетов данные графика берутся за расчетный период по всем графикам. Никак не могу понять почему...
Вложения:
legat_3.41.dt

mikas-2008

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Mikas
Задача 3.41
« Ответ #19 : Февраль 02, 2014, 01:54:25 pm »
artfa, у меня к вашему решению куча вопросов:

 1. Почему не очищаются регистры расчета при перепроведении документа начисление зарплаты? Удаляю записи сотрудников, а регистры не очищаются.

 2. Огромнейшие запросы с кучей виртуальных таблиц. На сколько я знаю, за лишнее использование ВТ на экзамене снижают баллы. Не проще ли разделять расчеты на два этапа для каждого плана расчетов: на первом этапе мы считаем исходные данные, на втором этапе делаем расчет.
 -----------------------------------------------------------------------------------------------------------------------------------
 Пара мыслей по поводу этой задаче. Пишу как программист со стажем по реальным расчетным задачам. Правда код пишу на Delphi, но скоро хочу переписывать наш проект на 1С. Так вот:

 1) Оприори не правильно использовать табель, как документ делающий проводки по РР. Да это грубая ошибка. В задании билета начисления должны вводиться одним документом - РАСЧЕТ ЗАРПЛАТЫ. В реальных условиях табель - это лишь вспомогательный документ, который для каждого сотрудника формирует график работы в текущем месяце.

 2) Необходимо определиться использовать ли механизмы вытеснения или нет? Они в первую очередь необходимы для определения кол-ва отработанных часов например для оклада в текущем месяце.

 2.1) Если ДА, тогда из табеля нужно будет получить периоды по командировке и использовать их в документе НАЧИСЛЕНИЕ ЗАРПЛАТЫ.
 2.2) Если НЕТ то тогда не указывать вытеснения в планах видов расчета и брать данные например из оборотных регистров накопления.
« Последнее редактирование: Февраль 03, 2014, 12:49:45 am от Mikas »

mikas-2008

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Mikas
Задача 3.41
« Ответ #20 : Февраль 03, 2014, 12:55:37 am »
Решил данную задачу. Мельком подсмотрел решения форумчан и не увидел правильного для себя решения и сделал все по своему:

 1) Для табеля использовал РН (обороты) в разрезах сотрудника и подразделения. Так кстати делают и в 1С в типовой конфигурации.
 2) В РР Осн. нач. добавил ресурс часы. В этот ресурс записываются либо командировочные, или рабочие часы. В зависимости от вида расчета. Основываясь на этих данных я смогу получить базу в часах, т.е. кол-во отработанных часов за предыдущие месяцы, а по скольку командировки и оклады не пересекаются, то и количество базовых часов будет верным.
 3) Все расчеты делю на два этапа. На первом ввожу исходные данные, на втором делаю расчеты. Смотреть на решения форумчан иногда не возможно. Все лепят в одну кучу. Как потом отлаживать такой код? Не понятно.
 4) Форму Табеля использовал из реального билета на 1С: специалист.

 Надеюсь мое решение кому-то да пригодится. :-) Будут вопросы, буду рад на них ответить, но похоже эта ветка умерла совсем. :-)))
Вложения:
3.41_mikas.dt
« Последнее редактирование: Февраль 03, 2014, 04:14:25 pm от Mikas »

non1ka

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: Тюрин Илья Александрович
Задача 3.41
« Ответ #21 : Март 15, 2014, 11:14:32 pm »
Не перестаю возмущаться, почему Вы все постоянно используете РН для получения данных при расчете.

 Данная задача прекрасно решается, при использовании только регистров расчетов.

 Опишу способ решения.
 ПВР ОсновныеНачисления (Оклад и Командировка)

 Оклад База для Расчета Оклад.
 Вы спросите зачем для Оклада База. Я отвечу, очень просто получить
 количество фактически отработанных дней по базе от оклада, если документ
 "Табель" будет делать движения в РР "Основные начисления" и
 регистрировать только Фактически отработанные часы.
 Затем при расчете заработной платы, мы не обращаемся ни к каким регистрам накопления, не
 обращаемся к регистрам сведения и графику напрямую.

 В данной задаче даже есть специальное условие, которое позволяет так решить
 задачу, в условии первого абзаца сказано, что количество часов в
 командировке должно отражаться документом "Табель", а затем в абзаце про
 расчет командировке ни чего не сказано, про расчет командировки с
 учетом количества часов нахождения в командировке. Точнее сказано
 обратное, что количество часов в командировке должно определяться по
 пятидневному графику.

 В общем, решение элементарное,
Вложения:
3.41_non.dt

Rizjiy

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Алексей
Задача 3.41
« Ответ #22 : Март 27, 2014, 11:55:28 am »
mikas-2008, Решение очень понравилось. Все четко и прозрачно!
 Пару критик smile :
 1)Процедура проведения Начисления зарплаты:
 
Код
 Процедура ОбработкаПроведения(Отказ, Режим)
     Движения.ОсновныеНачисления.Записать();
Очищать движения не нужно, т.к. мы их не читаем ))
 А потом в конце еще раз. Т.е. запись 2 раза.
 Я обычно делаю так:
 
Код
Движения.ОсновныеНачисления.Записывать=Истина;
 Движения.ОсновныеНачисления.Очистить(); //на случай, если они не пустые
 ...
 Движения.Записать();
В таком случае Флаг "записывать" снимается и движения пишутся один раз.

 2) Ну и отбор на ДанныеГрафика в процедуре расчета стоит не в Параметрах виртуальной таблицы.

 non1ka, )) У тебя всегда нетривиальные решения )) Но я бы не стал на экзамене ставить базу окладу от оклада Оо.

Leo705

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Андрей
Задача 3.41
« Ответ #23 : Май 29, 2014, 03:32:46 pm »
Моё решение smile
Вложения:
Leo705_3.41.dt

dron9205

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: dron
Задача 3.41
« Ответ #24 : Сентябрь 10, 2014, 11:40:43 am »
Всем добрый день, возник вопрос по задаче
 Все решения что я здесь увидел с помощью документа "Табель" пишут в РН одну запись в месяц. На начало или на конец месяца не суть.
 А что если нужно будет рассчитать ЗП за, например, половину месяца? В РН одна запись за весь месяц мы физически не сможем узнать сколько сотрудник отработал за половину месяца.

rusmosav

  • Проверенный
  • ***
  • Сообщений: 137
Re: Задача 3.41
« Ответ #25 : Май 26, 2015, 10:26:52 am »
Прощу оценить.
« Последнее редактирование: Июнь 06, 2015, 12:05:40 pm от rusmosav »

Sanek421

  • Пользователь
  • **
  • Сообщений: 29
Re: Задача 3.41
« Ответ #26 : Июнь 01, 2015, 04:53:27 pm »
Прощу оценить.

Вы не ту задачу выложили в данном разделе. Как я понял вы выложили 1.41!

Solitar

  • Пользователь
  • **
  • Сообщений: 14
  • ФИО: Den
Re: Задача 3.41
« Ответ #27 : Июнь 05, 2015, 03:36:44 pm »
Посмотрел почти все решения и нигде не увидел выполнение этого условия (мб в старых задачниках было по другому):

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


Именно рабочих, а не отработанных.

rusmosav

  • Проверенный
  • ***
  • Сообщений: 137
Re: Задача 3.41
« Ответ #28 : Июнь 06, 2015, 12:06:29 pm »
Прощу прощения за ошибку.
Прощу оценить.

Jones

  • Проверенный
  • ***
  • Сообщений: 199
Re: Задача 3.41
« Ответ #29 : Август 25, 2015, 03:13:20 pm »
Коллеги! У меня возник вот какой вопрос.
Правильно ли я понимаю, что в задачах с Табелем вытеснение видов расчета не имеет смысла?
Ведь Факт мы все равно берем не из ДанныеГрафика, а как обороты из оборотного регистра Табель.

Получается, что указывать Командировку, как вытесняющую для Оклада - не нужно?