7.7 Номер за пределами значения!

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем mari8998, 25 июн 2009.

  1. TopicStarter Overlay
    mari8998
    Offline

    mari8998

    Регистрация:
    31 окт 2007
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    ПОМОГИТЕ !!! Все вроде просто -
    Код:
     ТЗ = СоздатьОбъект("ТаблицаЗначений");
    
    спрПарам = СоздатьОбъект("Справочник.ТехническиеПараметрыПродукцииОЕ");
    спрПарам.ВыбратьЭлементы();
    Пока спрПарам.ПолучитьЭлемент() = 1 Цикл        
    ТЗ.НоваяКолонка();        
    КонецЦикла;                      
    ТЗ.НоваяКолонка("Прибор","Справочник.НоменклатураОпоры");
    
    Колонки = СоздатьОбъект("СписокЗначений");
    
    Док = СоздатьОбъект("Документ");    
    спрНоменклатура = СоздатьОбъект("Справочник.НоменклатураОпоры");
    
    Если спрНоменклатура.ВыбратьЭлементыПоРеквизиту("ГруппаДляТехническихПараметров", ТекГруппа,0,0) = 1 Тогда            
    Пока спрНоменклатура.ПолучитьЭлемент() = 1 Цикл
    Прибор = спрНоменклатура.ТекущийЭлемент();
    
    Если Док.ВыбратьПоЗначению(,,"ПриборОЕ",Прибор) = 1 Тогда
    
    Док.ВыбратьСтроки();
    ТЗ.НоваяСтрока();
    ТЗ.Прибор = Прибор;
    Пока Док.ПолучитьСтроку() = 1 Цикл                    
    НомерРеквизита = Док.НомерРеквизита;
    
    Если ПустоеЗначение(Док.ЗначениеРеквизитаСтрока) = 0 Тогда
    
    
    [color=#FF0000]ТЗ.УстановитьЗначение(ТЗ.НомерСтроки,НомерРеквизита,Док.ЗначениеРеквизитаСтрока);                        
    Если Колонки.Принадлежит(НомерРеквизита) = 0 Тогда
    Колонки.ДобавитьЗначение(НомерРеквизита);
    КонецЕсли;    
    КонецЕсли;
    КонецЦикла;            
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    
    Если Колонки.РазмерСписка() > 0 Тогда
    
    Таб.ВывестиСекцию("Заголовок");
    
    Колонки.Сортировать();    
    Для сч = 1 По Колонки.РазмерСписка() Цикл
    НомерКолонки = Колонки.ПолучитьЗначение(Сч);
    спрПарам.НайтиПоКоду(НомерКолонки);
    ИмяРеквизита = спрПарам.Наименование;
    Если  сч = 1 Тогда
    Таб.ВывестиСекцию("Шапка|Колонка");
    Иначе    
    Таб.ПрисоединитьСекцию("Шапка|Колонка");
    КонецЕсли;
    КонецЦикла;
    
    ТЗ.ВыбратьСтроки();    
    Пока ТЗ.ПолучитьСтроку() = 1 Цикл
    Для сч = 1 По Колонки.РазмерСписка() Цикл
    НомерКолонки = Колонки.ПолучитьЗначение(Сч);
    ЗначениеРеквизита = ТЗ.ПолучитьЗначение(ТЗ.НомерСтроки, НомерКолонки);
    Если  сч = 1 Тогда
    Таб.ВывестиСекцию("Строка|Колонка");
    Иначе    
    Таб.ПрисоединитьСекцию("Строка|Колонка");
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    КонецЕсли;    
    КонецПроцедуры
    
    на красной строке , выдает ошибку Номер за пределами значения! :unsure: :smile: , помогите плиз
  2. sergey
    Offline

    sergey Курильщик

    Регистрация:
    13 апр 2006
    Сообщения:
    365
    Симпатии:
    0
    Баллы:
    26
    Может все-таки вот так?
    Код:
    ТЗ.УстановитьЗначение(Док.НомерСтроки,НомерРеквизита,Док.ЗначениеРеквизитаСтрока);
    
    
    А то вроде строку таблицы значения создаем и тут же к ее номеру пытаемся обратиться...
  3. TopicStarter Overlay
    mari8998
    Offline

    mari8998

    Регистрация:
    31 окт 2007
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    нет , ошибка таже самая , но при переборе строк справочника возникает значительно раньше. Что то здесь не то :unsure:
  4. sergey
    Offline

    sergey Курильщик

    Регистрация:
    13 апр 2006
    Сообщения:
    365
    Симпатии:
    0
    Баллы:
    26
    Тогда отладчик в руки и вперед - мониторить значение. Самый простой способ.
  5. TopicStarter Overlay
    mari8998
    Offline

    mari8998

    Регистрация:
    31 окт 2007
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Да момитоила конечно , номер строки в таблице значений становится равен 2 , почему не пойму и что с этим делать не знаю
  6. sergey
    Offline

    sergey Курильщик

    Регистрация:
    13 апр 2006
    Сообщения:
    365
    Симпатии:
    0
    Баллы:
    26
    Что за конфигурация?
    И вообще в двух словах, что пытаетесь сделать?
  7. TopicStarter Overlay
    mari8998
    Offline

    mari8998

    Регистрация:
    31 окт 2007
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Конфигурация местная , в справочнике Номенклатура опоры есть реквизит Группа для технических параметров, отбираем все элементы справочника , у кот установлен данный реквизит. Сами тех параметры хранятся в документе , выбираем документ по значению текущего значения справочника номенклатура опоры и все параметры пытаемся затолкать в таблицу значений . Ну если в кратце .
  8. sergey
    Offline

    sergey Курильщик

    Регистрация:
    13 апр 2006
    Сообщения:
    365
    Симпатии:
    0
    Баллы:
    26
    А не проще так:
    Код:
    Док = СоздатьОбъект("Документ");        
    спрНоменклатура = СоздатьОбъект("Справочник.НоменклатураОпоры");        
    Если спрНоменклатура.ВыбратьЭлементыПоРеквизиту("ГруппаДляТехническихПараметров", ТекГруппа,0,0) = 1 Тогда
    Пока спрНоменклатура.ПолучитьЭлемент() = 1 Цикл
    Прибор = спрНоменклатура.ТекущийЭлемент();                        
    Если Док.ВыбратьПоЗначению(,,"ПриборОЕ",Прибор) = 1 Тогда
    Док.ВыбратьСтроки();
    Пока Док.ПолучитьСтроку() = 1 Цикл                                        
    ТЗ.НоваяСтрока();
    ТЗ.Прибор = Прибор;                
    ТЗ.НомерРеквизита = Док.НомерРеквизита;
    ТЗ.ЗначениеРеквизита=Док.ЗначениеРеквизитаСтрока;
    КонецЦикла;    
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    
    
    
    Создав предварительно заранее все необходимые колонки в ТЗ.
    А после воспользоваться методом ТЗ.Свернуть ? Если понадобится.
  9. smm
    Offline

    smm Опытный в 1С

    Регистрация:
    19 дек 2008
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    А может так?
    НомерСтрокиТЗ = ТЗ.НомерСтроки;
    ТЗ.УстановитьЗначение(НомерСтрокиТЗ...

    Если не поможет, в отладчике смотреть значение НомерСтрокиТЗ и ТЗ.КоличествоСтрок()

Поделиться этой страницей