Имя: Пароль:
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) При выводе строки, не вся таблица ,а только те строки которые будут на экране. Поэтому это хозяйство подтормаживает, когда начинают прокручивать список.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший