Имя: Пароль:
1C
 
ЗУП Получения отпусков
0 golem14
 
16.01.20
13:29
В ЗУП 3.1 для полученя отпусков использую ОстаткиОтпусков.ОстаткиОтпусковСотрудниковНаДату(). Этот метод возвращает таблицу значений с отпусками, но они не разделены по видам отпуска. Как получить остатки отпусков сотрудников по видам отпуска, так как в отчёте "Остатки отпусков"?
1 golem14
 
16.01.20
13:32
вот в этом методе есть разбиение ОстаткиОтпусков.ОстатокОтпускаСотрудникаНаДату(), но он только по одному сотруднику.
2 golem14
 
16.01.20
13:36
У ОстаткиОтпусков.ОстаткиОтпусковСотрудниковНаДату() параметры такие:
// Функция рассчитывает сводные остатки отпусков для списка сотрудников. Остаток рассчитывается на конец дня.
//
// Параметры:
//    Сотрудники                - список сотрудников;
//    ДатаОстатков            - дата, на которую необходимо получить остаток. Если не указана, используется текущая дата.
//    ВидыОтпусков            - массив элементов справочника ВидыОтпусков, по которым необходимы остатки, если не указано
//                                остатки получаются по всем видам отпусков.
//

пробовал перечислить нужные виды в ВидыОтпусков, но это работает просто как отбор.
3 dka80
 
16.01.20
13:40
Функция ОстаткиОтпусковСотрудниковНаДату(Сотрудники, ДатаОстатков = '00010101', ВидыОтпусков = Неопределено) Экспорт
    
    Если Не ЗначениеЗаполнено(ДатаОстатков) Тогда
        ДатаОстатков = НачалоДня(ТекущаяДатаСеанса());
    КонецЕсли;
    
    СтруктураПараметров = ОстаткиОтпусков.ОписаниеПараметровДляОстаткиОтпусков();
    СтруктураПараметров.Сотрудники     = Сотрудники;
    СтруктураПараметров.ДатаОстатков = НачалоДня(ДатаОстатков);
    СтруктураПараметров.ВидыОтпусков = ВидыОтпусков;
    
    Результат = ОстаткиОтпусков.ОстаткиОтпусков(СтруктураПараметров);
    СтруктураОстатковОтпусков = РазложитьТаблицуОстатковОтпусков(Результат);
    
    СводныеОстатки = СтруктураОстатковОтпусков.ОстаткиОтпусковПоВидуОтпуска;
    
    Возврат СводныеОстатки;
    
КонецФункции
4 golem14
 
16.01.20
13:50
ну в общем видимо нужно сделать свою функцию без СводныеОстатки.
5 kzot
 
16.01.20
13:58
а Функция ТаблицаОстатковОтпусков неподошла ?
6 golem14
 
16.01.20
14:05
(5) в общем модуле ОстаткиОтпусков нет такой функции ТаблицаОстатковОтпусков, что вы имеете ввиду?
7 KnightAlone
 
16.01.20
14:11
(0) о это ты хорошо написал, мне не копаться теперь. есть заявка в доке отпуска показывать число дней остатка, щас посмотрю эту функцию
8 kzot
 
16.01.20
14:12
(6) какой релиз ?
9 golem14
 
16.01.20
14:26
(8) точно в ЗУП есть такая фунция, а в ERP 2.4.8.92 нет.
10 kzot
 
16.01.20
14:27
(9) используй, там есть "ВидыОтпусков" и всё отдает.
11 kzot
 
16.01.20
14:29
(9) в ERP 2.4.8.92 подсистемы

ЗарплатаКадрыБазовая                     3.1.9.252
ЗарплатаКадрыРасширенная                 3.1.9.252
12 golem14
 
21.01.20
13:26
в ERP получаю остатки отпусков при помощи стандартной функции
ТаблицаОстаткиОтпусков = ОстаткиОтпусков.ТаблицаОстатковОтпусков(СтруктураПараметров);
По некоторым сотрудникам нет остатка отпусков, но если проверить по отчету "Остатки отпусков" остатки есть.

И самое интересное, после того как я посмотрел отчёт остатки отпусков по сотруднику, его остатки становятся видны по функции
ТаблицаОстаткиОтпусков = ОстаткиОтпусков.ТаблицаОстатковОтпусков(СтруктураПараметров);

Что вообще происходит в этой ЗУП?
13 golem14
 
21.01.20
13:35
что это за Эффект наблюдателя: пока я не посмотрел отпуска сотрудника через отчёт я не могу их получить.
14 Akela has missed
 
21.01.20
13:39
(13) Отчет перед формированием запускает РасчетЗаработанныхОтпусков. По хорошему его всегда надо запускать перед получением таблицы остатков.
15 kzot
 
21.01.20
16:52
(13) назначение регистра сведений "Заработанные права на отпуска" вам надо разобрать чуть лучше.
16 Homer
 
21.01.20
17:22
(13) не нравится. напиши свой метод получения остатков