|
ЗуП отчет по расчету резервов отпусков. | ☑ | ||
---|---|---|---|---|
0
ИУБиПовиц
12.02.14
✎
10:20
|
Добрый день. Делаю отчет показывающий примерную сумму резервов на дату, и почему то данные отличаются чем если руками считать.
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РаботникиОрганизацийСрезПоследних.Сотрудник |ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Дата, ) КАК РаботникиОрганизацийСрезПоследних | |УПОРЯДОЧИТЬ ПО | РаботникиОрганизацийСрезПоследних.Сотрудник.Наименование"; Запрос.УстановитьПараметр("Дата",КонецДня(ДатаОтчета)); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выгрузить(); МассивСотров = ВыборкаДетальныеЗаписи.ВыгрузитьКолонку("Сотрудник"); Остаток = ОстаткиОтпусков.ОстатокОтпускаСпискаСотрудниковНаДату( МассивСотров,ДатаОтчета); Остаток.Колонки.Добавить("СреднедневнойЗаработок"); НачатьТранзакцию(); Док = Документы.НачислениеОтпускаРаботникамОрганизаций.СоздатьДокумент(); Док.Дата = КонецГода(ТекущаяДата()); Док.Комментарий = "для расчета резерва"; Док.Организация = Справочники.Организации.НайтиПоКоду("000000043"); Док.Записать(РежимЗаписиДокумента.Запись); для каждого стр из остаток цикл Стр.СреднедневнойЗаработок = 0; Если Стр.ОстатокНаДату <= 0 тогда Продолжить; КонецЕсли; Док.Сотрудник = Стр.Сотрудник; Состояние("Обработка сотрудника " + Док.Сотрудник); Док.ДатаНачалаСобытия = ДатаОтчета; Док.ОсновнойОтпуск=Истина; Док.ПорядокРасчетаОсновногоОтпуска=Перечисления.ПорядокРасчетаОтпуска.ПоКалендарнымДням; Док.ДатаНачалаОсновногоОтпуска = ДатаОтчета; Док.КоличествоДнейОсновногоОтпуска = Стр.ОстатокНаДату; Док.ДатаОкончанияОсновногоОтпуска = ДатаОтчета + Стр.ОстатокНаДату; ЗаполнениеДокументовЗК.ЗаполнитьДатыОтпуска(ДатаОтчета, Док.ДатаОкончанияОсновногоОтпуска,1,,,ЛОЖЬ ); ЗаполнениеДокументовЗК.ЗаполнитьДатуВыплатыОтпускных(Док, Док.ДатаНачалаОсновногоОтпуска); ЗаполнитьЗначенияСвойств(Док, ОстаткиОтпусков.РабочийГодПериодаОтпуска( Док.Сотрудник, Док.ДатаНачалаОсновногоОтпуска, Док.ДатаОкончанияОсновногоОтпуска, Док.Ссылка, Док.ПорядокРасчетаОсновногоОтпуска, Не Док.ОсновнойОтпуск, Док.ВидРасчетаДополнительногоОтпуска, Док.ДатаНачалаДополнительногоОтпуска, Док.ДатаОкончанияДополнительногоОтпуска)); Док.ПериодРасчетаСреднегоЗаработкаНачало = Док.РабочийГодС; Док.ПериодРасчетаСреднегоЗаработкаОкончание= Док.РабочийГодПо; Док.ПериодРегистрации = НачалоМесяца(ДатаОтчета); Док.Записать(РежимЗаписиДокумента.Запись); мРассчитываемыеТаблицы = Новый Структура("Начисления,РасчетСреднего"); мРассчитываемыеТаблицы.Начисления = Истина; мРассчитываемыеТаблицы.РасчетСреднего = Истина; Док.Рассчитать(мРассчитываемыеТаблицы); мСведенияОВидахРасчета = Новый Соответствие; ВариантРасчетаДокумента = Док.ОсновнойВариантРасчетаДокумента(); ВидРасчета = ВариантРасчетаДокумента.ВидРасчета; Если ЗначениеЗаполнено(ВидРасчета) Тогда СведениеОВидеРасчета = ПроведениеРасчетов.ПолучитьСведенияОВидеРасчета(мСведенияОВидахРасчета, ВидРасчета); МесяцевРасчетногоПериода = 0; ОбщегоНазначенияЗК.РазобратьРазностьДат(НачалоМесяца(Док.ПериодРасчетаСреднегоЗаработкаОкончание), НачалоМесяца(Док.ПериодРасчетаСреднегоЗаработкаНачало), , МесяцевРасчетногоПериода); Если ЗначениеЗаполнено(МесяцевРасчетногоПериода) Тогда МесяцевРасчетногоПериода = МесяцевРасчетногоПериода + 1; Иначе МесяцевРасчетногоПериода = ?(СведениеОВидеРасчета.ПорядокОпределенияРасчетногоПериодаСреднегоЗаработка = Перечисления.ПорядокОпределенияРасчетногоПериодаСреднегоЗаработка.ПоКолдоговору,СведениеОВидеРасчета.ПериодРасчетаСреднегоЗаработка,НачислениеОтпускаРаботникамОрганизацийПереопределяемый.КоличествоМесяцевРасчетаПоЗакону(Док)); КонецЕсли; СреднедневнойЗаработок = Формат(НачислениеОтпускаРаботникамОрганизацийПереопределяемый.РасчетСреднегоЗаработка(ДОк, СведениеОВидеРасчета.СпособРасчета, МесяцевРасчетногоПериода, Док.ПериодРасчетаСреднегоЗаработкаНачало, Док.ПериодРасчетаСреднегоЗаработкаОкончание), "ЧЦ=12; ЧДЦ=2; ЧН="); КонецЕсли; Стр.СреднедневнойЗаработок = Число(СреднедневнойЗаработок); Если Стр.СреднедневнойЗаработок = Неопределено тогда Стр.СреднедневнойЗаработок = 0; КонецЕсли; //прервать; КонецЦикла; ОтменитьТранзакцию(); |
|||
1
ivanoa
12.02.14
✎
10:46
|
Сервер 1С 8.3.4.408
Большая часть баз на 1С Бухгалтерия 3.0 в тонком клиенте. |
|||
2
ivanoa
12.02.14
✎
10:47
|
извините- пост 1 не туда.
|
|||
3
ИУБиПовиц
12.02.14
✎
10:52
|
хм. Добавил
//Док.ПериодРасчетаСреднегоЗаработкаНачало = Док.РабочийГодС; //Док.ПериодРасчетаСреднегоЗаработкаОкончание= Док.РабочийГодПо; Если ЗначениеЗаполнено(Док.ДатаНачалаСобытия) Тогда мСведенияОВидахРасчета = Новый Соответствие; ВидРасчета = Док.ОсновнойВариантРасчетаДокумента().ВидРасчета; Если ЗначениеЗаполнено(ВидРасчета) Тогда СведениеОВидеРасчета = ПроведениеРасчетов.ПолучитьСведенияОВидеРасчета(мСведенияОВидахРасчета, ВидРасчета); МесяцевРасчетногоПериода = ?(СведениеОВидеРасчета.ПорядокОпределенияРасчетногоПериодаСреднегоЗаработка = Перечисления.ПорядокОпределенияРасчетногоПериодаСреднегоЗаработка.ПоКолдоговору,СведениеОВидеРасчета.ПериодРасчетаСреднегоЗаработка,НачислениеОтпускаРаботникамОрганизацийПереопределяемый.КоличествоМесяцевРасчетаПоЗакону(Док)); Иначе МесяцевРасчетногоПериода = 12 КонецЕсли; ПериодРасчетаСреднегоЗаработкаНачало = ДобавитьМесяц(НачалоМесяца(Док.ДатаНачалаСобытия), - МесяцевРасчетногоПериода); ПериодРасчетаСреднегоЗаработкаОкончание = НачалоМесяца(Док.ДатаНачалаСобытия) - 1; Иначе ПериодРасчетаСреднегоЗаработкаНачало = ""; ПериодРасчетаСреднегоЗаработкаОкончание = "" КонецЕсли; Док.ПериодРасчетаСреднегоЗаработкаНачало = ПериодРасчетаСреднегоЗаработкаНачало; Док.ПериодРасчетаСреднегоЗаработкаОкончание= ПериодРасчетаСреднегоЗаработкаОкончание; Вроде то что нужно получилось по одному челу, ща попробую по всем. |
|||
4
ИУБиПовиц
12.02.14
✎
11:12
|
Если бы еще как то ускорить эту хрень:)
|
|||
5
Йохохо
12.02.14
✎
11:24
|
сверку легко сделать создав вручную документ на дату отчета, механизм то не меняется
чтобы ускорить - добавьте отборы по сотруднику, больше вариантов вроде бы нет) |
|||
6
ИУБиПовиц
12.02.14
✎
11:25
|
так мне по всем работающим надо:)
|
|||
7
Йохохо
12.02.14
✎
11:28
|
(6) надо 1 раз сохранить в эксель и 7 раз протестировать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |