![]() |
![]() |
|
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) В принципе неплохо. Спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |