Имя: Пароль:
1C
1С v8
индекс находится за границами массива
0 Ilya Nikolaevich
 
31.07.13
12:48
Документооборот
ввожу информацию в справочник.корреспонденты.ТЧ.оборудование
есть три поля : наименование, марка, номер
наименование забираю из справочника оборудование
при окончании редактирования поля наименование выдает ошибку индекс находится за границами массива

код: &НаКлиенте
Процедура Оборудование1ПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
    мИнвентарныйНомер = "";
    СписокЛицензиатов = Новый СписокЗначений;
    ВыполнитьПроверку(Элемент.ТекущаяСтрока, мИнвентарныйНомер, СписокЛицензиатов);
    
    Для каждого Эл из СписокЛицензиатов Цикл
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Введенный инвентарный номер: " + мИнвентарныйНомер + " уже зарегистрирован у лицензиата " + Эл.Значение;
        Сообщение.КлючДанных = Эл.Значение;
        Сообщение.Сообщить();
    КонецЦикла;
    
КонецПроцедуры



&НаСервере
Процедура ВыполнитьПроверку(ИндексСтроки, мИнвентарныйНомер, СписокЛицензиатов)
        
    мИнвентарныйНомер = Объект.Оборудование[ИндексСтроки].ИнвентарныйНомер;
    Если ЗначениеЗаполнено(мИнвентарныйНомер) Тогда
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                       |    КорреспондентыОборудование.Ссылка КАК Лицензиат
                       |ИЗ
                       |    Справочник.Корреспонденты.Оборудование КАК КорреспондентыОборудование
                       |ГДЕ
                       |    КорреспондентыОборудование.ИнвентарныйНомер = &ИнвентарныйНомер
                       |    И НЕ КорреспондентыОборудование.Ссылка = &Ссылка";
        
        Запрос.УстановитьПараметр("ИнвентарныйНомер", мИнвентарныйНомер);
        Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
        
        Результат = Запрос.Выполнить();
        Выборка = Результат.Выбрать();
        
        Пока Выборка.Следующий() Цикл
            СписокЛицензиатов.Добавить(Выборка.Лицензиат);             
        КонецЦикла;
    КонецЕсли;
    
    
КонецПроцедуры
1 Капитан О
 
31.07.13
12:49
и чо?
2 ДенисЧ
 
31.07.13
12:51
Угадаю строку с ошибкой за 500 баксов!
3 zladenuw
 
31.07.13
12:52
(2) лучше фунты :) курс радует
4 ДенисЧ
 
31.07.13
12:52
(3) Уболтал. За 5 кг чистого золота...
5 Dethmont
 
31.07.13
12:53
Подозреваю что ошибка тут
мИнвентарныйНомер = Объект.Оборудование[ИндексСтроки].ИнвентарныйНомер;

Должно быть наверное:
ВыполнитьПроверку(Элемент.ТекущаяСтрока-1, мИнвентарныйНомер, СписокЛицензиатов);
6 zladenuw
 
31.07.13
12:54
(5) неа. надо так

мИнвентарныйНомер = Объект.Оборудование[Оборудование.Индекс(ИндексСтроки)].ИнвентарныйНомер;
7 zladenuw
 
31.07.13
12:55
(6) только там надо не ИдексСтроки название, а текСтрока. читать СП нуна. про ТЧ документа
Программист всегда исправляет последнюю ошибку.