|
ЗУП: Т-60 - другие начисления | ☑ | ||
---|---|---|---|---|
0
21stas
03.08.11
✎
06:47
|
Не получается разобраться, как рассчитывается сумма в графе "другие начисления" формы Т-60. Еще и из-за того, что ЗУП базовая - не могу в отладчике общие модули смотреть.
Подскажите, пожалуйста, как рассчитать эту сумму. ЗУП 2.5.38.1. |
|||
1
al8
03.08.11
✎
07:12
|
процедура из типовой зуп
Функция ПолучитьДругиеНачисления(ДокументСсылка, ПериодРегистрации, Сотрудник, ДатаДокумента = Неопределено) Экспорт // получим периоды для расчета базы "других" начислений ТаблицаПериодов = ПериодыРасчетаБазыВсехДругихНачислений(ДокументСсылка, ПериодРегистрации); // для параметра виртуальных таблиц построим массив периодов действия ПериодыДействия = Новый Массив; Для Каждого СтрокаПериодов Из ТаблицаПериодов Цикл ПериодыДействия.Добавить(НачалоМесяца(СтрокаПериодов.ДатаНачала)); КонецЦикла; НеВходятВДругиеНачисления = Новый Массив; НеВходятВДругиеНачисления.Добавить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.ВыходноеПособие); НеВходятВДругиеНачисления.Добавить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.КомпенсацияОтпускаКалендарныеДни); НеВходятВДругиеНачисления.Добавить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.КомпенсацияОтпускаКалендарныеДниБезУвольнения); НеВходятВДругиеНачисления.Добавить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.КомпенсацияОтпускаШестидневка); НеВходятВДругиеНачисления.Добавить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.КомпенсацияОтпускаШестидневкаБезУвольнения); НеВходятВДругиеНачисления.Добавить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.СохраняемыйЗаработокНаВремяТрудоустройства); НеВходятВДругиеНачисления.Добавить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.УдержаниеЗаНеотработанныйОтпускКалендарныеДни); НеВходятВДругиеНачисления.Добавить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.УдержаниеЗаНеотработанныйОтпускШестидневка); НеВходятВДругиеНачисления.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОтпускПоБеременностиИРодам); Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТаблицаПериодов", ТаблицаПериодов); Запрос.УстановитьПараметр("Сотрудник", Сотрудник); Запрос.УстановитьПараметр("ПериодыДействия", ПериодыДействия); Запрос.УстановитьПараметр("НеВходятВДругиеНачисления", НеВходятВДругиеНачисления); Запрос.УстановитьПараметр("ДатаДокумента", ?(ДатаДокумента = Неопределено, '00010101000000', ДатаДокумента)); Запрос.Текст = "ВЫБРАТЬ | ТаблицаПериодов.ДатаНачала КАК ДатаНачала, | ТаблицаПериодов.ДатаОкончания КАК ДатаОкончания, | ТаблицаПериодов.ГруппаНачислений |ПОМЕСТИТЬ ИсходныеДанные |ИЗ | &ТаблицаПериодов КАК ТаблицаПериодов | |ИНДЕКСИРОВАТЬ ПО | ДатаНачала, | ДатаОкончания |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВЫБОР | КОГДА ИсходныеДанные.ДатаНачала > ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ПериодДействияНачало | ТОГДА ИсходныеДанные.ДатаНачала | ИНАЧЕ ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ПериодДействияНачало | КОНЕЦ КАК ДатаНачала, | ВЫБОР | КОГДА ИсходныеДанные.ДатаОкончания < ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ПериодДействияКонец | ТОГДА ИсходныеДанные.ДатаОкончания | ИНАЧЕ ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ПериодДействияКонец | КОНЕЦ КАК ДатаОкончания, | ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ВидРасчета, | ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.Результат, | ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ГрафикРаботы КАК ГрафикРаботы, | ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ВидУчетаВремени КАК ВидУчетаВремени, | ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.Регистратор КАК Регистратор, | ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.НомерСтроки КАК НомерСтроки, | ИсходныеДанные.ГруппаНачислений |ПОМЕСТИТЬ ОсновныеНачисленияФактическийПериодДействия |ИЗ | ИсходныеДанные КАК ИсходныеДанные | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций.ФактическийПериодДействия( | Сотрудник = &Сотрудник | И ПериодДействия В (&ПериодыДействия)) КАК ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия | ПО (ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ПериодДействияНачало <= ИсходныеДанные.ДатаОкончания) | И (ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ПериодДействияКонец >= ИсходныеДанные.ДатаНачала) | И (ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ПериодРегистрации <= ИсходныеДанные.ДатаНачала) | И ((НЕ ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ВидРасчета В (&НеВходятВДругиеНачисления))) | И (ВЫБОР | КОГДА &ДатаДокумента = ДАТАВРЕМЯ(1,1,1,0,0,0) | ТОГДА ИСТИНА | ИНАЧЕ ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.Регистратор.Дата <= КОНЕЦПЕРИОДА(&ДатаДокумента, ДЕНЬ) | КОНЕЦ) |ГДЕ | (НЕ ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ВидРасчета.ЯвляетсяДоходомВНатуральнойФорме) | |ИНДЕКСИРОВАТЬ ПО | ГрафикРаботы, | ВидУчетаВремени, | Регистратор, | НомерСтроки, | ДатаНачала |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | СУММА(ГрафикиРаботыПоВидамВремени.ОсновноеЗначение) КАК ОсновноеЗначение, | ОсновныеНачисленияФактическийПериодДействия.ДатаНачала КАК ДатаНачала, | ОсновныеНачисленияФактическийПериодДействия.ДатаОкончания КАК ДатаОкончания, | ОсновныеНачисленияФактическийПериодДействия.Регистратор КАК Регистратор, | ОсновныеНачисленияФактическийПериодДействия.НомерСтроки КАК НомерСтроки |ПОМЕСТИТЬ ОтработанноеВремя |ИЗ | ОсновныеНачисленияФактическийПериодДействия КАК ОсновныеНачисленияФактическийПериодДействия | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботыПоВидамВремени | ПО ОсновныеНачисленияФактическийПериодДействия.ГрафикРаботы = ГрафикиРаботыПоВидамВремени.ГрафикРаботы | И (НАЧАЛОПЕРИОДА(ОсновныеНачисленияФактическийПериодДействия.ДатаНачала, МЕСЯЦ) = ГрафикиРаботыПоВидамВремени.Месяц) | И ОсновныеНачисленияФактическийПериодДействия.ВидУчетаВремени = ГрафикиРаботыПоВидамВремени.ВидУчетаВремени | И (ГрафикиРаботыПоВидамВремени.Дата МЕЖДУ ОсновныеНачисленияФактическийПериодДействия.ДатаНачала И ОсновныеНачисленияФактическийПериодДействия.ДатаОкончания) | |СГРУППИРОВАТЬ ПО | ОсновныеНачисленияФактическийПериодДействия.ДатаНачала, | ОсновныеНачисленияФактическийПериодДействия.ДатаОкончания, | ОсновныеНачисленияФактическийПериодДействия.Регистратор, | ОсновныеНачисленияФактическийПериодДействия.НомерСтроки | |ИНДЕКСИРОВАТЬ ПО | Регистратор, | НомерСтроки, | ДатаНачала, | ДатаОкончания |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | РезультатыНачислений.ГруппаНачислений, | ЕСТЬNULL(СУММА(РезультатыНачислений.Результат), 0) КАК РезультатСумма, | ЕСТЬNULL(СУММА(РезультатыНачислений.НеОблагаетсяНДФЛ), 0) КАК НеОблагаетсяНДФЛ |ИЗ | (ВЫБРАТЬ | СУММА(РезультатыОсновныхНачислений.Результат) КАК Результат, | РезультатыОсновныхНачислений.ГруппаНачислений КАК ГруппаНачислений, | СУММА(РезультатыОсновныхНачислений.НеОблагаетсяНДФЛ) КАК НеОблагаетсяНДФЛ | ИЗ | (ВЫБРАТЬ | ОсновныеНачисленияФактическийПериодДействия.ДатаНачала КАК ДатаНачала, | ОсновныеНачисленияФактическийПериодДействия.ДатаОкончания КАК ДатаОкончания, | СУММА(ВЫБОР | КОГДА ЕСТЬNULL(ДанныеГрафика.ОсновноеЗначениеФактическийПериодДействия, 0) = 0 | ТОГДА ОсновныеНачисленияФактическийПериодДействия.Результат | ИНАЧЕ ОсновныеНачисленияФактическийПериодДействия.Результат * (ОтработанноеВремя.ОсновноеЗначение / ДанныеГрафика.ОсновноеЗначениеФактическийПериодДействия) | КОНЕЦ) КАК Результат, | ОсновныеНачисленияФактическийПериодДействия.ГруппаНачислений КАК ГруппаНачислений, | ВЫБОР | КОГДА ОсновныеНачисленияФактическийПериодДействия.ВидРасчета.КодДоходаНДФЛ = ЗНАЧЕНИЕ(Справочник.ДоходыНДФЛ.ПустаяСсылка) | ТОГДА ВЫБОР | КОГДА ЕСТЬNULL(ДанныеГрафика.ОсновноеЗначениеФактическийПериодДействия, 0) = 0 | ТОГДА ОсновныеНачисленияФактическийПериодДействия.Результат | ИНАЧЕ ОсновныеНачисленияФактическийПериодДействия.Результат * (ОтработанноеВремя.ОсновноеЗначение / ДанныеГрафика.ОсновноеЗначениеФактическийПериодДействия) | КОНЕЦ | ИНАЧЕ 0 | КОНЕЦ КАК НеОблагаетсяНДФЛ | ИЗ | ОсновныеНачисленияФактическийПериодДействия КАК ОсновныеНачисленияФактическийПериодДействия | ЛЕВОЕ СОЕДИНЕНИЕ ОтработанноеВремя КАК ОтработанноеВремя | ПО ОсновныеНачисленияФактическийПериодДействия.Регистратор = ОтработанноеВремя.Регистратор | И ОсновныеНачисленияФактическийПериодДействия.НомерСтроки = ОтработанноеВремя.НомерСтроки | И ОсновныеНачисленияФактическийПериодДействия.ДатаНачала = ОтработанноеВремя.ДатаНачала | И ОсновныеНачисленияФактическийПериодДействия.ДатаОкончания = ОтработанноеВремя.ДатаОкончания | ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций.ДанныеГрафика( | Сотрудник = &Сотрудник | И ПериодДействия В (&ПериодыДействия)) КАК ДанныеГрафика | ПО ОсновныеНачисленияФактическийПериодДействия.Регистратор = ДанныеГрафика.Регистратор | И ОсновныеНачисленияФактическийПериодДействия.НомерСтроки = ДанныеГрафика.НомерСтроки | | СГРУППИРОВАТЬ ПО | ОсновныеНачисленияФактическийПериодДействия.ДатаОкончания, | ОсновныеНачисленияФактическийПериодДействия.ДатаНачала, | ОсновныеНачисленияФактическийПериодДействия.ГруппаНачислений, | ВЫБОР | КОГДА ОсновныеНачисленияФактическийПериодДействия.ВидРасчета.КодДоходаНДФЛ = ЗНАЧЕНИЕ(Справочник.ДоходыНДФЛ.ПустаяСсылка) | ТОГДА ВЫБОР | КОГДА ЕСТЬNULL(ДанныеГрафика.ОсновноеЗначениеФактическийПериодДействия, 0) = 0 | ТОГДА ОсновныеНачисленияФактическийПериодДействия.Результат | ИНАЧЕ ОсновныеНачисленияФактическийПериодДействия.Результат * (ОтработанноеВремя.ОсновноеЗначение / ДанныеГрафика.ОсновноеЗначениеФактическийПериодДействия) | КОНЕЦ | ИНАЧЕ 0 | КОНЕЦ) КАК РезультатыОсновныхНачислений | | СГРУППИРОВАТЬ ПО | РезультатыОсновныхНачислений.ГруппаНачислений | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | СУММА(ДополнительныеНачисленияРаботниковОрганизаций.Результат), | ИсходныеДанные.ГруппаНачислений, | ВЫБОР | КОГДА ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета.КодДоходаНДФЛ = ЗНАЧЕНИЕ(Справочник.ДоходыНДФЛ.ПустаяСсылка) | ТОГДА ДополнительныеНачисленияРаботниковОрганизаций.Результат | ИНАЧЕ 0 | КОНЕЦ | ИЗ | ИсходныеДанные КАК ИсходныеДанные | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизаций | ПО (ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ ИсходныеДанные.ДатаНачала И ИсходныеДанные.ДатаОкончания) | И (ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник = &Сотрудник) | И ((НЕ ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета В (&НеВходятВДругиеНачисления))) | И ((НЕ ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета.ЯвляетсяДоходомВНатуральнойФорме)) | И (ВЫБОР | КОГДА &ДатаДокумента = ДАТАВРЕМЯ(1,1,1,0,0,0) | ТОГДА ИСТИНА | ИНАЧЕ ДополнительныеНачисленияРаботниковОрганизаций.Регистратор.Дата <= КОНЕЦПЕРИОДА(&ДатаДокумента, ДЕНЬ) | КОНЕЦ) | | СГРУППИРОВАТЬ ПО | ИсходныеДанные.ГруппаНачислений, | ВЫБОР | КОГДА ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета.КодДоходаНДФЛ = ЗНАЧЕНИЕ(Справочник.ДоходыНДФЛ.ПустаяСсылка) | ТОГДА ДополнительныеНачисленияРаботниковОрганизаций.Результат | ИНАЧЕ 0 | КОНЕЦ) КАК РезультатыНачислений | |СГРУППИРОВАТЬ ПО | РезультатыНачислений.ГруппаНачислений"; ТаблицаДругихНачислений = Запрос.Выполнить().Выгрузить(); ДругиеНачисления = Новый Структура("ДругиеНачисленияЗаТекущийМесяц, ДругиеНачисленияЗаБудущиеМесяцы, НеОблагаетсяНДФЛ, ПериодНачальногоСальдо", 0, 0, 0); Для Каждого СтрокаДругихНачислений Из ТаблицаДругихНачислений Цикл ДругиеНачисления[СтрокаДругихНачислений.ГруппаНачислений] = СтрокаДругихНачислений.РезультатСумма; ДругиеНачисления["НеОблагаетсяНДФЛ"] = ДругиеНачисления["НеОблагаетсяНДФЛ"] + СтрокаДругихНачислений.НеОблагаетсяНДФЛ; КонецЦикла; // таблица периодов упорядочена, поэтому в строке 0 точно будет начало самого раннего периода Если ТаблицаПериодов.Количество() > 0 Тогда ДругиеНачисления.Вставить("ПериодНачальногоСальдо", ТаблицаПериодов[0].ДатаНачала); КонецЕсли; Возврат ДругиеНачисления; КонецФункции // ПолучитьДругиеНачисления |
|||
2
21stas
03.08.11
✎
13:28
|
Спасибо за текст модуля, только взглядом окинуть его мне не хватает понимания - только предположения выстраиваются. По этим предположениям у меня результаты не сходятся.
Если была бы проф - я могу бы в отладчике по шагам посмотреть - запрос по шагам не разберёшь, но всё же куда легче. А посему хотел попросить - может, кто понял, как считается. У меня вроде ситуация простая - отпуск - две недели посреди месяца, оклад+р.к.+премия - а на цифру из отчёта выйти никак не могу, сколько Excel не мучил. |
|||
3
NDN
03.08.11
✎
13:33
|
||||
4
NDN
03.08.11
✎
13:33
|
// Функция предназначена для получения значений заполнения граф "другие начисления"
// унифицированных форм "Т-60" и "Т-61". Значения "других начислений" определяются // в текущем или в будущем месяце как сумма всех начислений с момента окончания // последнего отпуска, если он закончился в текущем (будущем) месяце или с начала месяца // (текущего или будущего), если отпуска в этом месяце не было. |
|||
5
21stas
03.08.11
✎
13:47
|
Да. Я тоже эту тему нашёл. Пробовал по этой описухе считать.
Взял долю всех начислений, приходящихся на период до отпуска. Например, отпуск начинается с 17 июля. В июле 31 день. Взял все начисления, разделил на 31, умножил на 17. Не получается. Пробовал то же самое с рабочими днями. Скажем, 11 явок в табеле до отпуска, 2 - после. Взял сумму всех начислений/(11+2)*11 - не получается. Как считать - не пойму. |
|||
6
21stas
03.08.11
✎
14:14
|
Описался. Отпуск начинается 18 июля. Поэтому я беру 17 календарных дней.
|
|||
7
NDN
03.08.11
✎
14:17
|
Открой расчетный листок сотрудника за прошлый месяц
|
|||
8
21stas
03.08.11
✎
14:20
|
Открыл. Похожей суммы не вижу.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |