Имя: Пароль:
1C
1С v8
Событие "ПриВыводеСтроки" - бесконечный цикл.
0 dkonakov
 
22.06.16
14:22
Имеем табличную часть на форме.
ПриВыводеСтроки есть такое условие, ну например
если А = 0 Тогда ЭлементыФормы.Товары.Колонки.Колонка1.ТолькоПросмотр = Истина;

Данный код порождает бесконечный цикл.

можно вынести этот код при открытии, но тогда если пользователь вручную добавит колонку, то она на просмотр не покажется.

В какое событие стоит помещать данную строку?
1 aleks_default
 
22.06.16
14:25
ПриАктивацииЯчейки не помню есть ли такое в ОФ
2 Зая Бусечка
 
22.06.16
14:26
В ПриПолученииДанных
3 dkonakov
 
22.06.16
14:31
(2) аналогичный бесконечный цикл ПриПолученииДанных.
(1) А не пустой ли это будет код, активизируется ячейка, причем может активизироваться многократно и код будет впустую выполняться?
4 Fragster
 
гуру
22.06.16
14:32
1 прав. а еще лучше перед началом редактирования.
5 Nuobu
 
22.06.16
14:33
(3) ПриИзмененииДанных, ОбновлениеОтображения
В этих двух пропиши свой код.
6 aleks_default
 
22.06.16
14:34
Ячейка активируется тогда когда в нее тыкнул пользователь, т.е. перед началом попытки редактирования.
7 Широкий
 
22.06.16
14:37
Ты скорее всего а ПриВыводеСтроки меняешь значение колонки - которое и порождает вызов еще одного ПриВыводеСтроки.

Полный код покажи
8 lxs
 
22.06.16
14:39
(7) +1
9 dkonakov
 
22.06.16
14:44
(7) Полный код следующий:
Если Дата > Дата(2016,05,19,23,59,59) Тогда
// тут что то
        Иначе
Если мКолонкиТовары.ЦенаСоСкидкой.Видимость Тогда
ЭлементыФормы.Товары.Колонки.ЦенаСоСкидкой.ТолькоПросмотр = Истина;
СуммаСоСкидкой =  ОформлениеСтроки.Ячейки.Сумма.Значение;
ЦенаСоСкидкой = ОбщегоНазначения.ФорматСумм(?(ДанныеСтроки.Количество=0,0,(СуммаСоСкидкой / ДанныеСтроки.Количество)));
ОформлениеСтроки.Ячейки.ЦенаСоСкидкой.УстановитьТекст(ЦенаСоСкидкой);
КонецЕсли;
КонецЕсли;


Проверял код, бесконечный цикл вызывается, когда именно ТолькоПросмотр = Истина; Остальные строчки кода так не влияют.
10 Nuobu
 
22.06.16
14:48
(9) Что по поводу (5)?
11 dkonakov
 
22.06.16
14:50
(10) у нас обычные формы. в ТЧ формы нет такого события: ПриИзмененииДанных. Я прошу прощения, что не указал это сразу.
12 hhhh
 
22.06.16
14:53
(11) при активизации ячейки делай.
13 lxs
 
22.06.16
14:53
(11) ПриПолученииДанных(0
14 lxs
 
22.06.16
14:57
Не понимаю, зачем вот это

Если мКолонкиТовары.ЦенаСоСкидкой.Видимость Тогда
ЭлементыФормы.Товары.Колонки.ЦенаСоСкидкой.ТолькоПросмотр = Истина;


пихать в циклический обработчик...

Так же не понимаю, нахрена вызывать ОбщегоНазначения.ФорматСумм(.. в таких местах.. Сам форматную строку не умеешь использовать?

Задача простая, реализация ппц..
15 dkonakov
 
22.06.16
15:02
(13) ПриПолученииДанных  будет (3)

Активизация ячейки - когда пользователь сделает нажатие мышью туда. Соответственно Код ТолькоПросмотр = Истина будет вызываться столько раз, сколько пользователь будет выделять ячейку колонки.
16 Nuobu
 
22.06.16
15:03
(11) Он на форме есть.
17 dkonakov
 
22.06.16
15:05
(14) я прекрасно понимаю. Порекомендуйте, куда эту строку
ЭлементыФормы.Товары.Колонки.ЦенаСоСкидкой.ТолькоПросмотр = Истина; разместить правильно.
По Формату сумм согласен, исправлю.
18 dkonakov
 
22.06.16
15:05
(16) Да, действительно, вы правы, сейчас попробуем.
19 dkonakov
 
22.06.16
15:13
(16) к сожалению, не то. Не вызывается ни то, ни другое при скрытии/добавлении полей в ТЧ.
20 youalex
 
22.06.16
16:18
(0)
ОформлениеСтроки.Ячейки.ИмяЯчейки.ТолькоПросмотр

В событиях ТП ПриВыводеСтроки(), ПриПолученииДанных()
21 lxs
 
22.06.16
16:36
(17) ПриОткрытии, например.
22 ptiz
 
22.06.16
16:38
если не копать суть:

Если ЭлементыФормы.Товары.Колонки.ЦенаСоСкидкой.ТолькоПросмотр = Ложь Тогда
ЭлементыФормы.Товары.Колонки.ЦенаСоСкидкой.ТолькоПросмотр = Истина
КонецЕсли;
23 Zhuravlik
 
22.06.16
16:39
(5) + 1