Имя: Пароль:
1C
1С v8
ТекущаяСтрока Таблицы значений на форме
0 Gera1t
 
13.11.24
15:58
Здравствуйте!
Есть Таблица значений, которая есть на форме.
После определенных действий ТЗ перезаполняется.
На форме данные отображаются корректно, но если обратиться
Элементы.ТЗ.ТекущаяСтрока, то количество строк в Элементы.ТЗ увеличивается.
Т.е. например в ТЗ 10 строк, мне нужно удалить одну из ТЗ
Делаю:
ТекСтрока = Элементы.ТЗ.ТекущаяСтрока (Например 5)
ТекДанные = ТЗ.Получить(ТекСтрока)
.....
Затем перезаполняю ТЗ и при обращении к
ТекСтрока = Элементы.ТЗ.ТекущаяСтрока получаю, что в Элементы.ТЗ уже 20 строк, хотя в ТЗ их все еще 10

Ну и так при каждом обновлении ТЗ количество в Элементы.ТЗ увеличивается на количество строк в ТЗ

Элементы.ТЗ.Обновить() пробовал, не помогает
1 Мультук
 
13.11.24
16:08
Это вас как-то напрягает?
Тревожные мысли ?
2 osa1C
 
13.11.24
16:11
(0) Перед тем как перезаполнять ТЗ, её надо очищать. ТЗ.Очистить();
Стаж 14 лет и такие вопросы.... пипец
3 Gera1t
 
13.11.24
16:12
(1) Мне нужно получать данные из ТЗ, но на форме не все колонки, поэтому через ТекущиеДанные не могу получить. Сначала на клиенте делаю ТекущаяСтрока, а потом на сервере ТЗ.Получить(ТекСтрока)
(2) ТЗ очищаю, в том то и дело, что в ТЗ нужное количество строк, а вот в Элементы.ТЗ они как будто не очищаются
4 Gera1t
 
13.11.24
16:14
(2) Стаж 13 лет, а читать не научился
5 Мультук
 
13.11.24
16:20
(0)

Обработку могу кинуть на dropbox, код - работает.

&НаКлиенте
Процедура УдалитьТекущуюСтроку(Команда)
	тз.Удалить(Элементы.ТЗ.ТекущаяСтрока);
КонецПроцедуры



Более  полный пример

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	Для й =1 по 5 Цикл
		
		НоваяСтрока = Тз.Добавить();
		НоваяСтрока.РеквизитБулево = Ложь;
		НоваяСтрока.РеквизитСтрока = Строка("Строка " + й);
		
	КонецЦикла;	
				
КонецПроцедуры

&НаКлиенте
Процедура УдалитьНаКлиенте(Команда)
	пОтбор = Новый Структура("РеквизитБулево", Истина);
	нс = тз.НайтиСтроки(пОтбор);
	
	Для каждого строкаУдалить из нс Цикл
		тз.Удалить(строкаУдалить);
	КонецЦикла;	
	

КонецПроцедуры

&НаСервере
Процедура УдалитьНаСервереНаСервере()

	пОтбор = Новый Структура("РеквизитБулево", Истина);
	нс = тз.НайтиСтроки(пОтбор);
	
	Для каждого строкаУдалить из нс Цикл
		тз.Удалить(строкаУдалить);
	КонецЦикла;	
	
КонецПроцедуры

&НаКлиенте
Процедура УдалитьНаСервере(Команда)
	УдалитьНаСервереНаСервере();
КонецПроцедуры
6 Gera1t
 
13.11.24
16:20
(5) Вопрос не в том, как правильно удалить строку из ТЗ.
Короче сделал через ТекущиеДанные
7 d4rkmesa
 
13.11.24
16:38
(2) Хех, кто бы говорил. ) Уж "Новое в версии ..." на ИТС можно было научиться читать. Ну это я так, без обид.
8 Gera1t
 
13.11.24
16:44
(7) Да понял уже), поэтому и (6)
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс