Имя: Пароль:
1C
 
Заполнение графика в расчетных механизмах
0 Tolstiy Beremenniy
 
28.11.18
07:25
Подскажите пожалуйста, по смыслу этой обработки?
Она производит заполнение графика.
я разбираюсь сам по смыслу. Но хотелось бы и почитать общее
описание, общее понимаине которое есть. Так как задача эта
регулярная как я понимаю.

//
Процедура ЗаполнитьГрафик(ДатаНачала, ДатаОкончания, ВыходныеДни, ГрафикРаботы) Экспорт
    Набор = РегистрыСведений.ГрафикиРаботы.СоздатьНаборЗаписей();
    Набор.Прочитать();
    ЧислоСекундВСутках = 86400;
    ДатаУстановки       = ДатаНачала;
    Для к = 0 По Набор.Количество() - 1 Цикл
        Запись = Набор[к];
        Если Запись.Дата < ДатаНачала Тогда
            Продолжить;
        ИначеЕсли Запись.Дата = ДатаУстановки Тогда
            Запись.ГрафикРаботы = ГрафикРаботы;
            Если Найти(ВыходныеДни, Строка(ДеньНедели(ДатаУстановки))) Тогда
                Запись.Значение = 0;
            Иначе
                Запись.Значение = 8;
            КонецЕсли;
            ДатаУстановки = ДатаУстановки + ЧислоСекундВСутках;  
        Иначе
            Пока ДатаУстановки < Мин(Запись.Дата, ДатаОкончания) Цикл
                НоваяЗапись      = Набор.Добавить();
                НоваяЗапись.Дата = ДатаУстановки;
                Если Найти(ВыходныеДни, Строка(ДеньНедели(ДатаУстановки))) Тогда
                    НоваяЗапись.Значение = 0;
                Иначе
                    НоваяЗапись          = 8;
                КонецЕсли;
                ДатаУстановки = ДатаУстановки + ЧислоСекундВСутках;
            КонецЦикла;
            Если Запись.Дата > ДатаОкончания Тогда
                Прервать;
            Иначе
                Запись.ГрафикРаботы = ГрафикРаботы;
                Если Найти(ВыходныеДни, Строка(ДеньНедели(ДатаУстановки))) Тогда
                    Запись.Значение = 0;
                Иначе
                    Запись.Значение = 8;
                КонецЕсли;
            КонецЕсли;
            ДатаУстановки = ДатаУстановки + ЧислоСекундВСутках;
        КонецЕсли;
    КонецЦикла;
    Набор.Записать();
    Пока ДатаУстановки <= ДатаОкончания Цикл
        Запись        = Набор.Добавить();
        Запись.Дата = ДатаУстановки;
        Запись.ГрафикРаботы = ГрафикРаботы;
        Если Найти(ВыходныеДни, Строка(ДеньНедели(ДатаУстановки))) Тогда
            Запись.Значение = 0;
        Иначе
            Запись.Значение = 8;
        КонецЕсли;
        ДатаУстановки = ДатаУстановки + ЧислоСекундВСутках;
    КонецЦикла;
    Набор.Записать();
КонецПроцедуры
//
1 Tolstiy Beremenniy
 
28.11.18
07:54
Ну в принципе понятно. Он заполняет значением 8.
Ресурс значение у регистра сведений. В будние дни.
И не заполняет в выходные дни.
2 seevkik
 
28.11.18
08:39
Полчаса ушло?)