Неправильно считается "Расчёт среднего заработка" (1С:ЗиК V7

Тема в разделе "1C и всё что с ней связано", создана пользователем RyDmi, 10 апр 2008.

  1. RyDmi

    RyDmi Гость

    Проблема следущего характера:
    При расчёте среднего заработка (Документы -> Прочие отклонения -> Оплата по среднему заработку) выводит неверную сумму, т.е. при подсчёте плюсуются счета, которых в сумме быть не должно!
    А именно, сейчас там следущие статьи:

    1) Оплата по окладу
    2) Оплата за праздничные и выходные дни
    3) Доплата за праздничные
    4) Надбавка за выслугу лет
    5) Доплата за замещение
    6) Ежемесечная премия
    7) Отпуск очередной
    8) Оплата б/л
    9) Оплата б/л за счёт работодателя

    Так вот, как мне сказала бухгалтер, из этого списка в сумму не должны входить счета 3, 7, 8, 9 из приведённого списка.
    Так вот вопрос в том, как исключить их, чтобы в сумму они не входили?
    Заранее спасибо!
     
  2. jcnby

    jcnby Гость

    Во первых! Говарим правильно - в ЗиК счетов НЕТ! НЕБЫЛО и НЕБУДЕТ!!!! Только при выгрузке, и то назначаются циферками в модуле)).
    В ЗиК есть ВидыРачетов.
    В данном случае - твоя проблема решается следующим способом:
    1. Заходишь в конфигуратор.
    2. Смотришь в ГруппеРасчетов ( там и такое есть!!!) - и ищешь ОплатаПоСреднему
    3. Смотришь какие расчеты там есть - и лишние исключаешь из группы, а недостающие добовляешь.

    Зы1: В каждой конфе эта группа обозначается по разному, а так же может вообще отсутствовать ( убивайте тех кто делал конфу).
    Зы2: Так же можно войти в данный расчет ( например который не нужен ) и из него удалить группу расчетов ( чтобы он туда не входил).
    Зы3: Посмотреть индификатор группы расчетов и алгаритм можно в документе - Оплата по зреднему.

    Вопросы?
     
  3. RyDmi

    RyDmi Гость

    Вопросы? Вопросы есть :)
    Указанную проблему я решал не в конфигураторе, а исключением ненужных счетов из списка в "Справочники -> Расчёты зарплаты -> Виды расчётов -> Оплата по среднему заработку", НО
    как сделать так, чтобы "надбавка за выслугу лет" считалась по отработанным дням? Т.е. у меня в получившемся "Расчёте среднего заработка" человек за 1 рабочий день февраля получил 3300, чего быть не должно! Т.е. там эта надбавка составила 1800, что неверно. Так вот, как исправить?
     
  4. jcnby

    jcnby Гость

    Ну опять же.... Открываешь конфигуратор, находишь данный вид расчета и ищешь группу "УчитоватьДни", "РаспределятьПропорционально" и т.д. либо что-то похожее, т.е. для корректной работы, в глобальнике должна быть функция которая определяет отработанные дни по сотруднику. И должна быть группа расчетов, которая показывала бы программе какие расчеты нужно считать по дням. В Справочнике ты можешь разве что задать базу для расчета.....
    ЗЫ: исперавить можно в ручную)))
    А вообще не совсем понятно что к чему- 3300 непрально...1800 не прально....я по вашим цифрам вообще не ориентируюсь)))
     
  5. RyDmi

    RyDmi Гость

    Поговорил с бухгалтерами.. походу мы говорим на совсем разных языках((
    Вобщем с "Оплатой по среднему" вопрос отпал (они там эту набавку исключили вовсе и будут как-то по-другому считать), а вместо этого надо сделать вот что:
    сейчас "надбавка за выслугу лет" при начислении зарплаты выдаётся процентом от оклада рабочего и не зависит от количества отработанных дней (так и должно быть), но когда человек увольняется, скажем, 15 числа, то выслуга должна пересчитываться в зависимости от этих отработанных дней, т.е. должна быть начислена только за 15 дней, отработанных уволившимся сотрудником.

    Я решил реализовать сабж путём изменения модуля расчёта "Конфигурация -> Виды Расчётов -> НадбавкаЗаВыслугуЛет". Так вот, там есть переменная "СуммаПериода" в ней нах-ся рассчитанная сумма Надбавки.

    -------
    ...
    ТабДанныхОСреднем = глЗаполнитьДанныеСреднегоЗаработка(Объект,ДобавитьМесяц(ДатаНачалаПроцента, 1),1,"1");
    ТабДанныхОСреднем.ВыбратьСтроки();
    ТабДанныхОСреднем.ПолучитьСтроку();

    СуммаПериода = СуммаПериода + ((Оклад * ТабДанныхОСреднем.ДнейОтработано * Процент / 100)/ДнейВсего);
    ------

    "глЗаполнитьДанныеСреднегоЗаработка" и "ТабДанныхОСреднем" я выдернул из документа "ПриказНаОплатуПоСреднему" для того, чтобы можно было узнать, сколько человек отработал в месяце, в котором осуществляется расчёт з/п.
    Приведённая формула расчёта "СуммаПериода" как раз рассчитывает "Надбавку" пропорционально количеству отработанных дней. Но её нужно применить только к тому месяцу, в котором человек уволился.
    Как определить уволился ли человек именно в этом месяце? И вообще в правильную ли сторону я копаю? Может как-то иначе можно решить?
     
  6. jcnby

    jcnby Гость

    Ну уволился он либо нет в основном определяется приказом об увольнении либо если есть в справочнике сотрудников ( например у меня к справочнику привязанны кадровые данные) - следовательно - есть параметр ( уволен). А так же есть и группа ( у мну 8 групп ( по расчетчикам) + группа "уволенные" ). Вариантов масса- но правильнее всего будет реализовать через приказ об увольнении ( если таковой есть в конфе и кадровики нормально работают ( т.е. своевременно вводят данные приказы).
    Далее- вставляешь проверку- если уволен и в текущем месяце ( сравниваем дату увольнения с текущей датой) тогда перекидовай на данный расчет - если нет - тогда тупо по % вне зависимости по дням.
    А еще можешь позванить на контору которая обслуживала конфу и уточнить у них все вопросы и в конце конков посоветоваться с человеком - который разрабатывал конфу- он наверняка может подсказать самый лутший вариант для ТВОЕЙ ( написанной им) конфигурации.
     
  7. NomadSoul

    NomadSoul Гость

    Российская конфа у Вас, однако. И расчет надбавки тоже российский. :D
    Я бы для расчета надбавки за выслугу лет проанализировал бы дату увольнения сотрудника, и если месяц и год этой даты совпадает месяцем и годом текущего расчетным периода, то подсчитывал бы сумму отработанных дней/часов по записям ЖурналаЗарплата, по видам расчетов которые входят в группу ОсновныеНачисления. ИМХО, это проще.
     
  8. RyDmi

    RyDmi Гость

    А как можно реализовать сабж? Как определить количество отработанных часов?
     
  9. jcnby

    jcnby Гость

    используя календарь.....собственно он для этого и предноздначен....
     
  10. NomadSoul

    NomadSoul Гость

    //IMHO, можно и не использовать календарь, так как доплата за выслугу считается после подсчета
    //оплаты за отработанное время. Делюсь этим мега-алгоритмом. :(

    ДнейОтработано = 0;
    ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");
    ЖЗ.ВыбратьЗаписиПоОбъекту(Объект,ЖЗ.НачалоПериодаПоДате(ДатаНачала),ЖЗ.КонецПери
    одаПоДате(ДатаНачала));
    Пока ЖЗ.ПолучитьЗапись()=1 Цикл
    Если ЖЗ.ВидРасч.ВходитВГруппу(ГруппаРасчетов.ОсновныеНачисления)=1 Тогда
    ДнейОтработано = ДнейОтработано + ЖЗ.Дни;
    КонецЕсли;
    КонецЦикла;
     
  11. jcnby

    jcnby Гость

    :rolleyes: насколько я помню тема шла о том чтобы определить полный месяц или не полный...а в конфе уже есть расчет этих самых дней... Зачем еще раз изобретать велосипед?
    Еще 1 ИМХО: Календарь для данного сотрудника 1 , а сколько записей в ЖР-ке? В данном случае можно судить о КПД мега-алгаритма (указанного выше). Если у вас от 10 пользователей в программе и свыше 3-5 тыс. человек в штате- лутше не мучайте машинку и идите через календарь, и через функцию которая уже есть в конфе ( а она есть), а если у вас норм машинка и не пугают трудности, либо же вам принципиально нравиться ЖР - то идите через вышеописакнный алгаритм))
     
  12. NomadSoul

    NomadSoul Гость

    RyDmi спросил как реализовать "подсчет суммы отработанных дней/часов по записям ЖурналаЗарплата, по видам расчетов которые входят в группу ОсновныеНачисления". Я и ответил. :rolleyes:

    Приведенный мной алгоритм должен выполняться если по дате увольнения было определено, что месяц, отработанный сотрудником, не полный.

    Можно делать и через календарь, но один введенный больничный или невыход приведет к тому что сумма доплаты будет подсчитана неверно. Будут предложения, что в этом случае можно смотреть документ ТабельОтработанногоВремени. Можно и так. Но быстродействие, вероятно, в этом случае будет тем же, что и у приведенного алгоритма, если не хуже.
     
  13. RyDmi

    RyDmi Гость

    Уааа! Круть :rolleyes: Всем спасибо за ответы! NomadSoul спасибо за код.
    Проблему решил взятием старой версии конфы, где этот модуль был изменён человеком, который собственно и адаптировал "Зарплату" по моё предприятие. Сделано там как раз через календарь, кстати.

    Код (Text):
    ...
    ГрафикРаботы    = Объект.ГрафикРаботы.Получить(ДатаОкончания);
    Календарь      = ГрафикРаботы.ОсновныеЧасы;
    Оклад = глПолучитьСуммуИзРеквизита(Объект.Оклад.Получить(ДатаНачала),ДатаНачала)
    ДнейВсего = Календарь.Дней(НачалоПериодаПоДате(ДатаНачала),КонецПериодаПоДате(ДатаОкончания));
    Дней = Календарь.Дней(ДатаНачалаПроцента,ДатаОкончанияПроцента);  
    СуммаПериода = СуммаПериода + ((Оклад * Дней * Процент / 100)/ДнейВсего);                   
    ...
     
  14. NomadSoul

    NomadSoul Гость

    Rydmi и Jcnby, а что Вы думаете на счет больничного приходящегося на период надбавки за выслугу лет? Ведь в календаре хранится плановый график, а не фактически отработанное время...

    В вашем случае ошибка возникнет только если человек заболел и в том же месяце уволился. Принесем возможность ошибки в жертву быстродействию?
     
  15. jcnby

    jcnby Гость

    Нивкое случае))) ошибиться - значит быть съеденым бухами заживо).
    Зы: Календарь щитает количество дней и часов по ним в месяце- это основная его функция- календарь не определяет работали ли в этот день либо нет. Поэтому собственно табель и придуман (ну я так пологаю). И все равно, календари быстрее)))). ( у меня штат более 10 000 людей) - очень заметна разница выполнения перебора ЖР-ки и Календарей.
    Кста: нуна еще же с бухоми посоветоваться- как етот больничный должен влиять) а далее проблем не вижу - почему бы его не ВЫТЕСНИТЬ либо Заместить им?
     
  16. NomadSoul

    NomadSoul Гость

    Уважаемый jcnby, у нас с Вами (в Беларуси то есть), доплата за выслугу лет считается обычно просто процентом от начисленной повременной оплаты. Так что у нас по-любому будет перебор ЖР. :(

    А вот в России покрутить с алгоритмом можно. Соглашусь, что там эффективнее было бы сделать вытеснение больничным надбавки за выслугу лет. Но там засада в том, что если человек не увольняется, то надбавка идет в полном размере без разницы сколько человек отработал. Так что вытеснение там делать низзя и его в российской конфе нет.
     
  17. jcnby

    jcnby Гость

    У нас с вами в Белоруси ( считается в зависимости от того какое это предприятие ) просто процентом))) поэтому у нас и неоходимо считать как необходимо заказчику))))) уж вот такая у нас расстановка)))

    Насчет России не в курсе)
     
Загрузка...
Похожие Темы - Неправильно считается Расчёт
  1. Мыш
    Ответов:
    0
    Просмотров:
    260
  2. anna
    Ответов:
    27
    Просмотров:
    1.409
  3. olegO
    Ответов:
    1
    Просмотров:
    1.294
  4. chiiif2
    Ответов:
    1
    Просмотров:
    1.062
  5. Мыш
    Ответов:
    2
    Просмотров:
    1.236

Поделиться этой страницей