Доброго дня суток.
Пытаюсь решить задачу с премией за прошлый месяц, но с учетом кадровых перемещений, необходим получить базу для расчета премий по показателям прошлого. Нашел некую функцию ПолучитьБазу(), которую можно применить к регистру расчета Начисления. Но что-то идет не так...
Может кто знает, как можно её получить за некий интервал времени
Пытаюсь решить задачу с премией за прошлый месяц, но с учетом кадровых перемещений, необходим получить базу для расчета премий по показателям прошлого. Нашел некую функцию ПолучитьБазу(), которую можно применить к регистру расчета Начисления. Но что-то идет не так...
Может кто знает, как можно её получить за некий интервал времени
По теме из базы знаний
- 1С 7.7 ЗиК. Доработка документа "Бригадный наряд" с возможностью увидеть часы в расчетном листке
- Работа с кодами - числами, датами, кодами справочников, номерами документов, идентификаторами в 1С и в других базах данных
- Видеокурс "1C:Предприятие для программистов: Расчетные задачи (зарплата)"
- 1C:Предприятие для программистов: Расчетные задачи (зарплата). С 11 по 30 мая 2023г.
- Кнопка "Расчетный листок" в документе "Начисление за первую половину месяца", вызывающая отчет "Расчетные листы (за первую половину месяца)"
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) https://forum.infostart.ru/forum68/topic198149/
Может кто знает, как можно её получить за некий интервал времени
Гугль знает... что никак нельзя:
Я же в том топике отписал как считать
Модифицируйте под себя, или поройте в конфигурации посмотрите как подобный код используется в различных документах.
УстановитьПривилегированныйРежим(Истина);
НачатьТранзакцию();
МенеджерРасчета=РасчетЗарплатыРасширенный.СоздатьМенеджерРасчета(Объект.ПериодРегистрации, Объект.Организация);
МенеджерРасчета.НастройкиРасчета.РассчитыватьНачисления=Истина;
МенеджерРасчета.ИсключаемыйРегистратор=Объект.Ссылка;
СотрудникиДляНачислений=МенеджерРасчета.ТаблицаСотрудников();
СотрудникиДляРассчета=Новый Массив;
Пока ВыборкаСотрудник.Следующий() Цикл
СотрудникиДляРассчета.Добавить(ВыборкаСотрудник.Сотрудник);
НоваяСтрока=СотрудникиДляНачислений.Добавить();
НоваяСтрока.Сотрудник=ВыборкаСотрудник.Сотрудник;
НоваяСтрока.ДатаНачала=Объект.ПериодРегистрации;
НоваяСтрока.ДатаОкончания=ВыборкаСотрудник.ДатаОкончания;
КонецЦикла;
МенеджерРасчета.НастройкиРасчета.Сотрудники=СотрудникиДляРассчета;
ОтборМенеджераРасчета=МенеджерРасчета.СоздатьОтборы();
ОтборМенеджераРасчета.Подразделение=Объект.Подразделение;
МенеджерРасчета.ЗаполнитьНачислениеЗарплаты(СотрудникиДляНачислений, ОтборМенеджераРасчета);
МенеджерРасчета.РассчитатьЗарплату();
ОтменитьТранзакцию();
УстановитьПривилегированныйРежим(Ложь);
ПоказатьМодифицируйте под себя, или поройте в конфигурации посмотрите как подобный код используется в различных документах.
(3) воспользовался этим кодом.
Но не получается понять одну вещь - допустим я рассчитываю сентябрь месяц, база должна быть за август с учетом кадровых перемещений. Для этого я меняю период расчета базы у начисления "Премия" на "Текущий месяц" и должен "вернуться в прошлое". Если ставлю как август, то расчета нет, так как он уже рассчитан и проведен. Оставляю сентябрь, при этом в добавляю ДатаНачала и ДатаОкончания периодом август. В итоге имею после расчета таблицу с правильными основными начислениями и неверно рассчитанной премией.
Может где еще надо "поиграться" периодами?
//Рассчитываем зарплату
МенеджерРасчета = РасчетЗарплатыРасширенный.СоздатьМенеджерРасчета(Объект.МесяцНачисления, Объект.Организация);
МенеджерРасчета.НастройкиРасчета.РассчитыватьНачисления = Истина;
МенеджерРасчета.ИсключаемыйРегистратор = Объект.Ссылка;
СотрудникиДляНачислений = МенеджерРасчета.ТаблицаСотрудников();
СотрудникиДляРассчета = Новый Массив;
Для Каждого Стр Из КадровыеПереводыСотрудников Цикл
СотрудникиДляРассчета.Добавить(Стр);
НоваяСтрока = СотрудникиДляНачислений.Добавить();
НоваяСтрока.Сотрудник = Стр.Сотрудник;
НоваяСтрока.ДатаНачала = Стр.Начало;
НоваяСтрока.ДатаОкончания = Стр.Окончание;
КонецЦикла;
МенеджерРасчета.НастройкиРасчета.Сотрудники = СотрудникиДляРассчета;
ОтборМенеджераРасчета = МенеджерРасчета.СоздатьОтборы();
ОтборМенеджераРасчета.Подразделение = Объект.Подразделение;
МенеджерРасчета.ЗаполнитьНачислениеЗарплаты(СотрудникиДляНачислений, ОтборМенеджераРасчета);
МенеджерРасчета.РассчитатьЗарплату();
ПоказатьНо не получается понять одну вещь - допустим я рассчитываю сентябрь месяц, база должна быть за август с учетом кадровых перемещений. Для этого я меняю период расчета базы у начисления "Премия" на "Текущий месяц" и должен "вернуться в прошлое". Если ставлю
Объект.ПериодРегистрации
СотрудникиДляНачислений
Может где еще надо "поиграться" периодами?
(7)Что-то странное говорите, или я мож чего не понимаю. База это сумма начислений входящих в базу, если вы в настройках начисления ставите расчет базы "Предыдущий месяц", то конфигурация должна просуммировать уже рассчитанные в прошлом месяце начисления и подставить в показатель расчетная база. Причем тут кадровые переводы непонятно. Единственное что приходит на ум, это когда в месяце есть кадровый перевод и начисления базы разбиваются на периоды, то и сам а премия должна разбиться на периоды.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот