Имя: Пароль:
1C
 
v8.2 Как правильно определить текущую строку ТЧ документа
0 Stackmann
 
10.09.10
11:12
Здравствуйте.
Исходные данные.
Конфигурация: самописная;
Оболочка:8.2.11.236 (тонкий клиент)
Управляемая форма документа.
На форме располагается таблица.
Необходимо узнать текущую строку ТЧ по окончанию редактирования реквизита в какой-нибудь строке.
Как правильно это сделать (интересует как на клиенте так и на сервере).
Заранее благодарен.
1 Stackmann
 
10.09.10
11:32
Пробовал через Элементы.ТЧ.ТекущаяСтрока(), но в определенных моментах метод возвращает неверный индекс, например когда скопируешь строку, а затем откажешься (Esc), затем снова скопируешь строку, а метод вернет не количествострок+1, а количествострок+2 и когда обратишься по этому индексу к ТЧ, то вылетет ошибка, что он за пределами массива.
Это баг или как-то надо по другому писать?
2 Manaka
 
10.09.10
11:38
"Элементы.Товары.ТекущиеДанные"

Доступность: Тонкий клиент, веб-клиент, толстый клиент
3 Yorokonde
 
10.09.10
11:43
Начало выбрал верное - нужно работать с Элементы.ТабличнаяЧасть1, а дальше почти попал. Можно воспользоваться свойством
Элементы.ТабличнаяЧасть1.ТекущиеДанные
Через него сможешь получить доступ ко всем колонкам твоей табличной части + узнаешь её номер => Можешь творить дальше что угодно, в том числе и преобразовать любым способом любую из колонок табличной части обратившись еще раз через точку, например:
Элементы.ТабличнаяЧасть1.ТекущиеДанные.Реквизит3 = "Третий";
4 Stackmann
 
10.09.10
11:49
(2) В смысле Элементы.Товары.ТекущиеДанные.НомерСтроки
Так я могу правильно определить номер строки?
5 Manaka
 
10.09.10
11:51
Точно
6 Yorokonde
 
10.09.10
11:53
к (3) "узнаешь её номер" в смысле номер текущей строки)

(4) Совершенно верно. Кроме того можешь делать с текущей строкой все, что тебе вздумается см. (3) :)
7 Stackmann
 
10.09.10
11:54
(3) А теперь подскажите мне как при помощи Элементы.ТабличнаяЧасть1.ТекущиеДанные перебрать колонки текущей строки, чтобы скопировать значение из одной колонки (в которой происходит редактирование) на последующие (предыдущие не трогать).
У меня в табличной части однотипные колонки: Кво1,Кво2,Кво3....Кво12. И если в колонку Кво3 внесут новое значение, то оно должно скопироваться во все последующие колонки Кво, а Кво1 и Кво2 - оставить прежним.
8 Stackmann
 
10.09.10
11:56
(5) Спасибо. Так вроде работает.
9 Yorokonde
 
10.09.10
12:16
Имена колонок также однотипны? Завершаются номером? Количество колонок не меняется?
Если так, то если не претендовать на универсальность, то можно просто вручную формировать имя колонок и вносить необходимые тебе данные.
Что-то типа такого:
&НаКлиенте
Процедура ТабличнаяЧасть1Колво1ПриИзменении(Элемент)
   //Имена колонок: "ТабличнаяЧасть1Колво1", "ТабличнаяЧасть1Колво2"и т.д.
   //всего у нас например 5 колонок
   ИмяТекущейКолонки = Элемент.Имя;
   ЗначениеВТекущейКолонке = Элемент.ТекстРедактирования;
   НомерТекущейКолонки = Число(Сред(ИмяТекущейКолонки, 21, СтрДлина(ИмяТекущейКолонки)-20));
   
   Для Счетчик = НомерТекущейКолонки+1 По 5 Цикл
       ИмяОбрабатываемойКолонки = "Колво"+Счетчик;
       Элементы.ТабличнаяЧасть1.ТекущиеДанные[ИмяОбрабатываемойКолонки] = ЗначениеВТекущейКолонке;
   КонецЦикла;
КонецПроцедуры

Думаю смысл будет понятен, дальше додумать легко. Также если нужна универсальность (например если количество колонок может меняться), то тоже можно немного подправив пользоваться.
10 Stackmann
 
10.09.10
12:35
(9) В принципе неплохо. Спасибо.