Имя: Пароль:
1C
 
Получить текущий элемент табличного поля
,
0 Про100Филя
 
28.09.15
15:09
Как получить элемент
Есть две колонки колнка1 и колонка2 в табличном поле.
У колонки2 есть событие при изменении :
  
Процедура МояТаблицаКолонка2(Элемент)
   Элемент.Значение = Элемент.Значение+" "+Элемент.Значение; //ну это к примеру
КонецПроцедуры

В другой процедуре я добавляю строку в мою таблицу, заполняю строку, как мне правильно вызвать событие при изменении Колонка2?
1 kosts
 
28.09.15
15:10
(0) Смотри какие процедуры вызываются в том событии и прописывай себе. Часто срабатывает.
2 Fuas4
 
28.09.15
15:11
Если я правильно понял, то:
МояТаблицаКолонка2(неопределено) - если нигде в коде процедуры не используешь "Элемент". Если используешь, то передавай его
3 kosts
 
28.09.15
15:12
(2) Не рекомендую. Отход от стандарта.
4 Про100Филя
 
28.09.15
15:12
(2) Так он используется только при изменении в ячейки. Как мне элемент ячейки новой строки достать?
5 Про100Филя
 
28.09.15
15:14
(1) НоваяСтр = МояТаблица.Добавить();
НоваяСтр.Колонка1="йцуйцу";
НоваяСтр.Колонка2="йцуйцу";

МояТаблицаКолонка2(НоваяСтр.Колонка2);// не проходёт, Как добраться до элемента?
6 kosts
 
28.09.15
15:14
(4) Зачем тебе элемент ячейки?, возможно нужны только данные
7 Про100Филя
 
28.09.15
15:28
(6) в событии при изменении есть условия исходя из которых ставится цвет(Элемент.ЦветФона)

Процедура МояПроцедура()
  НоваяСтр = МояТаблица.Добавить();
  НоваяСтр.Колонка1="йцуйцу";
  НоваяСтр.Колонка2="йцуйцу";
  МояТаблицаКолонка2(НоваяСтр.Колонка2); // как от сюда вызвать событие при изменении правильно?
КонецПроцедуры

Процедура МояТаблицаКолонка2ПриИзменении(Элемент)   // Событие При изменении значения в колонка2
   Элемент.Значение = Элемент.Значение+" "+Элемент.Значение;// Тут идут действия с элементом
КонецПроцедуры
8 kosts
 
28.09.15
15:35

Процедура МояПроцедура()

  НоваяСтр = МояТаблица.Добавить();
  НоваяСтр.Колонка1="йцуйцу";
  НоваяСтр.Колонка2="йцуйцу";
  Пересчитать111(НоваяСтр);

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

Процедура МояТаблицаКолонка2ПриИзменении(Элемент)  // Событие При изменении значения в колонка2

    Пересчитать111(Элемент.ТекущиеДанные)

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

Процедура  Пересчитать111(Стр)

   Стр.итого = Cnh.Количество * Стр.Цена;

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


Вроде так, могу ошибаться...
9 Про100Филя
 
28.09.15
15:36
(7) Опечатался МояТаблицаКолонка2ПриИзменении(НоваяСтр.Колонка2);

С полем ввода все просто:

МоеПолеВводаПриИзменении(ЭлементыФормы.МоеПолеВвода);

а вот с ячейкой в табличном поле косяк какой-то...

(8) не подойдет в текущих данных нет полей элемента (цветфона и других).
10 Про100Филя
 
28.09.15
15:40
Нашел вот так но это для всей колонки:
ЭлементыФормы.МояТаблица.Колонки.ВидДокумента.ЭлементУправления
и по индексу строки не перебирается.

Обычные формы.
11 bootini
 
28.09.15
15:47
(10)
раскрашивание обычно здесь делается:
Процедура МояТаблицаПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

Если ДанныеСтроки.Колонка2 = 666 Тогда
ОформлениеСтроки.Колонка2.ЦветФона = Новый Цвет(0,0,0);
КонецЕсли

КонецПроцедуры
12 Про100Филя
 
28.09.15
15:59
(11) Можно и при получении данных, но при выводе строки обходит весь список таблицы, а это очень затруднительно для проверки. В проверки значения есть запрос по http. который может изменить в первой колонке значение(Я не очень уверен, но по идеи разрабочиков 1С снова должны сработать события ПриВыводеСтроки и ПриПолученииДанных). Вообщем это на крайний случай.
13 bootini
 
28.09.15
16:27
(12) При выводе строки, не вся таблица ,а только те строки которые будут на экране. Поэтому это хозяйство подтормаживает, когда начинают прокручивать список.