ія шукає неробочі дні в довіднику і поміщає їх в список значень Рез.
Функція НерабочіеДні2 (Дата_Нач, Дата_Кон) Експорт
Запит=Новий Запит;
Запрос.УстановітьПараметр ( ДатаКон raquo ;, Дата_Кон);
Запрос.УстановітьПараметр ( ДатаНач raquo ;, Дата_Нач);
Результат=Запрос.Виполніть ();
ВиборкаДетальниеЗапісі=Результат.Вибрать ();
Рез=Новий ( СпісокЗначеній );
Поки ВиборкаДетальниеЗапісі.Следующій () Цикл
Рез.Добавить(ВыборкаДетальныеЗаписи.НерабДень);
КонецЦікла;
Повернення Рез;
КонецФункции
Процедура ОпределітьКолвоНедельОбщ (). Дана процедура отримує кількість неробочих днів за обраний інтервал.
Процедура ОпределітьКолвоНедельОбщ ()
НерабочіеДніОбщ=НерабочіеДні2 (ДатаВидач1, МаксДата);
КонецПроцедури
Функція НерабочійДень (День). Ця функція перевіряє евляется Чи день неробочим. Якщо так, то повертає 1.
Функція НерабочійДень (День)
Результат=0;
Якщо НерабочіеДніОбщ=Не визначено тоді
ОпределітьКолвоНедельОбщ ();
Інакше
Якщо НерабочиеДниОбщ.НайтиПоЗначению(День)lt;gt;Неопределено тоді
Результат=1;
КонецЕсли;
КонецЕсли;
Повернення Результат;
КонецФункции
Функція НерабочіеДніРаспісаніеНеделя (Дата1, Дата2). Функція отримує кількість неробочих днів в період між Дата1 і Дата2.
Функція НерабочіеДніРаспісаніеНеделя (Дата1, Дата2)
Колві=0;
Якщо НерабочіеДніОбщ=Не визначено тоді
ОпределітьКолвоНедельОбщ ();
Якщо ((День_ gt;=Дата1) і (День_ lt;=Дата2)) тоді
Колві=Колві + 1;
КонецЕсли;
Інакше
День_=НерабочіеДніОбщ [а] .Значеніе;
Якщо ((День_ gt;=Дата1) і (День_ lt;=Дата2)) тоді
Колві=Колві + 1;
КонецЕсли;
КонецЕсли;
Повернення Колві;
КонецФункции
Функція РасчетЗанятоГруппой (ДатаВидач1, Дата2, Група). Ця функція дає можливість отримати групу і день, в який група зайнята.
Функція РасчетЗанятоГруппой (ДатаВидач1, Дата2, Група)
Результ=0;
//ЗанГруппи (поля - група, дні)
Рез=ЗанГруппи.Найті (Група, Група );
Якщо Рез lt; gt; Не визначено тоді
Дні=Рез [0] [1];
Довжина=Дні.Колічество () - 1;
Для а=0 по Довжина цикл
День_=Дні [а];
Якщо ((День_ gt;=ДатаВидач1) і (День_ lt;=Дата2)) тоді
Результ=Результ + 1;
КонецЕсли;
КонецЦікла;
КонецЕсли;
Повернення Результ;
КонецФункции
Функція ОпределітьКолвоНедель (Предмет, Група). Вона визначає за скільки тижнів починаючи з зазначеного дня необхідно видати предмет.
Функція ОпределітьКолвоНедель (Предмет, Група)
КолвоДней=(Предмет.Дата_кон-ДатаВыдач1)/(60*60*24);
Якщо НерабочіеДніОбщ=Не визначено тоді
ОпределітьКолвоНедельОбщ ();
КолвоПраздников=НерабочиеДниРасписаниеНеделя(ДатаВыдач1, Предмет.Дата_кон);
Інакше
КолвоПраздников=НерабочиеДниРасписаниеНеделя(ДатаВыдач1, Предмет.Дата_кон);
КонецЕсли;
//Різниця=КолвоДней-КолвоПраздніков-КолвоВиход;
Різниця=КолвоДней-КолвоПраздніков;
Різниця=Різниця/7;
Повернення Різниця;
КонецФункции
Функція ВсегоОсталось (Викладач). Ця функція визначає, скільки годин залишилося видати викладачу.
Функція ВсегоОсталось (Викладач)
ПеремРезульт, стр;
Результ=0;
Рез=ПреподавателіВсе.Найті (Викладач, Викладач );
...