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