|
ЗУП 2.5 программно рассчитать отпуск | ☑ | ||
---|---|---|---|---|
0
ALEX7519
30.03.17
✎
17:10
|
Не подскажите : конфигурация ЗУП 2.5
Программно создаю документ "НачислениеОтпускаРаботникамОрганизаций" он создается, если в него потом зайти и нажать кнопку "Рассчитать" - все расчитывается. А можно ли программно рассчитать созданный документ ( программно нажать кнопку "рассчитать" ) - чтобы в нем появился средний заработок и пр... спс |
|||
1
Волшебник
модератор
30.03.17
✎
17:12
|
Пишущие "спс" вместо "спасибо", что вы делаете с кучей сэкономленного времени?
|
|||
2
Amra
30.03.17
✎
17:15
|
(0) Я не возражаю. Только не спрашивай "Как?", думаю сам догадаешься посмотреть какая экспортная процедура вызывается по кнопке
|
|||
3
piter3
30.03.17
✎
17:42
|
Можно
|
|||
4
k1noshkin
30.03.17
✎
17:45
|
(0) Видел в чужих доработках, вроде как раз таким образом средний заработок и получали.
|
|||
5
Флориан
30.03.17
✎
17:48
|
(0) из код из процедуры Рассчитать нажатие - перенести в обработку, резервы отпусков нужно?
|
|||
6
ALEX7519
30.03.17
✎
18:02
|
(5) да, пытаюсь сделать отчет для резервов отпусков.
пытался выдрать запрос из конфигурации, не считает и все ( поэтому пытаюсь программно создать документ и из него уже получить средний заработок. Документ = Документы.НачислениеОтпускаРаботникамОрганизаций.СоздатьДокумент(); ... Документ.Записать(); ... по кнопке расмсчитать из формы вызывается Процедура КнопкаРассчитатьВсеНажатие(Элемент) ... в ней я так помнимаю вызывается процедура из модуля документа Рассчитать(мРассчитываемыеТаблицы); вот как ко всему этому обратиться и не понимаю Спасибо) |
|||
7
Alexandr_U1982
30.03.17
✎
18:20
|
(6) А ты попробуй тоже вызвать процедуру из модуля документа Рассчитать(мРассчитываемыеТаблицы);
|
|||
8
Бовка
30.03.17
✎
18:20
|
(6) если вкратце, то так
... здесь создаешь док, инициилизируешь мРассчитываемыеТаблицы а дальше РасчетныйДокумент.Записать(); РасчетныйДокумент.Рассчитать(мРассчитываемыеТаблицы); РасчетныйДокумент.Записать(); Ставка = НачислениеОтпускаРаботникамОрганизацийПереопределяемый.РасчетСреднегоЗаработка(РасчетныйДокумент, СведениеОВидеРасчета, МесяцевРасчетногоПериода, Дата1, Дата2); |
|||
9
Вафель
30.03.17
✎
18:33
|
без получении формы в зупе ничего рассчитать нельзя
|
|||
10
Бовка
30.03.17
✎
18:35
|
(9) и здесь поспорим? откуда такие огульные утверждения?
|
|||
11
Вафель
30.03.17
✎
18:44
|
ну в зуп 3 именно так
|
|||
12
piter3
30.03.17
✎
18:44
|
(9) можно
|
|||
13
Alexandr_U1982
30.03.17
✎
21:54
|
(11) В ЗУП 3 и расчет резервов более по-человечески сделан. Там не нужно подобных извращений делать.
|
|||
14
Бовка
31.03.17
✎
10:15
|
(11) При чем здесь ЗУП 3, если в заголовке четко указан ЗУП 2.5?
|
|||
15
h-sp
31.03.17
✎
10:51
|
(14) зато в ЗУП 2.5 сначала движения регистров пишет. Потом по этим движениям делает расчет, потом движения стирает. Потом опять пишет.
|
|||
16
ИУБиПовиц
31.03.17
✎
11:08
|
Давно еще делал регламентным запись по каждому сотруднику резерва периодически в регистр. Код не очень хорош, зато работает:), но для 500 сотрув работал.
[code] Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РаботникиОрганизацийСрезПоследних.Сотрудник |ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Дата, ) КАК РаботникиОрганизацийСрезПоследних |ГДЕ | РаботникиОрганизацийСрезПоследних.ЗанимаемыхСтавок > 0 | |УПОРЯДОЧИТЬ ПО | РаботникиОрганизацийСрезПоследних.Сотрудник.Наименование"; Запрос.УстановитьПараметр("Дата",КонецДня(ДатаОтчета)); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выгрузить(); МассивСотров = ВыборкаДетальныеЗаписи.ВыгрузитьКолонку("Сотрудник"); Остаток = ОстаткиОтпусков.ОстатокОтпускаСпискаСотрудниковНаДату( МассивСотров,ДатаОтчета); Остаток.Колонки.Добавить("СреднедневнойЗаработок"); Остаток.Сортировать("Сотрудник"); СуммаИтого = 0; для каждого стр из остаток цикл НачатьТранзакцию(); Док = Документы.НачислениеОтпускаРаботникамОрганизаций.СоздатьДокумент(); Док.Дата = КонецГода(ТекущаяДата()); Док.Комментарий = "для расчета резерва"; Док.Организация = ТекОрганизация; Док.Записать(РежимЗаписиДокумента.Запись); Стр.СреднедневнойЗаработок = 0; Док.Сотрудник = Стр.Сотрудник; Док.ДатаНачалаСобытия = ДатаОтчета; Док.ОсновнойОтпуск=Истина; Док.ПорядокРасчетаОсновногоОтпуска=Перечисления.ПорядокРасчетаОтпуска.ПоКалендарнымДням; Док.ДатаНачалаОсновногоОтпуска = ДатаОтчета; Док.КоличествоДнейОсновногоОтпуска = 1; Док.ДатаОкончанияОсновногоОтпуска = ДатаОтчета; ЗаполнениеДокументовЗК.ЗаполнитьДатуВыплатыОтпускных(Док, Док.ДатаНачалаОсновногоОтпуска); ЗаполнитьЗначенияСвойств(Док, ОстаткиОтпусков.РабочийГодПериодаОтпуска(Док.Сотрудник, Док.ДатаНачалаОсновногоОтпуска, Док.ДатаОкончанияОсновногоОтпуска, Док.Ссылка, Док.ПорядокРасчетаОсновногоОтпуска, Не Док.ОсновнойОтпуск, Док.ВидРасчетаДополнительногоОтпуска, Док.ДатаНачалаДополнительногоОтпуска, Док.ДатаОкончанияДополнительногоОтпуска)); Док.ПериодРасчетаСреднегоЗаработкаНачало = Док.РабочийГодС; Док.ПериодРасчетаСреднегоЗаработкаОкончание= Док.РабочийГодПо; Если ЗначениеЗаполнено(Док.ДатаНачалаСобытия) Тогда мСведенияОВидахРасчета = Новый Соответствие; ВидРасчета = Док.ОсновнойВариантРасчетаДокумента().ВидРасчета; Если ЗначениеЗаполнено(ВидРасчета) Тогда СведениеОВидеРасчета = ПроведениеРасчетов.ПолучитьСведенияОВидеРасчета(мСведенияОВидахРасчета, ВидРасчета); МесяцевРасчетногоПериода = ?(СведениеОВидеРасчета.ПорядокОпределенияРасчетногоПериодаСреднегоЗаработка = Перечисления.ПорядокОпределенияРасчетногоПериодаСреднегоЗаработка.ПоКолдоговору,СведениеОВидеРасчета.ПериодРасчетаСреднегоЗаработка,НачислениеОтпускаРаботникамОрганизацийПереопределяемый.КоличествоМесяцевРасчетаПоЗакону(Док)); Иначе МесяцевРасчетногоПериода = 12 КонецЕсли; ПериодРасчетаСреднегоЗаработкаНачало = ДобавитьМесяц(НачалоМесяца(Док.ДатаНачалаСобытия), - МесяцевРасчетногоПериода); ПериодРасчетаСреднегоЗаработкаОкончание = НачалоМесяца(Док.ДатаНачалаСобытия) - 1; Иначе ПериодРасчетаСреднегоЗаработкаНачало = ""; ПериодРасчетаСреднегоЗаработкаОкончание = "" КонецЕсли; Док.ПериодРасчетаСреднегоЗаработкаНачало = ПериодРасчетаСреднегоЗаработкаНачало; Док.ПериодРасчетаСреднегоЗаработкаОкончание= ПериодРасчетаСреднегоЗаработкаОкончание; Док.ПериодРегистрации = НачалоМесяца(ДатаОтчета); Док.Записать(РежимЗаписиДокумента.Запись); мРассчитываемыеТаблицы = Новый Структура("Начисления,РасчетСреднего"); мРассчитываемыеТаблицы.Начисления = Истина; мРассчитываемыеТаблицы.РасчетСреднего = Истина; Док.Рассчитать(мРассчитываемыеТаблицы); мСведенияОВидахРасчета = Новый Соответствие; ВариантРасчетаДокумента = Док.ОсновнойВариантРасчетаДокумента(); ВидРасчета = ВариантРасчетаДокумента.ВидРасчета; Если ЗначениеЗаполнено(ВидРасчета) Тогда СведениеОВидеРасчета = ПроведениеРасчетов.ПолучитьСведенияОВидеРасчета(мСведенияОВидахРасчета, ВидРасчета); МесяцевРасчетногоПериода = 0; ОбщегоНазначенияЗК.РазобратьРазностьДат(НачалоМесяца(Док.ПериодРасчетаСреднегоЗаработкаОкончание), НачалоМесяца(Док.ПериодРасчетаСреднегоЗаработкаНачало), , МесяцевРасчетногоПериода); Если ЗначениеЗаполнено(МесяцевРасчетногоПериода) Тогда МесяцевРасчетногоПериода = МесяцевРасчетногоПериода + 1; Иначе МесяцевРасчетногоПериода = ?(СведениеОВидеРасчета.ПорядокОпределенияРасчетногоПериодаСреднегоЗаработка = Перечисления.ПорядокОпределенияРасчетногоПериодаСреднегоЗаработка.ПоКолдоговору,СведениеОВидеРасчета.ПериодРасчетаСреднегоЗаработка,НачислениеОтпускаРаботникамОрганизацийПереопределяемый.КоличествоМесяцевРасчетаПоЗакону(Док)); КонецЕсли; СреднедневнойЗаработок = Формат(НачислениеОтпускаРаботникамОрганизацийПереопределяемый.РасчетСреднегоЗаработка(ДОк, СведениеОВидеРасчета.СпособРасчета, МесяцевРасчетногоПериода, Док.ПериодРасчетаСреднегоЗаработкаНачало, Док.ПериодРасчетаСреднегоЗаработкаОкончание), "ЧЦ=12; ЧДЦ=2; ЧН="); КонецЕсли; Стр.СреднедневнойЗаработок = Число(СреднедневнойЗаработок); Если Стр.СреднедневнойЗаработок = Неопределено тогда Стр.СреднедневнойЗаработок = 0; КонецЕсли; ОтменитьТранзакцию(); Набор = РегистрыСведений.Изм_СреднедневнойЗаработок.СоздатьНаборЗаписей(); Набор.Отбор.Период.Установить(НачалоМесяца(ДатаОтчета)); Набор.Отбор.Сотрудник.Установить(Стр.Сотрудник); //Набор.Загрузить(Остаток); Набор.Добавить(); для каждого СтрНаб из Набор цикл ЗаполнитьЗначенияСвойств(СтрНаб,Стр); СтрНаб.Период = ДатаОтчета; КонецЦикла; Набор.Записать(истина); [/code] |
|||
17
ALEX7519
31.03.17
✎
16:52
|
Спасибо вроде бы получилось
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |