Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Очень популярная тема (более 25 ответов) ТабличноеПоле, ОбновитьСтроки(), на последнюю стр. (число прочтений - 9241 )
chicago
Senior Member
****
Отсутствует


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
ТабличноеПоле, ОбновитьСтроки(), на последнюю стр.
06. Июня 2007 :: 15:14
Печать  
Как сделать что бы при:
Код
Выбрать все
ТабПол.ОбновитьСтроки(); 


текущей строкой ставала последняя строка, но если учесть, что до этого вызова "ОбновитьСтроки()" текущая строка была на обекте который уже (в момент вызова) удален?
Спасибо.
  
Наверх
ICQ  
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ТабличноеПоле, ОбновитьСтроки(), на последнюю
Ответ #1 - 06. Июня 2007 :: 15:56
Печать  
Метод ТабличноеПоле::ОбновитьСтроки предназначен для обновления отображаемых в данный момент строк. Он старается сохранить позицию с которой отображается в данный момент набор данных. В общем случае этот метод не изменяет положение текущей строки, за исключением того случая, когда текущей строки уже нет в наборе данных.

Как я понял, задача стоит именно в назначении текущей строки, поэтому надо воспользоваться свойством ТабличноеПоле::ТекущаяСтрока, оно доступно по записи.
Или использовать фукнционал "начального отображения", установить свойство ТабличноеПоле::НачальноеПредставление и инициализировать данные поставщика данных:
а)для объекта ПоставщикДанныхODBC метод Обновить();
б)для объекта ПоставщикДанныхТЗ подобного метода нет, возможно желаемого эффекта можно достич переустанавливая объект отображаемой таблицы значений или переустановить самого поставщика данных в ТП;
  
Наверх
ICQ  
IP записан
 
chicago
Senior Member
****
Отсутствует


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТабличноеПоле, ОбновитьСтроки(), на последнюю
Ответ #2 - 06. Июня 2007 :: 16:18
Печать  
1. Спасибо DmitrO за такое чудо как ТабличноеПоле вообще! Улыбка
2. Что такое "Метод ТабличноеПоле::ОбновитьСтроки..." читал и буду читать, но:

Код
Выбрать все
ТабПол.НачальноеПредставление = 1;
ТабПол.ТекущаяСтрока = "";

ТабПол.ОбновитьСтроки();
 


эфекта не дает...

Рассказываю все по порядку:
1. Была строка в ТП (она же текущая или ТекСтр).
2. Обьект (документ) который соответсвовал этой ТекСтр только что удален, но его еще видно в ТП.
3. Я хочу обновить (интерактивно, по кнопке "Обновить", автообновление ТП не интересует) ТП, но не как "ПоставщикДанныхODBC.Обновить()", а как ТабличноеПоле.ОбновитьСтроки().

Да, "задача стоит именно в назначении текущей строки", но после удаления прежней текущей строки я же не знаю которая была "перед" (сверху) нее.

Спасибо.
  
Наверх
ICQ  
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ТабличноеПоле, ОбновитьСтроки(), на последнюю
Ответ #3 - 06. Июня 2007 :: 16:29
Печать  
так..
Тогда что тебя не устраивает, если просто вызовать только метод ОбновитьСтроки? Строка отображающая только что удаленный документ исчезнет, текущей строкой станет другая, в чем проблема? и причем тут тогда последняя строка в наборе данных?
  
Наверх
ICQ  
IP записан
 
chicago
Senior Member
****
Отсутствует


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТабличноеПоле, ОбновитьСтроки(), на последнюю
Ответ #4 - 06. Июня 2007 :: 16:39
Печать  
DmitrO писал(а) 06. Июня 2007 :: 16:29:
так..
Тогда что тебя не устраивает, если просто вызовать только метод ОбновитьСтроки? Строка отображающая только что удаленный документ исчезнет, текущей строкой станет другая, в чем проблема? и причем тут тогда последняя строка в наборе данных?


Если просто вызвать ОбновитьСтроки, то "Строка отображающая только что удаленный документ исчезнет, текущей строкой станет другая", а именно самая первая (в наборе данных). Но надо что бы была самая последняя (в наборе данных).
Как?
  
Наверх
ICQ  
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ТабличноеПоле, ОбновитьСтроки(), на последнюю
Ответ #5 - 06. Июня 2007 :: 16:50
Печать  
странно, не должно быть такого поведения..
но всеже, попробуй перед вызовом ОбновитьСтроки сделать ТабПол.НачальноеПредставление = 1;
  
Наверх
ICQ  
IP записан
 
chicago
Senior Member
****
Отсутствует


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТабличноеПоле, ОбновитьСтроки(), на последнюю
Ответ #6 - 06. Июня 2007 :: 16:53
Печать  
DmitrO писал(а) 06. Июня 2007 :: 16:50:
странно, не должно быть такого поведения..
но всеже, попробуй перед вызовом ОбновитьСтроки сделать ТабПол.НачальноеПредставление = 1;


Ну, говорил же, делал, но. Эфекта нет...  Смущённый
  
Наверх
ICQ  
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ТабличноеПоле, ОбновитьСтроки(), на последнюю
Ответ #7 - 06. Июня 2007 :: 16:57
Печать  
щас проверить не могу, завтра на работе..
  
Наверх
ICQ  
IP записан
 
chicago
Senior Member
****
Отсутствует


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТабличноеПоле, ОбновитьСтроки(), на последнюю
Ответ #8 - 06. Июня 2007 :: 17:06
Печать  
DmitrO писал(а) 06. Июня 2007 :: 16:57:
щас проверить не могу, завтра на работе..


Спасибо.

PS.
1. Суть задачи сводится к тому, что при:
Код
Выбрать все
ТабПол.НачальноеПредставление = 1;
ТабПол.ОбновитьСтроки(); 


по логике текущей строкой должна быть последняя, а в действительности не так.
2. 1С++ 2.0.3.3.
  
Наверх
ICQ  
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ТабличноеПоле, ОбновитьСтроки(), на последнюю
Ответ #9 - 07. Июня 2007 :: 06:33
Печать  
Расследование проведено. Ошибка подтверждается.
Ошибка заключается в следующем:
Метод ОбновитьСтроки неправильно устанавливает текущую строку, если текущая строка была удалена из набора данных. Он ee ставит на первую отображаемую в ТП строку (важно: не на первую в наборе данных, это разные вещи).
В остальном метод работает правильно.

Что касается конкретной задачи, описанной в этой ветке.
Решение должно быть таким:
Код
Выбрать все
//удаляем документ
ТабПол.НачальноеПредставление = 1;
ТабПол.ПоставщикДанных.Обновить(); 

  
Наверх
ICQ  
IP записан
 
chicago
Senior Member
****
Отсутствует


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТабличноеПоле, ОбновитьСтроки(), на последнюю
Ответ #10 - 07. Июня 2007 :: 06:48
Печать  
1. Спасибо за быстрый ответ (жду его с 8 утра Подмигивание).
2.
DmitrO писал(а) 07. Июня 2007 :: 06:33:
Расследование проведено. Ошибка подтверждается.
Ошибка заключается в следующем:
Метод ОбновитьСтроки неправильно устанавливает текущую строку, если текущая строка была удалена из набора данных.

Сказано в точку на все 100%.
3.
DmitrO писал(а) 07. Июня 2007 :: 06:33:
... Он ee ставит на первую отображаемую в ТП строку (важно: не на первую в наборе данных, это разные вещи).

Тут не совсем понял... Озадачен
4. Пробую предложеное решение.

  
Наверх
ICQ  
IP записан
 
chicago
Senior Member
****
Отсутствует


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТабличноеПоле, ОбновитьСтроки(), на последнюю
Ответ #11 - 07. Июня 2007 :: 07:39
Печать  
Еще раз большое спасибо. Работает! Улыбка
  
Наверх
ICQ  
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ТабличноеПоле, ОбновитьСтроки(), на последнюю
Ответ #12 - 07. Июня 2007 :: 08:00
Печать  
Ну раз работает, то позволь тебе заметить, что я тебе написал это решение еще в первом своем посте, тока ты почему-то ни как меня не слышал. Прочитай еще раз внимательно, там ведь нет ни одного лишнего слова.
  
Наверх
ICQ  
IP записан
 
chicago
Senior Member
****
Отсутствует


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТабличноеПоле, ОбновитьСтроки(), на последнюю
Ответ #13 - 07. Июня 2007 :: 08:30
Печать  
DmitrO писал(а) 07. Июня 2007 :: 08:00:
Ну раз работает, то позволь тебе заметить, что я тебе написал это решение еще в первом своем посте, тока ты почему-то ни как меня не слышал. Прочитай еще раз внимательно, там ведь нет ни одного лишнего слова.


Согласен с замечанием.
Если я правильно понял имелось в виду это:
DmitrO писал(а) 06. Июня 2007 :: 15:56:
а)для объекта ПоставщикДанныхODBC метод Обновить();


Если да то я не смог это (по не внимательности) интерпретировать как
Код
Выбрать все
ТабПол.ПоставщикДанных.Обновить(); 


Смущённый
  
Наверх
ICQ  
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ТабличноеПоле, ОбновитьСтроки(), на последнюю
Ответ #14 - 07. Июня 2007 :: 09:04
Печать  
Да, я так и подумал.
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать