суббота, 21 февраля 2015 г.

Алгоритм доработка обработки заполнение графика

1) Добавляем реквизит "График" на форму.
2)  Добавляем этот реквизит в параметры процедурыОбработкаОбъект.ЗаполнитьГрафик(ВыборПериода.ДатаНачала, ВыборПериода.ДатаОкончания, ВыходныеДни, График);
3) Дорабатываем процедуру (Изменения жирным)

Процедура ЗаполнитьГрафик(ДатаНачала, ДатаОкончания, ВыходныеДни, График) Экспорт

Набор = РегистрыСведений.ГрафикиРаботы.СоздатьНаборЗаписей();
Набор.Отбор.График.Установить(График);

Набор.Прочитать();

ЧислоСекундВСутках = 86400;

Дат = ДатаНачала;
Для к = 0 По Набор.Количество()-1 Цикл

Запись = Набор[к];
Если Запись.Дата < ДатаНачала Тогда
   Продолжить;
ИначеЕсли Запись.Дата =Дат Тогда
  Запись.График = График;

Если Найти(ВыходныеДни, Строка(ДеньНедели(Дат))) Тогда
Запись.Значение = 0;
Иначе        
Запись.Значение = 1;
КонецЕсли;
Дат = Дат + ЧислоСекундВСутках;
Иначе
Пока Дат < Мин(Запись.Дата, ДатаОкончания) Цикл
НоваяЗапись = Набор.Добавить();
НоваяЗапись.Дата = Дат;
НоваяЗапись.График = График;
Если Найти(ВыходныеДни, Строка(ДеньНедели(Дат))) Тогда


НоваяЗапись.Значение = 0;
Иначе        
НоваяЗапись.Значение = 1;
КонецЕсли;
Дат = Дат + ЧислоСекундВСутках;
КонецЦикла;
Если Запись.Дата > ДатаОкончания Тогда
Прервать;
Иначе
Запись.График = График;

Если Найти(ВыходныеДни, Строка(ДеньНедели(Дат))) Тогда
Запись.Значение = 0;
Иначе        
Запись.Значение = 1;
КонецЕсли;
КонецЕсли;
Дат = Дат + ЧислоСекундВСутках;
КонецЕсли;
КонецЦикла;
Набор.Записать();

Пока Дат <= ДатаОкончания Цикл
Запись = Набор.Добавить();
Запись.Дата = Дат;
Запись.График = График;

Если Найти(ВыходныеДни, Строка(ДеньНедели(Дат))) Тогда
Запись.Значение = 0;
Иначе        
Запись.Значение = 1;
КонецЕсли;
Дат = Дат + ЧислоСекундВСутках;
КонецЦикла;
Набор.Записать();
КонецПроцедуры

Комментариев нет:

Отправить комментарий