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

Таблица значений на форме неправильно возвращает номер текущей строки

Автор IgorJ, 25 июн 2013, 19:49

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

IgorJ

На форме есть таблица значений с одним реквизитом "Код". Заполняю, очищаю таблицу.... При просмотре номера текущей строки таблицы значений возвращаются числа больше количества строк этой таблицы. С каждым очищением и последующей загрузкой это номер текущей строки ростет! Это конечно пример , урезанный максимально. Поделитесь соображениями - очень нужно!!!! 
&НаКлиенте
Процедура ЗаполнитьТаблицу(Команда)
        ЗаполнитьТаблицуНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьТаблицуНаСервере()
       Для i=1 По 10 Цикл
              q=Объект.ТабличнаяЧасть1.Добавить();
                q.Код=i
       КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура ОчиститьТаблицу(Команда)
      ОчиститьТаблицуНаСервере();
КонецПроцедуры

&НаСервере
Процедура ОчиститьТаблицуНаСервере()
      Всего=объект.ТабличнаяЧасть1.Количество();
      Если Всего>0 Тогда
                 Для i=0 По Всего-1 Цикл
                            объект.ТабличнаяЧасть1.Удалить(Всего-1-i);
               КонецЦикла;
      КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Справка(Команда)
      Сообщить(Элементы.ТабличнаяЧасть1.ТекущаяСтрока);
      Сообщить(Объект.ТабличнаяЧасть1.Количество());
КонецПроцедуры

GRADUS

Все правильно, ты у формы спрашиваешь под каким номером создавалась строка в элементе. Он не может быть удален или понижен.
Создал, значит +1

Если надо узнать тек строку, обращайся примерно так

Элементы.ТабличнаяЧасть1.ТекущиеДанные.НомерСтроки

IgorJ

Элементы.ТабличнаяЧасть1.ТекущиеДанные.НомерСтроки - Это действительно работает. Номер текущей строки мне нужен для установки курсора на нужную строку таблицы. Если номера текущих строк постоянно изменяются - как же поставить курсор на нужную позицию???? И как использовать "ТекущиеДанные.НомерСтроки"? На экране мне нужно установить курсор на 3 строку(к примеру), а по данным "текущей строки " это 20 или 33.

GRADUS

Цитата: IgorJ от 25 июн 2013, 20:38
Элементы.ТабличнаяЧасть1.ТекущиеДанные.НомерСтроки - Это действительно работает. Номер текущей строки мне нужен для установки курсора на нужную строку таблицы. Если номера текущих строк постоянно изменяются - как же поставить курсор на нужную позицию???? И как использовать "ТекущиеДанные.НомерСтроки"? На экране мне нужно установить курсор на 3 строку(к примеру), а по данным "текущей строки " это 20 или 33.

1с стандартными средствами курсор мыши никуда не устанавливает, да и никому никогда не нужно это, как минимум НЕУДОБНО!

Если надо взять данные, их надо брать из объекта, как их найти уже показал. В экстрасенсов играть никто не будет, скриншот и реальную проблему.

Если уж вообще надо, то

НужнаяСтрока = 22;
Искать = ИСтина;
Пока Искать Цикл
Попытка
Элементы.ТабличнаяЧасть1.ТекущаяСтрока = НужнаяСтрока;
Искать = Ложь;
Исключение;
НужнаяСтрока = НужнаяСтрока - 1;
КонецПопытки;
КонецЦикла;


Я бы сделал самый обычный поиск, да и все.

IgorJ

В экстрасенсов не верю. Проблема в следующим: Нужно установить текущую строку на 3 позицию .
Элементы.ТабличнаяЧасть1.ТекущаяСтрока =3        Работает только при первой загрузке таблицы значений. После перезагрузок у 3 строки на экране на самом деле номер уже изменившийся. И чтобы сделать текущей 3 строку может потребоваться . Элементы.ТабличнаяЧасть1.ТекущаяСтрока =3333. Мне нужен этот 3333 номер. 

GRADUS

А попробуй ЭтаФорма.Обновить() :bleh:

Если не получиться, то 3-яя строка никогда не станет 333.

Кто мешает поиском искать строку? ТЧ.Найти(НужнаяСтрока) Или по значениям искать. Или по номеру строки искать. Последний раз поиграл в экстрасенса.

IgorJ

   ЭтаФорма.ОбновитьОтображениеДанных();  - не помогло
   ЭтаФорма.Обновить();                   - метод не обнаружен.

GRADUS

ТаблицаФормы.Обновить()

Еще раз, не следует привязывать программку к этим индексам.
Спозиционироваться можно по найдя определенные данные в ТЧ, что будет правильнее.

IgorJ

Правельнее и логичнее - ДА!!!!!!
На практике номера строк в ТЧ и номера строк на экране не совпадают (иногда). Если спозиционировать на нужные данные ТЧ - не факт что спозиционируется нужная строка(у меня ни какая не позиционируется, разные диапазоны номеров ТЧ и экрана)

Dethmontt

Нужно поставить курсор на "третью строку" на экране, а не на третью строку таблицы? Так что ли?
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

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

Рейтинг@Mail.ru

Поиск