Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЗаполнитьПланировщикНаСервере();
Планировщик.ЕдиницаПериодическогоВарианта = ТипЕдиницыШкалыВремени.Час;
Планировщик.КратностьПериодическогоВарианта = 24;
Планировщик.ОтступСНачалаПереносаШкалыВремени = 8;
Планировщик.ОтступСКонцаПереносаШкалыВремени = 9;
Планировщик.ВыравниватьГраницыЭлементовПоШкалеВремени = Ложь;
КонецПроцедуры
Процедура ЗаполнитьПланировщикНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| УчебныйДеньУроки.Ссылка.Дата КАК Дата,
| УчебныйДеньУроки.НомерСтроки КАК НомерУрока,
| УчебныйДеньУроки.Предмет.Представление КАК Предмет
|ИЗ
| Документ.УчебныйДень.Уроки КАК УчебныйДеньУроки
|
|УПОРЯДОЧИТЬ ПО
| Дата,
| НомерУрока";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
ДатаНачала = НачалоДня(Выборка.Дата) + НачалоУрока(Выборка.НомерУрока);
ДатаОкончания = НачалоДня(Выборка.Дата) + КонецУрока(Выборка.НомерУрока);
НовыйЭлемент = Планировщик.Элементы.Добавить(ДатаНачала, ДатаОкончания);
НовыйЭлемент.Текст = Выборка.Предмет;
КонецЦикла;
КонецПроцедуры
Функция НачалоУрока(НомерУрока)
Если НомерУрока = 1 Тогда
Возврат 8 * 60 * 60 + 30 * 60; // 08:30
ИначеЕсли НомерУрока = 2 Тогда
Возврат 9 * 60 * 60 + 30 * 60; // 09:30
ИначеЕсли НомерУрока = 3 Тогда
Возврат 10 * 60 * 60 + 30 * 60; // 10:30
ИначеЕсли НомерУрока = 4 Тогда
Возврат 11 * 60 * 60 + 30 * 60; // 11:30
ИначеЕсли НомерУрока = 5 Тогда
Возврат 12 * 60 * 60 + 35 * 60; // 12:35
ИначеЕсли НомерУрока = 6 Тогда
Возврат 13 * 60 * 60 + 30 * 60; // 13:30
ИначеЕсли НомерУрока = 7 Тогда
Возврат 14 * 60 * 60 + 25 * 60; // 14:25
Иначе
Возврат 0;
КонецЕсли;
КонецФункции
Функция КонецУрока(НомерУрока)
Если НомерУрока = 1 Тогда
Возврат 9 * 60 * 60 + 15 * 60; // 09:15
ИначеЕсли НомерУрока = 2 Тогда
Возврат 10 * 60 * 60 + 15 * 60; // 10:15
ИначеЕсли НомерУрока = 3 Тогда
Возврат 11 * 60 * 60 + 15 * 60; // 11:15
ИначеЕсли НомерУрока = 4 Тогда
Возврат 12 * 60 * 60 + 15 * 60; // 12:15
ИначеЕсли НомерУрока = 5 Тогда
Возврат 13 * 60 * 60 + 20 * 60; // 13:20
ИначеЕсли НомерУрока = 6 Тогда
Возврат 14 * 60 * 60 + 15 * 60; // 14:15
ИначеЕсли НомерУрока = 7 Тогда
Возврат 15 * 60 * 60 + 10 * 60; // 15:10
Иначе
Возврат 0;
КонецЕсли;
КонецФункции