Имя: Пароль:
1C
 
1C ЗУП 3.1 Регистрация переработок
,
0 LopesLeonid
 
17.06.20
10:38
Зарплата и управление персоналом, редакция 3.1 (3.1.13.151)
Заполняю документ "Регистрация переработок", по одному сотруднику, за январь пишет норму 40 часов
Потом заполняю,только, за февраль пишет 88 часов, а если выбрать период январь - февраль то норму ставит 264
В графике сотрудника поле "При подсчете переработок определять норму по:" стоит "Производ. календарь"

Почему так происходит?
1 LopesLeonid
 
17.06.20
10:45
график скользящий
2 LopesLeonid
 
17.06.20
10:52
отработано правильно ставит
3 LopesLeonid
 
17.06.20
13:18
помогите, народ!
4 2S
 
17.06.20
13:25
Сколько не пересекался с переработками, практически всегда приходилось корректировать условия программно, особенно при вахтовом методе.
Надо вникать в суть проблемы и смотреть как запросы работают.
5 LopesLeonid
 
17.06.20
14:20
отдельно по месяцам правильно считает, а за период нет
6 2S
 
17.06.20
14:29
(5) в этом и фишка, посмотри код.
Для крайнего месяца берется из регистров отработанного времени, раньше - из начислений (или наоборот)
точно пилили, что бралось всегда из одного регистра.
7 LopesLeonid
 
17.06.20
14:30
да там такое сделали

// Расчет по регистру расчета всех месяцев, за исключением последнего.
ДополнитьЗапросВТПоказателейПоРегиструРасчета(Запрос);
// Для последнего месяца собираем данные по данным УчетаРабочегоВремени.
ДополнитьЗапросВТПоказателейПоУчетуВремени(Запрос);
8 LopesLeonid
 
18.06.20
08:47
Не стал в этих запросах, на 1000 строк, разбираться
Сделал формирование периода по месяцам, добавляю каждый месяц отдельной строкой,а потом сворачиваю таблицу с суммированием столбцов.
По месяцам вроде правильно делает.
9 LopesLeonid
 
18.06.20
08:47
не знаю на сколько это правильно
10 LopesLeonid
 
18.06.20
09:00
вот даже функцию скину

Функция ПоказателиСуммированногоУчетаСотрудниковПоМесяцам(МассивСотрудников, Объект)
    
    Таб = Новый ТаблицаЗначений;
    Таб.Колонки.Добавить("НормаЧасов", Новый ОписаниеТипов("Число"));
    Таб.Колонки.Добавить("ОтработаноЧасов", Новый ОписаниеТипов("Число"));
    Таб.Колонки.Добавить("ОтработаноЧасовВПраздники", Новый ОписаниеТипов("Число"));
    Таб.Колонки.Добавить("Переработки", Новый ОписаниеТипов("Число"));
    Таб.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));
    
    ДатаНачало = НачалоМесяца(Объект.ПериодСуммированногоУчетаНачало);
    ДатаКонец = КонецМесяца(Объект.ПериодСуммированногоУчетаОкончание);
    Для ч = 0 По МассивСотрудников.Количество() - 1 Цикл
        датаОтчет = ДатаНачало;
        МассивСотрудников2 = Новый Массив;
        МассивСотрудников2.Добавить(МассивСотрудников[ч]);
        Пока КонецДня(датаОтчет) <= КонецДня(ДатаКонец) Цикл
            
            ТаблицаСотрудников = РасчетЗарплатыРасширенный.ПоказателиСуммированногоУчетаСотрудниковЗаПериод(
                МассивСотрудников2,
                НачалоМесяца(датаОтчет),
                КонецМесяца(датаОтчет));
                
            Для каждого СтрокаТЗ Из ТаблицаСотрудников Цикл
                 ЗаполнитьЗначенияСвойств(Таб.Добавить(), СтрокаТЗ)
            КонецЦикла;
                            
            датаОтчет = КонецМесяца(ДобавитьМесяц(датаОтчет, 1));
        КонецЦикла;
    КонецЦикла;
    Таб.Свернуть("Сотрудник","НормаЧасов, ОтработаноЧасов, ОтработаноЧасовВПраздники, Переработки");    
    ТаблицаСотрудников.Очистить();
    ТаблицаСотрудников = Таб.Скопировать();
    
    Возврат ТаблицаСотрудников;
    
КонецФункции
11 LopesLeonid
 
18.06.20
09:11
ну что, народ, скажете?
работоспособно или нет?
12 LopesLeonid
 
18.06.20
09:11
или может косячно работать
13 LopesLeonid
 
10.07.20
08:43
Долгий способ, надо что то придумать другое)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший