Как программно получить отработано дней или часов в 1с зуп 3.1? | Форум Программирование в ЗУП 3.1

Форум

Добро пожаловать на «ЗУП по зубам» — Форум по ЗУП 3.1 на платформе 1С 8.3!

Задайте вопрос и специалисты-консультанты постараются вам помочь!

2 ответ(ов) в теме
ZupMan
не в сети 6 часов
На сайте с 16.03.2019
Администратор
Тем 141
Сообщения 241
1
16:05

Чтобы программно получить отработано дней или часов в 1с зуп 3.1, вставьте в свою внешнюю обработку следующий код:

	ДатаНачала=ДатаВывода;
	
	МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
	
	МассивСотрудников = Новый Массив;
	МассивСотрудников.Добавить(Сотрудник);
	
	СоздатьВТСотрудники(МенеджерВременныхТаблиц, МассивСотрудников, ДатаНачала);

    ПараметрыПолученияДанных = УчетРабочегоВремениРасширенный.ПараметрыДляЗапросВТДанныеУчетаВремениИСостоянийСотрудников();
    ПараметрыПолученияДанных.ДатаНачала = ДатаВывода;
    ПараметрыПолученияДанных.ДатаОкончания = КонецМесяца(ДатаНачала);
    
    ПараметрыПолученияДанных.МесяцДатаНачала = ДатаВывода;
    ПараметрыПолученияДанных.МесяцДатаОкончания = КонецМесяца(ДатаНачала);
    ПараметрыПолученияДанных.ДатаАктуальности = ТекущаяДата();
    
    УчетРабочегоВремениРасширенный.СоздатьВТДанныеУчетаВремениИСостоянийСотрудников(МенеджерВременныхТаблиц, Истина, ПараметрыПолученияДанных);
    ОтработаноТЗ = МенеджерВременныхТаблиц.Таблицы.Найти("ВТДанныеУчетаВремениИСостоянийСотрудников").ПолучитьДанные().Выгрузить();
    ОтработаноТЗ.Сортировать("Дата");
	
	ДниОтработано=0;
	Для Каждого СтрокаОтработаноТЗ из ОтработаноТЗ Цикл
		Если СокрЛП(СтрокаОтработаноТЗ.ВидУчетаВремени)="Явка" Тогда 
			Если Объект.СуммированныйУчетРабочегоВремени Тогда
				ДниОтработано=ДниОтработано+СтрокаОтработаноТЗ.Часы;
			Иначе	
		        ДниОтработано=ДниОтработано+СтрокаОтработаноТЗ.Дни;
			КонецЕсли;	
		КонецЕсли;	
	КонецЦикла;

0
ZupMan
не в сети 6 часов
На сайте с 16.03.2019
Администратор
Тем 141
Сообщения 241
2
16:59

Еще вариант получения отработанных дней/часов из регистра накопления ОтработанноеВремяПоСотрудникам

	СписокОсновныхВР=Новый СписокЗначений;
	СписокОсновныхВР.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("100"));
	СписокОсновныхВР.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("101"));
	СписокОсновныхВР.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("102"));
	СписокОсновныхВР.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("103"));
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ОтработанноеВремяПоСотрудникам.Период КАК Период,
		|	ОтработанноеВремяПоСотрудникам.ФизическоеЛицо КАК ФизическоеЛицо,
		|	ОтработанноеВремяПоСотрудникам.Сотрудник КАК Сотрудник,
		|	ОтработанноеВремяПоСотрудникам.Начисление КАК Начисление,
		|	ОтработанноеВремяПоСотрудникам.ОтработаноДней КАК ОтработаноДней,
		|	ОтработанноеВремяПоСотрудникам.ОтработаноЧасов КАК ОтработаноЧасов,
		|	ОтработанноеВремяПоСотрудникам.ГруппаНачисленияУдержанияВыплаты КАК ГруппаНачисленияУдержанияВыплаты,
		|	ОтработанноеВремяПоСотрудникам.ПериодДействия КАК ПериодДействия
		|ИЗ
		|	РегистрНакопления.ОтработанноеВремяПоСотрудникам КАК ОтработанноеВремяПоСотрудникам
		|ГДЕ
		|	ОтработанноеВремяПоСотрудникам.Период >= &ДатаНачала
		|	И ОтработанноеВремяПоСотрудникам.Период <= &ДатаОкончания
		|	И ОтработанноеВремяПоСотрудникам.Сотрудник = &Сотрудник
		|	И ОтработанноеВремяПоСотрудникам.Начисление В(&СписокОсновныхВР)";
	
	Запрос.УстановитьПараметр("ДатаНачала", НачалоМесяца(ДатаВывода));
	Запрос.УстановитьПараметр("ДатаОкончания", КонецМесяца(ДатаВывода));
	Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
	Запрос.УстановитьПараметр("СписокОсновныхВР", СписокОсновныхВР);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	ДниОтработано=0;
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Если Объект.СуммированныйУчетРабочегоВремени Тогда
			ДниОтработано=ДниОтработано+ВыборкаДетальныеЗаписи.ОтработаноЧасов;
		Иначе	
			ДниОтработано=ДниОтработано+ВыборкаДетальныеЗаписи.ОтработаноДней;
		КонецЕсли;
	КонецЦикла;

0
Вы не имеете права на публикацию сообщений в этой теме