Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 июл 2024, 07:03

Запись не верна! Период не может быть пустым!

Автор MariaByzowa, 16 мая 2023, 21:05

0 Пользователей и 1 гость просматривают эту тему.

MariaByzowa

Добрый день! При заполнении обработки появляется ошибка. Не могу понять , какой период не задан, дата начала и окончания задана



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

      Дат = Дат + ЧислоСекундВСутках;
   КонецЦикла;
    Набор.Записать();
КонецПроцедуры


Afinogen

у периодического регистра сведений есть реквизит - период, он у вас не заполнен

Теги:
Рейтинг@Mail.ru

Поиск