Имя: Пароль:
1C
1С v8
Заработанные права на отпуск
0 Антиквар
 
15.08.20
13:19
Всем привет!
Мне нужно по всем сотрудникам получить заработанные права на отпуск, за весь период работы.
Т.е. сколько за весь период работы сотрудник должен был отгулять.
Я так понял, что для этого мне нужно просто взять срез последних из регистра сведений ЗаработанныеПраваНаОтпуска ?
Этот регистр заполняется только при формировании отчета остатки отпусков? Т.е. мне нужно сначала сформировтаь отчет Остатки отпусков на текущую дату по всем сотрудникам, а потом уже брать срез последних.
Не очень удобно перед каждым формированием отчета по заработанным отпускам всегда формировать ещё и стандартный отчет по отпускам сотрудников, чтобы эти заработанные отпуска посчитались.
Регламентного задания по заполнению регистра ЗаработанныеПраваНаОтпуска не нашел.

Может есть ещё какой-то более правильный способ для моей задачи?
1 SleepyHead
 
гуру
15.08.20
17:16
См. общий модуль "ОстаткиОтпусков", я делал примерно так

        СтрОстатки = Новый Структура;
        СтрОстатки.Вставить("ДатаОстатков", ДатаОстатков);
        СтрОстатки.Вставить("Сотрудники", МассивСотрудников);  // справочникСсылка.Сотрудники
        СтрОстатки.Вставить("ВидыОтпусков", МассивВидовОтпусков); // справочникСсылка.ВидыОтпусков
        СтрОстатки.Вставить("ИсключаемыеРегистраторы", Новый Массив);
        СтрОстатки.Вставить("ЭтоРасчетПриУвольнении", Ложь);
        СтрОстатки.Вставить("ЗаработанныеПраваНаГодВперед", Ложь);
        СтрОстатки.Вставить("ОтраслевыеОсобенности", Неопределено);
        
        ТО = ОстаткиОтпусков.ОстаткиОтпусков(СтрОстатки);
2 SleepyHead
 
гуру
15.08.20
17:17
В функции почему-то описаны не все параметры, которые используются в структуре "ПараметрыОстатков", так что включай отладчик и вперед ))

// Функция, отвечающая за расчет отпусков, положенных сотруднику.
// Предоставляет данные для специализированных функций служебного программного интерфейса.
// Не должна вызываться напрямую из библиотек зарплатно-кадровой функциональности.
//
// Параметры
//    СтруктураПараметров - тип Структура, со следующими полями (см. ОстаткиОтпусков.ОписаниеПараметровДляОстаткиОтпусков()).
//        * ДатаОстатков                - дата, на которую вычисляются остатки, тип Дата
//        * Сотрудники                 - список сотрудников, тип Массив или СправочникСсылка.Сотрудники
//        * ВидыОтпусков                 - список видов отпусков, тип Массив или СправочникСсылка.ВидыОтпусков
//        * ИсключаемыеРегистраторы    - список регистраторов, исключаемых при расчете остатков, тип Массив или ДокументСсылка.
//
// Возвращаемое значение:
//  ТаблицаЗначений - остатки отпусков сотрудников в разрезе рабочих лет, таблица значений с колонками:
//        * Сотрудник                    - сотрудник
//        * ВидОтпуска                - вид отпуска
//        * ВидОтпускаНаименование    - наименование вида отпуска
//        * РабочийГодДатаНачала        - начало рабочего года
//        * РабочийГодДатаОкончания    - конец рабочего года
//        * Дни                       - остаток отпуска.
//
3 SleepyHead
 
гуру
15.08.20
17:18
А с другой стороны, все нужное есть в ОписаниеПараметровДляОстаткиОтпусков(), я не обратил внимание, исправлю у себя.
4 Антиквар
 
16.08.20
23:11
(3) SleepyHead, спасибо, но ты показал функцию, которая рассчитывает остатки отпусков.
А мне нужно посчитать, сколько за весь период работы сотрудник должен был отгулять дней.
Т.е. мне не нужно учитывать фактические отпуска, нужно только сам план, то что сотрудник заработал.
Но внутри твоей функции есть расчет заработанного отпуска, можно конечно это вычленить в свою обработку, чтобы моя обработка сначала заполняла регистр ЗаработанныеПраваНаОтпуска, а потом использовать данные этого регистра.
Ну по сути это будет то же самое, что сформировать стандартный отчет по остаткам отпусков, который заполнит регистр, а потом своей обработкой вывести срез последних из этого регистра. Просто это будет всё в одной обработке и это удобнее
5 SleepyHead
 
гуру
02.09.20
05:40
(4) Ответ только что увидел, поэтому сейчас пишу.

В том же общем модуле есть функция ТаблицаСобытийДляСправки, можно выдернуть из нее нужные данные - сколько именно заработано прав на отпуск.
Функция формирует данные для отчета "Остатки отпусков" и для печатной формы, которую видно в документе отпуска по кнопке "Как сотрудник использовал отпуск".