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

ТЗ.Итог(Колонка.Имя)

Автор Св Ч, 26 сен 2017, 09:14

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

Св Ч

Добрый День! Подскажите, может кто-то знает
ошибка в строке
Строка[Колонка.Имя]=ТЗ.Итог(Колонка.Имя);

т.е. в
ЦитироватьТЗ.Итог(Колонка.Имя)

Цитировать{Обработка.РабочийСтолУниверсал.Форма.Форма.Форма(1211)}: Ошибка при вызове метода контекста (Итог)
                     Строка[Колонка.Имя]=ТЗ.Итог(Колонка.Имя);
по причине:
Недопустимое значение параметра (параметр номер '1') (Колонка не принадлежит коллекции)
код если  Строка.Сотрудник="Итого"  тогда
     если  (  Колонка.Имя="Час_итого"   или Колонка.Имя="Опл_итого"  или Колонка.Имя="Карточки"
               или Колонка.Имя="Удержание"   или Колонка.Имя="Ссуда"  или Колонка.Имя="Доплаты"
               или Колонка.Имя="Штраф"   или Колонка.Имя="Выдача" )  Тогда
         Строка[Колонка.Имя]=ТЗ.Итог(Колонка.Имя);
   
   Этаформа.ЭлементыФормы.ТабличноеПоле_На_проверке[Строка][Колонка.Имя].ЦветФона=цвет_итога;
конецесли;

        конецесли;

в чем проблема?
заранее спасибо за ответ.

ilyay

Посмотрите в отладке Строка и ТЗ, есть ли там Колонка.Имя.

Св Ч


Oldman06

Участок кода, где определяются значения переменных "Колонка" и "ТЗ"? Смутное подозрение, что в ТЗ нет колонки с именем Колонка.Имя

Св Ч


    Для Каждого Строка Из Этаформа.ЭлементыФормы.ТабличноеПоле_На_проверке.Значение Цикл
  //заполняем строки расчета  на каждый день
 
 
  Для Каждого Колонка Из Этаформа.ЭлементыФормы.ТабличноеПоле_На_проверке.Колонки Цикл
 
 
если (Колонка.Имя<>"отм" и Колонка.Имя<>"Сотрудник"
   и Колонка.Имя<>"Час_итого"   и Колонка.Имя<>"Опл_итого"  и Колонка.Имя<>"Карточки"
               и Колонка.Имя<>"Удержание"   и Колонка.Имя<>"Ссуда"  и Колонка.Имя<>"Доплаты"
               и Колонка.Имя<>"Штраф"   и Колонка.Имя<>"Выдача" )  тогда
              если ( Строка.Сотрудник="" или  Строка.Сотрудник=Неопределено или  Строка.Сотрудник=null или  ПустаяСтрока(Строка.Сотрудник)=истина) Тогда
    НайденнаяСтрока = ТЗ.Найти(Отбор_дат_ч2.Получить(Колонка.Имя),"Дат");
                  Если НайденнаяСтрока <> Неопределено Тогда
                     Для Каждого ЭлементМассива из НайденнаяСтрока Цикл
                        если(( НайденнаяСтрока.ДеньНедели =null) или ((ПустаяСтрока(НайденнаяСтрока.ДеньНедели))=истина))  Тогда
   
                        иначе   
                   Строка[Колонка.Имя] =НайденнаяСтрока.ДеньНедели;
        КонецЕсли;
                КонецЦикла;
                  КонецЕсли;
конецесли;
конецесли;
если  Строка.Сотрудник="Итого"  тогда
     если  (  Колонка.Имя="Час_итого"   или Колонка.Имя="Опл_итого"  или Колонка.Имя="Карточки"
               или Колонка.Имя="Удержание"   или Колонка.Имя="Ссуда"  или Колонка.Имя="Доплаты"
               или Колонка.Имя="Штраф"   или Колонка.Имя="Выдача" )  Тогда
   //Строка[Колонка.Имя]=ТЗ.Итог(Колонка.Имя);
   //
   //Этаформа.ЭлементыФормы.ТабличноеПоле_На_проверке[Строка][Колонка.Имя].ЦветФона=цвет_итога;
конецесли;

        конецесли;

        если (Колонка.Имя<>"отм" и Колонка.Имя<>"Сотрудник"
   и Колонка.Имя<>"Час_итого"   и Колонка.Имя<>"Опл_итого"  и Колонка.Имя<>"Карточки"
               и Колонка.Имя<>"Удержание"   и Колонка.Имя<>"Ссуда"  и Колонка.Имя<>"Доплаты"
               и Колонка.Имя<>"Штраф"   и Колонка.Имя<>"Выдача" )  тогда
           если ( Строка.Сотрудник="" или  Строка.Сотрудник=Неопределено или  Строка.Сотрудник=null или  ПустаяСтрока(Строка.Сотрудник)=истина) Тогда
    НайденнаяСтрока = ТЗ.Найти(Отбор_дат_о2.Получить(Колонка.Имя),"Дат");
                Если НайденнаяСтрока <> Неопределено Тогда
                    Для Каждого ЭлементМассива из НайденнаяСтрока Цикл
                      если(( НайденнаяСтрока.ДеньНедели =null) или ((ПустаяСтрока(НайденнаяСтрока.ДеньНедели))=истина))  Тогда
   
                      иначе   
                   Строка[Колонка.Имя] =НайденнаяСтрока.ДеньНедели;
      КонецЕсли;
               КонецЦикла;

 
                КонецЕсли;

   конецесли;
 
конецесли;

 
  если (Колонка.Имя<>"отм" и Колонка.Имя<>"Сотрудник"
   и Колонка.Имя<>"Час_итого"   и Колонка.Имя<>"Опл_итого"  и Колонка.Имя<>"Карточки"
               и Колонка.Имя<>"Удержание"   и Колонка.Имя<>"Ссуда"  и Колонка.Имя<>"Доплаты"
               и Колонка.Имя<>"Штраф"   и Колонка.Имя<>"Выдача"  и (Лев(Колонка.Имя, 1)<>"О") )  тогда

ПараметрыЕжеднев.Вставить("Сотрудник", Строка.Сотрудник);
             ПараметрыЕжеднев.Вставить("Дат", Отбор_дат_ч2.Получить(Колонка.Имя));


НайденныеЕжедневнСтроки = ТЗ.НайтиСтроки(ПараметрыЕжеднев);
             Если НайденныеЕжедневнСтроки <> Неопределено Тогда
         Для Каждого ЭлементМассива из НайденныеЕжедневнСтроки Цикл
                     если(( ЭлементМассива.Часы =null) или ((ПустаяСтрока(ЭлементМассива.Часы))=истина))  Тогда
   
                     иначе   
                   Строка[Колонка.Имя] =ЭлементМассива.Часы;
     КонецЕсли;
             КонецЦикла;

КонецЕсли;
КонецЕсли;

  если (Колонка.Имя<>"отм" и Колонка.Имя<>"Сотрудник"
   и Колонка.Имя<>"Час_итого"   и Колонка.Имя<>"Опл_итого"  и Колонка.Имя<>"Карточки"
               и Колонка.Имя<>"Удержание"   и Колонка.Имя<>"Ссуда"  и Колонка.Имя<>"Доплаты"
               и Колонка.Имя<>"Штраф"   и Колонка.Имя<>"Выдача"  и (Лев(Колонка.Имя, 1)<>"Ч") )  тогда

ПараметрыЕжеднев.Вставить("Сотрудник", Строка.Сотрудник);
             ПараметрыЕжеднев.Вставить("Дат", Отбор_дат_о2.Получить(Колонка.Имя));


НайденныеЕжедневнСтроки = ТЗ.НайтиСтроки(ПараметрыЕжеднев);
             Если НайденныеЕжедневнСтроки <> Неопределено Тогда
         Для Каждого ЭлементМассива из НайденныеЕжедневнСтроки Цикл
                     если(( ЭлементМассива.Часы =null) или ((ПустаяСтрока(ЭлементМассива.Часы))=истина))  Тогда
   
                     иначе   
                   Строка[Колонка.Имя] =ЭлементМассива.Оплата;
     КонецЕсли;
             КонецЦикла;

КонецЕсли;
КонецЕсли;

  конеццикла;
 

//Для Каждого Колонка Из Этаформа.ЭлементыФормы.ТабличноеПоле_На_проверке.Колонки Цикл
//     КонецЦикла;

       
 
//заполняем итоговые строки расчета

      ПараметрыОтбора.Вставить("Сотрудник", Строка.Сотрудник);
      ПараметрыОтбора.Вставить("Признак", "ДеньРасчета");
      НайденныеСтроки = ТЗ.НайтиСтроки(ПараметрыОтбора);
  перем_карточка=0;
  перем_Удержание=0;
      перем_Ссуда=0;
      перем_Доплата=0;
      перем_Оплата_периода=0;
      перем_Выдача=0;

  Если НайденныеСтроки <> Неопределено Тогда
 
       Для Каждого ЭлементМассива из НайденныеСтроки Цикл
                               
   если(( ЭлементМассива.Карточка =null) или ((ПустаяСтрока(ЭлементМассива.Карточка))=истина))  Тогда
   
   иначе   
   перем_карточка=перем_карточка+ число(ЭлементМассива.Карточка);
   конецЕсли;
   если(( ЭлементМассива.Удержание =null) или ((ПустаяСтрока(ЭлементМассива.Удержание))=истина))  Тогда
   
           иначе   

        перем_Удержание=перем_Удержание+ число(ЭлементМассива.Удержание);
   конецЕсли;    
   если(( ЭлементМассива.Ссуда =null) или ((ПустаяСтрока(ЭлементМассива.Ссуда))=истина))  Тогда
   
           иначе   

      перем_Ссуда=перем_Ссуда+ число(ЭлементМассива.Ссуда);
   конецЕсли;    
   если(( ЭлементМассива.Доплата =null) или ((ПустаяСтрока(ЭлементМассива.Доплата))=истина))  Тогда
   
           иначе   

     перем_Доплата=перем_Доплата+ число(ЭлементМассива.Доплата);
   конецЕсли;    
   если(( ЭлементМассива.Оплата_периода =null) или ((ПустаяСтрока(ЭлементМассива.Оплата_периода))=истина))  Тогда
   
           иначе   

     перем_Оплата_периода=перем_Оплата_периода+ число(ЭлементМассива.Оплата_периода);
   конецЕсли;    
   если(( ЭлементМассива.Выдача =null) или ((ПустаяСтрока(ЭлементМассива.Выдача))=истина))  Тогда
   
           иначе   

   перем_Выдача=перем_Выдача+ число(ЭлементМассива.Выдача);
           конецЕсли;    

 
   КонецЦикла;
       
         Строка.Карточки =перем_карточка;
         Строка.Удержание=перем_Удержание;
     Строка.Доплаты =перем_Доплата;
     Строка.Ссуда =перем_Ссуда ;
   //  Строка.Штраф= НайденнаяСтрока.
     Строка.Выдача= перем_Выдача;
    // Строка.Час_итого=НайденнаяСтрока.
     Строка.Опл_итого=перем_Оплата_периода;

    КонецЕсли;
КонецЦикла;

     Этаформа.ЭлементыФормы.ТабличноеПоле_На_проверке.Значение.Сортировать("Сотрудник");
   
   
   



    ОтмеченныеСотрудники = Новый Соответствие;
ОтмеченныеСотрудники[ТабличноеПоле_На_проверке] = Истина;
    ОтмСтр= Новый Соответствие;
    Стр1 = Новый Структура("Строки",ЭлементыФормы.ТабличноеПоле_На_проверке.ТекущаяСтрока);


   

     

t=0;       


 
конецесли;

КонецЕсли;

Oldman06

Все-таки, я склоняюсь к тому, что в ТЗ нет колонки с именем Колонка.Имя. Отладчиком остановитесь на данной строке и посмотрите значение ТЗ.

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

Поиск