Имя: Пароль:
1C
1С v8
Неверные значения выбранной строки
,
0 Bukasoid
 
05.12.15
00:24
Есть форма справочника, в ней табличная часть с таблицей значений. При двойном щелчке на строку открывается форма элемента другого справочника. Заношу изменения, закрываю, все обновляется, но при повторном выборе этой строки выскакивает ошибка "Индекс находится за пределами массива", в параметр "ВыбраннаяСтрока" обработчика события Выбор передается № выбранной строки + кол-во строк(т.е. если в таблице 2 строки, то первый раз передастся 0, а при повторном выборе той же строки - 2)
Подскажите, в чем может быть проблема?
Пробовал очищать таблицу перед повторным заполнением - не помогает.

P.S. Извиняюсь за корявое объяснение
1 Bukasoid
 
05.12.15
00:26
Вот кусок кода с обработчиками:

&НаСервере
Процедура ОбновитьСправки(Значение = Неопределено, Параметры = Неопределено)
    Запрос = Новый Запрос("ВЫБРАТЬ
                          |    Справки.Ссылка,
                          |    Справки.ДатаНач,
                          |    Справки.ДатаКон
                          |ИЗ
                          |    Справочник.Справки КАК Справки
                          |ГДЕ
                          |    Справки.ФизЛицо = &ФизЛицо");
    Запрос.УстановитьПараметр("ФизЛицо", Объект.Ссылка);
    Выборка = Запрос.Выполнить().Выбрать();
    Счетчик = 0;
    Справки.Очистить();
    ЭтаФорма.Справки.Очистить();
    Пока Выборка.Следующий() Цикл
        Счетчик             = Счетчик + 1;
        СтрокаТЗ             = Справки.Добавить();
        СтрокаТЗ.Номер         = Счетчик;
        СтрокаТЗ.ДатаНач     = Выборка.ДатаНач;
        СтрокаТЗ.ДатаКон     = Выборка.ДатаКон;
        СтрокаТЗ.Ссылка     = Выборка.Ссылка;
    КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура СправкиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    ПараметрыФормы = Новый Структура("Ключ",ЭтаФорма.Справки[ВыбраннаяСтрока].Ссылка) ;
    Форма = ПолучитьФорму("Справочник.Справки.ФормаОбъекта", ПараметрыФормы);
    Форма.ОписаниеОповещенияОЗакрытии = Новый ОписаниеОповещения("ОбновитьСправки", ЭтаФорма);
    Форма.Открыть();
КонецПроцедуры
2 Сергиус
 
05.12.15
00:43
(0)У тебя в форме ТЧ какого справочника? Справки или другого?
3 Сергиус
 
05.12.15
00:48
+(2)А вообще, скорее всего проблема вот в этом месте:

ЭтаФорма.Справки[ВыбраннаяСтрока], т.к. ВыбраннаяСтрока это не индекс строки, а ее идентификатор. Т.е. надо использовать ЭтаФорма.Справки.НайтиПоИдентификатору(ВыбраннаяСтрока).
4 Bukasoid
 
05.12.15
22:23
(3) Спасибо, проблема решилась
2 + 2 = 3.9999999999999999999999999999999...