Внешняя печатная форма зкгу 3.1 (ТабельУчетаРабочегоВремени)
1С:Зарплата и кадры государственного учреждения 3
Платформа 1С v8.3
Государственные, бюджетные структуры
Бюджетный учет
Внешняя обработка (ert,epf)
Подскажите как поправить во внешней печатной форме табеля учета рабочего времени, чтобы из последней колонки "всего дней (часов) явок надо исключить дни(часы) работы в праздничные и выходные", рядом сделать ещё одну колонку "всего дней(часов) явок в праздничные и выходные" куда будут проставляться праздничные и выходные дни часы.
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Я так понимаю здесь кроется решение, но как это поправить?
Если КлючВарианта = "Форма0504421с2015" Тогда
ОбластьВремяСтрока.Параметры.ДниПерваяПоловина = ?(ВыводитьЯвки, ДниПерваяПоловина, ДниНеявокПерваяПоловина);
ОбластьВремяСтрока.Параметры.ЧасыПерваяПоловина = ?(ВыводитьЯвки, ЧасыПерваяПоловина, ЧасыНеявокПерваяПоловина);
ОбластьВремяСтрока.Параметры.ДниЗаМесяц = ?(ВыводитьЯвки, ДниЗаМесяц, ДниНеявокЗаМесяц);
ОбластьВремяСтрока.Параметры.ЧасыЗаМесяц = ?(ВыводитьЯвки, ЧасыЗаМесяц, ЧасыНеявокЗаМесяц);
Иначе
ОбластьНачисленияСтрока.Параметры.ДниЗаМесяц = ДниНеявокЗаМесяц;
ОбластьНачисленияСтрока.Параметры.ЧасыЗаМесяц = ЧасыНеявокЗаМесяц;
КонецЕсли;
Показать
Я так понимаю тебе нужен Регистр сведений "ДанныеПроизводственногоКалендаря".
Можно и запросом получить день.
ВидДня = <Ссылка на запись в производственном календаре за эту дату>.ВидДня ;
Если ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный
ИЛИ ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий Тогда
"Это рабочий день (разбирайся куда это впихнуть)"
Иначе
Это не рабочий день.
Можно и запросом получить день.
ВидДня = <Ссылка на запись в производственном календаре за эту дату>.ВидДня ;
Если ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный
ИЛИ ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий Тогда
"Это рабочий день (разбирайся куда это впихнуть)"
Иначе
Это не рабочий день.
Не знаю какая структура данных, но подразумеваю, что есть некий регистр с измерением сотрудник, дата, посещение или кол-во часов. Можно сделать так.
Это криво, конечно можно сделать по другому, но просто скопировал, то, что на днях делал. (спать уже хочу)
Так вот. Этим вполне можно пользоваться. Если в эту дату был выходной, то отнимаешь кол-во часов за этот день. Пробегаешься по всем дням, которые интересуют, получаешь кол-во часов без учета выходных и праздников.
Функция ЭтоРабочийДень(Дата)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ДанныеПроизводственногоКалендаря.Дата КАК Дата
|ИЗ
| РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
|ГДЕ
| ДанныеПроизводственногоКалендаря.Дата <= &Дата
| И (ДанныеПроизводственногоКалендаря.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий)
| ИЛИ ДанныеПроизводственногоКалендаря.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный))
|
|УПОРЯДОЧИТЬ ПО
| Дата УБЫВ";
Запрос.УстановитьПараметр("Дата", Дата);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Если Выборка.Дата = Дата Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
Иначе
Возврат Неопределенно;
КонецЕсли;
КонецФункции
ПоказатьЭто криво, конечно можно сделать по другому, но просто скопировал, то, что на днях делал. (спать уже хочу)
Так вот. Этим вполне можно пользоваться. Если в эту дату был выходной, то отнимаешь кол-во часов за этот день. Пробегаешься по всем дням, которые интересуют, получаешь кол-во часов без учета выходных и праздников.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот