Загрузка данных


// Процедура выполняет действие:
//   Расчитать График Работ На Год
//
// Параметры:
//     График - Произвольный 
//     ДатаНачала - Произвольный 
//     ДополненияГрафикаРаботы - Произвольный
//
// Возвращаемое значение:
//    Произвольный
Функция РасчитатьГрафикРаботНаГод(График, ДатаНачала, ДополненияГрафикаРаботы) Экспорт
	Если График <> Null  И График.ВидГрафика = Перечисления.ВидыРабочихГрафиков.ВСмену тогда
		ДатаНачалаОтсчета = НачалоДня(ДатаНачала);
		ДатаОтсчета = График.ДатаОтсчета;
		Если ДатаОтсчета>ДатаНачалаОтсчета тогда
			ДатаНачалаОтсчета = ДатаОтсчета;
		КонецЕсли;
		КоличествоДней = (ДатаНачалаОтсчета + 86400 - ДатаОтсчета)/86400;
		КоличесвтоСтрок = График.РаботаПоСменам.Количество();
		КоличествоДнейВСмене = График.РаботаПоСменам[КоличесвтоСтрок - 1].НомерДня;
		Если КоличествоДней = 0 тогда
			ТекущийДеньИТ_Смены = 1;
		Иначе
			ТекущийДеньИТ_Смены = КоличествоДней%КоличествоДнейВСмене;
			Если ТекущийДеньИТ_Смены = 0 Тогда 
				ТекущийДеньИТ_Смены = КоличествоДнейВСмене;
			КонецЕсли;
		КонецЕсли;
		ОднаСмена = Новый ТаблицаЗначений;
		ОднаСмена.Колонки.Добавить("ДеньИТ_Смены");
		ОднаСмена.Колонки.Добавить("НачалоРаботы");
		ОднаСмена.Колонки.Добавить("КонецРаботы");
		ОднаСмена.Колонки.Добавить("Выходной");
		Для Каждого Смена Из График.РаботаПоСменам Цикл
			ДеньИТ_Смены = Смена.НомерДня;
			РазборИТ_Смены(Смена.Смена, ОднаСмена, ДеньИТ_Смены);	
		КонецЦикла;
		Таблица = ПосменныйГрафик(ОднаСмена, ТекущийДеньИТ_Смены, ДатаНачалаОтсчета, ДополненияГрафикаРаботы);			
		
	Иначе 
		
		Если График <> Null И График.ВидГрафика = Перечисления.ВидыРабочихГрафиков.ПоДнямНедели тогда
			Неделя = График.РабочиеДниЧасы;
			// РабочийДень = Новый Структура;
			РабочаяНеделя = Новый ТаблицаЗначений;
			РабочаяНеделя.Колонки.Добавить("ДеньНедели");
			РабочаяНеделя.Колонки.Добавить("НачалоРаботы");
			РабочаяНеделя.Колонки.Добавить("КонецРаботы");
			Для каждого ДеньНедели Из Неделя Цикл
				Если ДеньНедели.РабочийДень тогда
					Если ДеньНедели.Обед тогда
						
						РабочийДень = РабочаяНеделя.Добавить();
						РабочийДень.ДеньНедели =  ДеньНедели.ДеньНедели;
						РабочийДень.НачалоРаботы =  ДеньНедели.НачалоРаботы;
						РабочийДень.КонецРаботы = ДеньНедели.НачалоОбеда;
						
						РабочийДень = РабочаяНеделя.Добавить();
						РабочийДень.ДеньНедели =  ДеньНедели.ДеньНедели;
						РабочийДень.НачалоРаботы = ДеньНедели.КонецОбеда;
						РабочийДень.КонецРаботы = ДеньНедели.КонецРаботы;
						
					Иначе
						РабочийДень = РабочаяНеделя.Добавить();
						РабочийДень.ДеньНедели = ДеньНедели.ДеньНедели;
						РабочийДень.НачалоРаботы = ДеньНедели.НачалоРаботы;
						РабочийДень.КонецРаботы = ДеньНедели.КонецРаботы;
						
					КонецЕсли;
				КонецЕсли;
			КонецЦикла;
			Таблица = ПоНедельныйГрафик(РабочаяНеделя, График.Календарь, ДатаНачала, ДополненияГрафикаРаботы);
		КонецЕсли;
	КонецЕсли;
	Возврат Таблица;
КонецФункции