|
Планы видов расчета. Не работает вытестнение. | ☑ | ||
---|---|---|---|---|
0
megabax
22.02.12
✎
21:35
|
Добрый день.
В пустой конфе создал план видоврасчета, регистр расчета, включил период дейсвтия. создал вид расчета Оклад и Невыход. Оклад сдела вытясняемым от НЕвыход. Создал документ с таким модулем проведения: Для Каждого ТекСтрокаНачисления Из Начисления Цикл Движение = Движения.Начисления.Добавить(); Движение.Сторно = Ложь; Движение.ВидРасчета = ТекСтрокаНачисления.ВидРасчета; Движение.ПериодРегистрации = Период; Движение.Сотрудник = ТекСтрокаНачисления.Сотрудник; Движение.Параметр = ТекСтрокаНачисления.Параметр; Движение.БазовыйПериодНачало = ТекСтрокаНачисления.БазовыйПериодНачало; Движение.БазовыйПериодКонец = ТекСтрокаНачисления.БазовыйПериодКонец; Движение.ПериодДействияНачало= ТекСтрокаНачисления.ПериодДействияНачало; Движение.ПериодДействияКонец= ТекСтрокаНачисления.ПериодДействияКонец; КонецЦикла; Движения.Начисления.Записать(); Расчет.РассчитатьНачисления(Ссылка); КонецПроцедуры Процедура РассчитатьНачисления(Ссылка) экспорт НаборЗаписей=РегистрыРасчета.Начисления.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(Ссылка); НаборЗаписей.Прочитать(); для каждого стр из НаборЗаписей цикл если стр.ВидРасчета=ПланыВидовРасчета.Начисления.Оклад тогда ТЗЧасовНорма=стр.ПолучитьДанныеГрафика(ВидПериодаРегистраРасчета.ПериодДействия); ТЗЧасовФакт=стр.ПолучитьДанныеГрафика(ВидПериодаРегистраРасчета.ФактическийПериодДействия); Норма=0; Если ТЗЧасовНорма.Количество()>0 тогда Норма=ТЗЧасовНорма[0].Часов; Конецесли; Факт=0; Если ТЗЧасовФакт.Количество()>0 тогда Факт=ТЗЧасовФакт[0].Часов; Конецесли; если Норма<>0 тогда стр.Результат=стр.Параметр*Факт/Норма; иначе сообщить("Не заполнен производсвенный календарь",СтатусСообщения.ОченьВажное); конецесли; иначеесли стр.ВидРасчета=ПланыВидовРасчета.Начисления.ПремияПроцентом тогда Ресурсы=Новый Массив; Ресурсы.Добавить("Начисления.Результат"); Отбор=Новый Структура; Отбор.Вставить("Сотрудник","Начисления.Сотрудник"); ТЗБазы=стр.ПолучитьБазу(Ресурсы, Отбор); База=0; Если ТЗБазы.Количество()>0 тогда База=ТЗБазы[0].Результат; Конецесли; стр.Результат=База*стр.Параметр/100; иначе //тут будут другие алгоритмы конецесли; конеццикла; НаборЗаписей.Записать(); конецпроцедуры И почему то не работает вытеснение. Тоесть, заведение расчета "Невыхд" не уменьшает фактическое количества часов. Подскажите плз, как лечить. |
|||
1
asady
22.02.12
✎
23:12
|
(0) ты же берешь по регистратору
|
|||
2
megabax
23.02.12
✎
10:27
|
1, спасибо, попробую исправить
|
|||
3
megabax
23.02.12
✎
10:31
|
сделал вот так:
для каждого стр из НаборЗаписей цикл если стр.ВидРасчета=ПланыВидовРасчета.Начисления.Оклад тогда Отбор=Новый Структура("Сотрудник",стр.Сотрудник); //ТЗЧасовНорма=стр.ПолучитьДанныеГрафика(ВидПериодаРегистраРасчета.ПериодДействия); //ТЗЧасовФакт=стр.ПолучитьДанныеГрафика(ВидПериодаРегистраРасчета.ФактическийПериодДействия); ТЗЧасовФакт=РегистрыРасчета.Начисления.ПолучитьДанныеГрафика(Отбор,ВидПериодаРегистраРасчета.ФактическийПериодДействия); ТЗЧасовНорма=РегистрыРасчета.Начисления.ПолучитьДанныеГрафика(Отбор,ВидПериодаРегистраРасчета.ПериодДействия); Норма=0; Если ТЗЧасовНорма.Количество()>0 тогда Норма=ТЗЧасовНорма[0].Часов; Конецесли; Пишет "Недопустимое значеие параметра |
|||
4
megabax
23.02.12
✎
10:39
|
Еще я сдела вот такой запрос:
ВЫБРАТЬ НачисленияФактическийПериодДействия.ВидРасчета, НачисленияФактическийПериодДействия.ПериодДействияНачало, НачисленияФактическийПериодДействия.ПериодДействияКонец, НачисленияФактическийПериодДействия.Сотрудник, НачисленияФактическийПериодДействия.Результат, НачисленияФактическийПериодДействия.Параметр ИЗ РегистрРасчета.Начисления.ФактическийПериодДействия КАК НачисленияФактическийПериодДействия и получил такой вот результат: Вид расчета Дата начала периода действия Дата окончания периода действия Параметр Результат Сотрудник Невыход 15.02.2012 0:00:00 16.02.2012 0:00:00 Ануфриев Оклад 8 000,00 8 000,00 Петров Оклад 10 000,00 10 000,00 Иванов Оклад 10 000,00 10 000,00 Сидоров Оклад 01.01.2012 0:00:00 31.01.2012 0:00:00 10 000,00 10 000,00 Ануфриев Премия процентом 10,00 2 000,00 Сидоров Премия процентом 15,00 1 500,00 Иванов тоесть, где то системно не делается вытетеснние. Почему????? |
|||
5
megabax
23.02.12
✎
10:41
|
а, прошу прощения, не так поставил даты невыхода.
вопрос снят |
|||
6
megabax
23.02.12
✎
10:43
|
кстати, то что я поставил отбор по регистратору, ни сколько не мешает правильному расчету фактического периода действия
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |