|
v7: Расчет праздничных | ☑ | ||
---|---|---|---|---|
0
Standart
11.04.16
✎
11:15
|
Дня доброго, сообщество любителей 1С.
У меня образовалась проблема в виде неправильного расчета праздничных дней диспетчерам. Огни работают по индивидуальному графику. В журнале ЗП показывает праздничный день, стоит 1, но не показывает часы. У каждого диспетчера разные часы. http://www.picshare.ru/view/7274013/ ИндГрафик=ГрафикДокументом(ДатаОкончания, Объект); Если ИндГрафик=0 тогда Ставка = Объект.Ставка.Получить(ДатаОкончания); Иначе Ставка =1; КонецЕсли; СпВремен = СоздатьОбъект("СписокЗначений"); РабочееВремяЗаПериод(Объект, ДатаНачала, ДатаОкончания, 1, СпВремен); ВсегоДней =СпВремен.ПолучитьЗначение(1); // здесь это дней по графику работы сотрудника в праздничные дни ВсегоЧасов =СпВремен.ПолучитьЗначение(2); ГрафикРаботы = Объект.ГрафикРаботы.Получить(ДатаОкончания); Оклад = ОкладПоРазряду(Объект,ДатаОкончания)*Ставка; //ДопОклад = Объект.ДопОклад.Получить(ДатаОкончания)/100; Если Оклад <> 0 Тогда //ВесьОклад = Округление( Оклад*(1+ДопОклад), Константа.ОкруглениеРасчетовПоУмолчанию); Если (ГрафикРаботы.Выбран()=0) или (ГрафикРаботы.МесБалансРабВр.Получить(ДатаОкончания ) <=0) тогда Календ = ВзятьКалендарь(Объект,ДатаОкончания); ЗаОдинЧас = Оклад /Календ.Часов(НачалоПериодаПоДате(ДатаНачала),КонецПериодаПоДате(ДатаНачала)); иначе ЗаОдинЧас = Оклад / ГрафикРаботы.МесБалансРабВр.Получить(ДатаОкончания ); КонецЕсли; Иначе Тариф = ТарифПоРазряду(Объект, ДатаОкончания)*Ставка; //ВесьТариф = Округление( Тариф*(1+ДопОклад), Константа.ОкруглениеРасчетовПоУмолчанию); КонецЕсли; // /\/\ 21.02.05,Лосич С.В. /\/\ Если ВсегоДней>0 Тогда // \/\/ 03.12.03 \/\/ //// человек по графику работает в праздник - как правило, это почасовики ТипаТабель = СоздатьОбъект("СписокЗначений"); ТипаТабель = глОтработанноеВремяЗаПериод(Объект,ДатаНачала,ДатаОкончания); ВсегоЧасов = ТипаТабель.ПолучитьЗначение(4); ЧасовВечером = 0; ЧасовНочью = 0; Если Объект.ГрафикРаботы.Получить(ДатаНачала).Выбран()>0 Тогда РабочееВремяЗаПериод(Объект, ДатаНачала, ДатаОкончания, 2, СпВремен); ЧасовВечером = СпВремен.ПолучитьЗначение(2); РабочееВремяЗаПериод(Объект, ДатаНачала, ДатаОкончания, 3, СпВремен); ЧасовНочью = СпВремен.ПолучитьЗначение(2); КонецЕсли; //Результат = Округление(ЗаОдинЧас*(ЧасовНочью*Константа.КоэфНочныхЧасов+ВсегоЧасов)*Константа.КоэфПраздничных, Константа.ОкруглениеРасчетовПоУмолчанию); // не учитываются ночные и вечерние коэффициенты, Результат = Округление(ЗаОдинЧас*ВсегоЧасов*(1+Константа.КоэфПраздничных), Константа.ОкруглениеРасчетовПоУмолчанию, 1); Часы = ?(Сторно=1, -ВсегоЧасов,ВсегоЧасов); Иначе // человек по графику не работает в праздник Дней = (ДатаОкончания-ДатаНачала)+1; //Результат = Округление( (ЗаОдинЧас*Константа.ЧасовВРабочемДне,ЗаОдинДень)*(1+Константа.КоэфПраздничных)*Дней,Константа.ОкруглениеРасчетовПоУмолчанию,1); Результат = Округление(ЗаОдинЧас*Константа.КоэфПраздничных*Константа.ОкруглениеРасчетовПоУмолчанию,1); //ВсегоЧасов =константа.ЧасовВРабочемДне+Дней; Часы = ?(Сторно=1, -ВсегоЧасов, ВсегоЧасов); Дни = ?(Сторно=1, -Дней, Дней); КонецЕсли; КонецПроцедуры |
|||
1
Standart
11.04.16
✎
11:16
|
как я не крутил, что не мудрил, чтоб ставился день- сделал, а часы никак не получается.
|
|||
2
NikVars
11.04.16
✎
11:18
|
Как можно расчитать праздник?! Телепатить предстоящие решений правительства?
В Зик для праздничных дней отдельный календарь Праздники. |
|||
3
шаэс
11.04.16
✎
11:20
|
(1) а документ показать?
|
|||
4
NikVars
11.04.16
✎
11:22
|
(1) А еще есть документ Приказ о работе в праздничные и выходные дни. Он используется?
|
|||
5
Standart
11.04.16
✎
11:25
|
шаэс
Конфигурация писаная кривыми руками 100 раз. принцип такой, ели у диспетчера стоит в табеле за 8 число Я (явка) часы 9 (основные) и 5 (ночные), должно рассчитывать за 9 часов по формуле: Оклад / на месячный баланс * на количества часов в праздник. Документом не вноситься. Для диспетчеров свой календарь сменной работы, для всех остальных- календарь Служащие. |
|||
6
шаэс
11.04.16
✎
11:44
|
(5) у меня мозг сломался от Вашего кода... отладчик не помогает?
|
|||
7
NikVars
11.04.16
✎
11:48
|
(5) Табель можно править документом? Как отражено количество отработанных часов в праздник?
|
|||
8
Standart
11.04.16
✎
11:56
|
NikVars
В табеле рабочего времени 08.03 Я (явка), 9 основных, 5 ночных часов. в табеле показывает, что 9 часов праздничных, все верно, но не заносит в журнал ЗП |
|||
9
NikVars
11.04.16
✎
12:29
|
(8) А расчет в расчете есть такой вариант расчета для твоего случая? Или отдельный расчет для расчета праздничных дней?
Смотри типовые документы по ЗиК. Например, модуль проведения Документ.ПриказНаОплатуПоСреднему. В общем, должен быть документ, который заполняет данными журнал расчета. Сама суть расчета должна быть прописана в нужном Виде расчета или в новом виде расчета. Ну это все в терминах ЗиК. Какая там у тебя конфа-компонента - держи в секрете. |
|||
10
Standart
11.04.16
✎
15:04
|
в табеле все аккуратно, выводит 9 часов праздничных, проверял отладчиком. в журнал ЗП они не попадают, пишет: Неверно построен табель по сотруднику. Хотя, всё правильно заполнен. в модуле вида расчета: Оплата праздничных, добился вывода этого дня, ставит 1 (см. картинку в первом сообщении), но не могу вывести часы(строчкой ниже, по 1).
|
|||
11
NikVars
11.04.16
✎
16:53
|
(10) "в журнал ЗП они не попадают, пишет: Неверно построен табель по сотруднику" может в этом корень проблем?
И кто выдает это интересное сообщение "Неверно построен табель по сотруднику"? |
|||
12
Standart
12.04.16
✎
10:17
|
(12) Выдает Глобальный модуль
|
|||
13
NikVars
12.04.16
✎
10:49
|
(12) Я искал в ЗиК по тем словам. Сложно сказать, как тебе помочь и не понятно, что ты тут делаешь.
|
|||
14
Standart
12.04.16
✎
11:34
|
NikVars
подключил высшие умы, они сами в шоке, как у нас все работает. Логики практически нет, но работает, правда, не всегда правильно. Коды раздуты так, что голова кругом от написанного. Этот Вид расчета я укоротил Процедура ПровестиРасчет() ИндГрафик=ГрафикДокументом(ДатаОкончания, Объект); Если ИндГрафик=0 тогда Ставка = Объект.Ставка.Получить(ДатаОкончания); Иначе Ставка =1; КонецЕсли; СпВремен = СоздатьОбъект("СписокЗначений"); РабочееВремяЗаПериод(Объект, ДатаНачала, ДатаОкончания, 1, СпВремен); //заносит в журнал ЗП праздничный день ВсегоДней =СпВремен.ПолучитьЗначение(1); ВсегоЧасов =СпВремен.ПолучитьЗначение(2); ГрафикРаботы = Объект.ГрафикРаботы.Получить(ДатаОкончания); Оклад = ОкладПоРазряду(Объект,ДатаОкончания)*Ставка; Если Оклад <> 0 Тогда Если (ГрафикРаботы.Выбран()=0) или (ГрафикРаботы.МесБалансРабВр.Получить(ДатаОкончания ) <=0) тогда Календ = ВзятьКалендарь(Объект,ДатаОкончания); ЗаОдинЧас = Оклад /Календ.Часов(НачалоПериодаПоДате(ДатаНачала),КонецПериодаПоДате(ДатаНачала)); иначе ЗаОдинЧас = Оклад / ГрафикРаботы.МесБалансРабВр.Получить(ДатаОкончания ); КонецЕсли; Иначе Тариф = ТарифПоРазряду(Объект, ДатаОкончания)*Ставка; КонецЕсли; Если ВсегоДней>0 Тогда Иначе Дней = (ДатаОкончания-ДатаНачала)+1; //Результат = Округление( (ЗаОдинЧас*Константа.ЧасовВРабочемДне)*(1+Константа.КоэфПраздничных)*Дней,Константа.ОкруглениеРасчетовПоУмолчанию,1); //ВсегоЧасов =константа.ЧасовВРабочемДне+Дней; Часы = ?(Сторно=1, -ВсегоЧасов, ВсегоЧасов); Дни = ?(Сторно=1, -Дней, Дней); Результат = Округление(ЗаОдинЧас*Константа.ОкруглениеРасчетовПоУмолчанию,1); КонецЕсли; КонецПроцедуры там, где РабочееВремяЗаПериод(Объект, ДатаНачала, ДатаОкончания, 1, СпВремен); //заносит в журнал ЗП праздничный день ВсегоДней =СпВремен.ПолучитьЗначение(1); ВсегоЧасов =СпВремен.ПолучитьЗначение(2); всего дней- берет значение (ставит 1, на дату 08.03) а вот ВсегоЧасов - не берет |
|||
15
NikVars
12.04.16
✎
12:03
|
Посмотри СпВремен что там в значении 2.
Проще это сделать через Сообщить. Может быть пустячок - ошибка с типами. Обнять Числом() и все заработает... |
|||
16
Standart
12.04.16
✎
15:28
|
посмотрел, значение равно 0. мыслей у меня нет. В табеле стоит 9 часов, внизу табеля написано, что праздничных по сотруднику 9 часов.
|
|||
17
NikVars
12.04.16
✎
15:36
|
(16) Смотри как заполняется СпВремен. Откуда и как в него попадают значения.
|
|||
18
NikVars
12.04.16
✎
15:37
|
(16) Дай поиск по всем модулям в конфигурации по слову "СпВремен".
|
|||
19
Standart
12.04.16
✎
16:00
|
спасибо. буду лопатить ГлМодуль. 84 найдено, и практически все в Гл. 3- в ВР Оплата праздничных и штук 5 в отчетах.
|
|||
20
NikVars
12.04.16
✎
16:12
|
(19) После каждого обращения пиши
Сообщить("1========"+ ...тут чего-то полезное) И так далее... В общем увидишь с какого места тебе изучать. П.С. играйся на копии! |
|||
21
Standart
12.04.16
✎
16:48
|
NikVars- конечно на копии. По другому никак, НИЗЯ!!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |