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

Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)

Автор programmister, 23 июл 2018, 10:44

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

programmister

 Помогите исправить ошибку

Запрос = Новый Запрос;
      Запрос.Текст =
      "ВЫБРАТЬ
      |   ОтклоненияВГрафиках.ВидОтклонения,
      |   ОтклоненияВГрафиках.ДатаНачала,
      |   ОтклоненияВГрафиках.ДатаОкончания
      |ИЗ
      |   РегистрСведений.ОтклоненияВГрафиках КАК ОтклоненияВГрафиках
      |ГДЕ
      |   ОтклоненияВГрафиках.Сотрудник = &Сотрудник
      |   И ОтклоненияВГрафиках.Организация = &Организация
      |   И ОтклоненияВГрафиках.Регистратор.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания";
      Запрос.УстановитьПараметр("Сотрудник",Строка.ФИО);
      Запрос.УстановитьПараметр("Организация",Организация);
      Запрос.УстановитьПараметр("ДатаНачала",НачалоМесяца(ЭлементыФормы.ДатаПериода.Значение));
      Запрос.УстановитьПараметр("ДатаОкончания",КонецМесяца(ЭлементыФормы.ДатаПериода.Значение));
      ТЗ = Запрос.Выполнить().Выбрать();
      
     ТЗ = Запрос.Выполнить().Выбрать();
        
    Пока ТЗ.Следующий() Цикл
   
      Для Номер = 1 По 31 Цикл
         Колонка = Строка["Колонка" + Номер];
                     
         
         Если (Номер >= ДЕНЬ(ТЗ.ДатаНачала)) и (Номер <= ДЕНЬ(ТЗ.ДатаОкончания)) и (Колонка = "я") Тогда
               Колонка = НРег(Лев(ТЗ.ВидОтклонения,2));
               Строка["Колонка" + Номер] = Колонка;
             
       
         Если Колонка = "я" Тогда
          ф = ф + 1;
          ЧМ = ЧМ + Строка["Время" + Номер];
         
      ИначеЕсли Колонка = "бс" Тогда
          бс = бс+1;
Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)
      Для Номер = 1 По 31 Цикл
         

alex0402

Цитата: programmister от 23 июл 2018, 10:44бс = бс+1;

бс до этой строки не присвоено никакое значение, соответственно бс = неопределено, а к неопределено не может быть прибавлена единица ....
Спасибо за Сказать спасибо

programmister

Для Каждого Строка Из ТабличноеПоле1 Цикл
     ф = 0; //дни месяца
      от = 0; //дни отпуска
      бл = 0;   //дни болезни
      бс = 0;   //дни без содержания
      ко = 0; //дн командировки
      ЧМ = 0;  //часы месяца
      ЧМ1 = 0; //часы 1 половина
      ЧМ2 = 0; //часы 2 половина
      ДМ1 = 0; //дни 1 половина
      ДМ2 = 0; //дни 2 половина
    
    
    
     
      Запрос = Новый Запрос;
      Запрос.Текст =
      "ВЫБРАТЬ
      |   ОтклоненияВГрафиках.ВидОтклонения,
      |   ОтклоненияВГрафиках.ДатаНачала,
      |   ОтклоненияВГрафиках.ДатаОкончания
      |ИЗ
      |   РегистрСведений.ОтклоненияВГрафиках КАК ОтклоненияВГрафиках
      |ГДЕ
      |   ОтклоненияВГрафиках.Сотрудник = &Сотрудник
      |   И ОтклоненияВГрафиках.Организация = &Организация
      |   И ОтклоненияВГрафиках.Регистратор.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания";
      Запрос.УстановитьПараметр("Сотрудник",Строка.ФИО);
      Запрос.УстановитьПараметр("Организация",Организация);
      Запрос.УстановитьПараметр("ДатаНачала",НачалоМесяца(ЭлементыФормы.ДатаПериода.Значение));
      Запрос.УстановитьПараметр("ДатаОкончания",КонецМесяца(ЭлементыФормы.ДатаПериода.Значение));
      ТЗ = Запрос.Выполнить().Выбрать();
      
     ТЗ = Запрос.Выполнить().Выбрать();
     //+
   
   
    Пока ТЗ.Следующий() Цикл
   
      Для Номер = 1 По 31 Цикл
         Колонка = Строка["Колонка" + Номер];
         
                   
         //Если ТЗ.Количество() > 0 Тогда
         Если (Номер >= ДЕНЬ(ТЗ.ДатаНачала)) и (Номер <= ДЕНЬ(ТЗ.ДатаОкончания)) и (Колонка = "я") Тогда
               Колонка = НРег(Лев(ТЗ.ВидОтклонения,2));
               Строка["Колонка" + Номер] = Колонка;
               //Строка["Время" + Номер] = 0;
        // КонецЕсли;
         Если Колонка = "я" Тогда
          ф = ф + 1;
          ЧМ = ЧМ + Строка["Время" + Номер];
         
      ИначеЕсли Колонка = "бс" Тогда
          бс = бс+1;
         
      ИначеЕсли Колонка = "от" Тогда
          от = от +1;
      
       ИначеЕсли Колонка = "бл" Тогда
          бл = бл + 1;
       ИначеЕсли Колонка = "ко" Тогда
          ко = ко+1;
       КонецЕсли;
      
       Если Номер = 15 Тогда
          ЧМ1 = ЧМ;
          ДМ1 = ф;
       КонецЕсли;

         
         
       КонецЕсли;
         
      
            КонецЦикла;
      //
//      Строка.ОтработаноМесяцДней = ф;
      Строка.Отпуск = от;
      Строка.Болезнь = бл;
      Строка.ОтпускБезСодержания = бс;
      Строка.Командировка = ко;
      //Строка.ОтработаноМесяцЧасов = ЧМ;
//      Строка.Отработано1дней = ДМ1;
     // Строка.Отработано1часов = ЧМ1;
     // Строка.Отработано2дней = ф - ДМ1;
     // Строка.Отработано2часов = ЧМ - ЧМ1;
      
      
      
   КонецЦикла;
       
       
   //+   
КонецЦикла;


alex0402

Спасибо за Сказать спасибо

programmister

Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)
      Для Номер = 1 По 31 Цикл

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск