|
|
|
Средний заработок через запрос | ☑ | ||
|---|---|---|---|---|
|
0
AleGol
23.07.08
✎
08:19
|
Подскажите пожалуйста, ни разу не сталкивался с регистрами расчета, а теперь вот понадобилось. Как определить запросом среднюю зарплату отпуска. Какой вид расчета брать, в чем отличие и что делать когда запрос с фильтром по одному виду расчета и одному месяцу выдается несколько записей с разными сумами. Смотрел расчет в документе НачислениеОтпускаРаботникамОрганизаций, но там как то сильно завязано на документы. А чисто по регистру расчета можно ли определить?
|
|||
|
1
xrrg
23.07.08
✎
09:19
|
запиши в транзакции документ, посчитай, потом отмени транзакцию
|
|||
|
2
Said_We
23.07.08
✎
09:32
|
(0) Можно. Документ же определяет. Но для этого необзходимо написать все как в документе или не париться и сделать как в (1). :-))
|
|||
|
3
AleGol
23.07.08
✎
09:36
|
(1) Какой то кривой способ. Я так считаю что из регистра расчета все можно достать
|
|||
|
4
almar
23.07.08
✎
09:38
|
(3) ну тогда уж из двух регистров :)
|
|||
|
5
xrrg
23.07.08
✎
09:42
|
(3) есть подозрение, что если будешь сам реализовывать, то получится еще кривее.
|
|||
|
6
Aprobator
23.07.08
✎
09:52
|
(4) по поводу (1) - зато если что-то поменяется в расчете сумм среднего не надо будет париться самому с переписью своего отчета (1С сама на тебя поработает) или что там у тебя?
|
|||
|
7
almar
23.07.08
✎
09:57
|
Вообще-то, т.к. виды расчета по среднему могут вводится не только документами "оплата отпуска", "оплата по больничному" и "оплата по среднему" но и просто, например, "начислением зарплаты". Все процедуры расчета и запросы есть в общем модуле "проведение расчетов".
|
|||
|
8
xrrg
23.07.08
✎
10:30
|
(7) для отпуска значит для отпуска, для каждого из перечисленных начислений свой расчет среднедневного заработка
|
|||
|
9
Said_We
23.07.08
✎
10:40
|
(5) Смотря как реализовывать... :-))
Можно вообще без регистров расчета средний считать. Тем более что перерасчеты в 1С все равно не работают должным образом. |
|||
|
10
John Lennon
23.07.08
✎
10:46
|
помоги себе сам это называется. Я мучался долго, пока все четко не прописал, зато терь знаю, как, где и что считается в моей конфе :) просто конфа старая и обновления на нее ставить бессмысленно...
|
|||
|
11
John Lennon
23.07.08
✎
10:47
|
(0) а мой запрос тебе не помощник, потому что все ВР старые и своя специфика при расчете среднего ;)
|
|||
|
12
xrrg
23.07.08
✎
11:10
|
(9) да кто ж спорит, только скока времени это займет. нормативная база там неистовая ;)
вот. для одной справки надо было узнать среднедневной заработок, потом тупо умножал на 29.4 эту функцию надо добавить СформироватьЗапросПоШапке. Функция РассчитатьСреднийЗаработок(ДатаУвольнения) НачатьТранзакцию(); Документ = Документы.НачислениеОтпускаРаботникамОрганизаций.СоздатьДокумент(); Документ.Дата = ТекущаяДата(); Документ.УстановитьНовыйНомер(); Документ.Организация = Сотрудник.Организация; Документ.Сотрудник = Сотрудник; Документ.ПериодРегистрации = ТекущаяДата(); Документ.ДатаНачалаОсновногоОтпуска = ДатаУвольнения + 86400; Документ.ДатаОкончанияОсновногоОтпуска = ДатаУвольнения + 86400; Документ.ПорядокРасчетаОсновногоОтпуска = Перечисления.ПорядокРасчетаОтпуска.ПоКалендарнымДням; Попытка Документ.Записать(); Ссылка = Документ.Ссылка; Исключение Сообщить("Не удалось записать временный объект!" + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание); Возврат 0 КонецПопытки; ВыборкаПоШапкеДокумента = СформироватьЗапросПоШапке(Документ).Выбрать(); // позиционируем выборку ВыборкаПоШапкеДокумента.Следующий(); // Создадим наборы записей используемых регистров НаборОсновныеНачисления = РегистрыРасчета.ОсновныеНачисленияРаботниковОрганизаций.СоздатьНаборЗаписей(); НаборОсновныеНачисления.Отбор.Регистратор.Значение = Ссылка; НаборОсновныеНачисления.мВыполнятьВспомогательныеРасчеты = Ложь; НаборДополнительныеНачисления = РегистрыРасчета.ДополнительныеНачисленияРаботниковОрганизаций.СоздатьНаборЗаписей(); НаборДополнительныеНачисления.Отбор.Регистратор.Значение = Ссылка; НаборРасчетСреднего = РегистрыРасчета.РасчетСреднегоЗаработка.СоздатьНаборЗаписей(); НаборРасчетСреднего.Отбор.Регистратор.Значение = Ссылка; Документ.СформироватьДвиженияПоНачислениям(ВыборкаПоШапкеДокумента, НаборОсновныеНачисления, НаборДополнительныеНачисления); Если НаборОсновныеНачисления.Количество() <> 0 Тогда ПроведениеРасчетов.РассчитатьЗаписиРегистраРасчета("ОсновныеНачисленияРаботниковОрганизаций", НаборОсновныеНачисления, , НаборРасчетСреднего, ВыборкаПоШапкеДокумента.ГоловнаяОрганизация, ВыборкаПоШапкеДокумента.ОбособленноеПодразделение,,Истина); КонецЕсли; // перепишем записи основных начислений в документ ЗаписиНачислений = НаборОсновныеНачисления.Выгрузить(); ОтменитьТранзакцию(); Возврат ?(ЗаписиНачислений.Количество() > 0, ЗаписиНачислений[0].ДополнительныеДанные, 0) КонецФункции |
|||
|
13
Said_We
23.07.08
✎
11:43
|
(12) Несколько страниц текста - это неистовая база? :-))
Насмешил. |
|||
|
14
xrrg
23.07.08
✎
11:46
|
(13) "нет препятствий патриотам"
имея ЗУП я не стану считать каким-то своим способом. |
|||
|
15
AleGol
23.07.08
✎
11:50
|
(14) Спасибо, функция то что надо. Вот только возможно ли как проверить, что считает правильно?
|
|||
|
16
AleGol
23.07.08
✎
11:50
|
(12)(14) Спасибо, функция то что надо. Вот только возможно ли как проверить, что считает правильно?
|
|||
|
17
xrrg
23.07.08
✎
11:53
|
(16) рассчитай отпуск, посмотри там среднедневной
|
|||
|
18
AleGol
23.07.08
✎
11:55
|
(17) Ага, ну вообще огромное спасибо
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |