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

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

  1. RyDmi

    RyDmi Гость

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

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

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

    jcnby Гость

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

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

    Вопросы?
     
  3. RyDmi

    RyDmi Гость

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

    jcnby Гость

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

    RyDmi Гость

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

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

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

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

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

    jcnby Гость

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

    NomadSoul Гость

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

    RyDmi Гость

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

    jcnby Гость

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

    NomadSoul Гость

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

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

    jcnby Гость

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

    NomadSoul Гость

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

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

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

    RyDmi Гость

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

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

    NomadSoul Гость

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

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

    jcnby Гость

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

    NomadSoul Гость

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

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

    jcnby Гость

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

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

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