Обновление информации в справочнике по текущей дате отчёта, настраиваемого через СКД
Добрый день. Есть справочник "СведенияОСтаже" в котором рассчитывается стаж сотрудника по кнопке "Рассчитать стаж"
При изменении даты для расчёты, даты увольнения пересчитывается табличная часть (лет. месяцев, дней). Форма данного справочника показана на первом скриншоте.
В общем модуле "СведенияОСтаже" есть процедура для пересчёта табличной части справочника "СведенияОСтаже"
а также функция для расчёта общего стажа по столбцам в табличной части
В самом справочнике "СведенияОСтаже" затем вызывается так:
Подскажите. пожалуйста, как в отчёте СКД, который формируется по дате сделать так, чтобы по сотруднику в поля (лет, месяцев, дней) подставлялся общий расчёт стажа по столбцам табличной части "СведенияОСтаже"
Мне получается по формируемой дате отчёта нужно каким-то образом обновить табличную часть справочника "СведенияОСтаже" по сотрудникам на дату формирования отчёта.. как это реализовать:?
затем нужно рассчитать в отчёте поля по общим(лет. месяцев, дней) сотрудника.. как можно такое сделать?
При изменении даты для расчёты, даты увольнения пересчитывается табличная часть (лет. месяцев, дней). Форма данного справочника показана на первом скриншоте.
В общем модуле "СведенияОСтаже" есть процедура для пересчёта табличной части справочника "СведенияОСтаже"
Процедура РасчётСтажаПоСтроке(Стр, ДатаДляРасчёта) Экспорт
Если Стр.ДатаУвольнения = Дата('00010101') Тогда
ДатаУвольнения = ДатаДляРасчёта;
ИначеЕсли Стр.ДатаУвольнения > ДатаДляРасчёта Тогда
ДатаУвольнения = ДатаДляРасчёта;
Иначе
ДатаУвольнения = Стр.ДатаУвольнения;
КонецЕсли;
Лет = Год(ДатаУвольнения) - Год(Стр.ДатаПриёма);
Мес = Месяц(ДатаУвольнения) - Месяц(Стр.ДатаПриёма);
Если Мес < 0 Тогда
Лет = Лет - 1;
Мес = 12 - Месяц(Стр.ДатаПриёма) + Месяц(ДатаУвольнения);
КонецЕсли;
КоличествоДней = День(ДатаУвольнения) - День(Стр.ДатаПриёма);
Если КоличествоДней < 0 Тогда
Мес = Мес - 1;
КоличествоДней = День(КонецМесяца(Стр.ДатаПриёма)) + КоличествоДней;
КонецЕсли;
//Вывод результата
Стр.Лет = Лет;
Стр.Месяцев = Мес;
Стр.Дней = КоличествоДней;
КонецПроцедуры
Показатьа также функция для расчёта общего стажа по столбцам в табличной части
Функция РасчётОбщегоСтажаПоСтолбцам(ТабличнаяЧасть) Экспорт
СуммаЛет = 0;
СуммаМесяцев = 0;
СуммаДней = 0;
Для Каждого Строка из ТабличнаяЧасть Цикл
СуммаЛет = СуммаЛет + Строка.Лет;
СуммаМесяцев = СуммаМесяцев + Строка.Месяцев;
Если СуммаМесяцев > 12 Тогда
СуммаЛет = СуммаЛет + 1;
СуммаМесяцев = СуммаМесяцев - 12;
КонецЕсли;
СуммаДней = СуммаДней + Строка.Дней;
Если СуммаДней > 30 Тогда
СуммаМесяцев = СуммаМесяцев + 1;
СуммаДней = СуммаДней - 30;
ИначеЕсли СуммаДней > 365 Тогда
СуммаЛет = СуммаЛет + 1;
СуммаДней = СуммаДней - 365;
КонецЕсли;
КонецЦикла;
Возврат Новый Структура("СуммаЛет, СуммаМесяцев, СуммаДней", СуммаЛет, СуммаМесяцев, СуммаДней);
КонецФункции
ПоказатьВ самом справочнике "СведенияОСтаже" затем вызывается так:
&НаКлиенте
Процедура РасчётТрудовогоСтажаДатаПриёмаПриИзменении(Элемент)
СведенияОСтаже.РасчётСтажаПоСтроке(Элементы.РасчётТрудовогоСтажа.ТекущиеДанные, Объект.ДатаДляРасчёта);
КонецПроцедуры
Подскажите. пожалуйста, как в отчёте СКД, который формируется по дате сделать так, чтобы по сотруднику в поля (лет, месяцев, дней) подставлялся общий расчёт стажа по столбцам табличной части "СведенияОСтаже"
Мне получается по формируемой дате отчёта нужно каким-то образом обновить табличную часть справочника "СведенияОСтаже" по сотрудникам на дату формирования отчёта.. как это реализовать:?
затем нужно рассчитать в отчёте поля по общим(лет. месяцев, дней) сотрудника.. как можно такое сделать?
Прикрепленные файлы:
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Привет, только что проснулся, мог что-то упустить или неправильно понять, извиняюсь заранее.
Что нужно сделать:
Пересчитай стаж на дату отчета: Перед формированием отчета пройдись по справочнику "СведенияОСтаже" и пересчитай стаж для всех сотрудников на нужную дату.
Вызови пересчет перед отчетом: В модуле, где вызываешь отчет, перед этим вставь вызов процедуры пересчета стажа.
Добавь в СКД суммарный стаж: В отчете добавь вычисляемое поле для суммарного стажа с использованием твоей функции РасчётОбщегоСтажаПоСтолбцам.
Потом отчет должен показывать актуальный стаж на нужную дату. Отпиши, если что-то не сработает!
Что нужно сделать:
Пересчитай стаж на дату отчета: Перед формированием отчета пройдись по справочнику "СведенияОСтаже" и пересчитай стаж для всех сотрудников на нужную дату.
Вызови пересчет перед отчетом: В модуле, где вызываешь отчет, перед этим вставь вызов процедуры пересчета стажа.
Добавь в СКД суммарный стаж: В отчете добавь вычисляемое поле для суммарного стажа с использованием твоей функции РасчётОбщегоСтажаПоСтолбцам.
Потом отчет должен показывать актуальный стаж на нужную дату. Отпиши, если что-то не сработает!
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот