![]() |
![]() |
|
Работа с флажками в ТЗ на форме | ☑ | ||
---|---|---|---|---|
0
alikgam_3
29.03.11
✎
10:21
|
На форме лежит ТЗ ТаблНакл. Первая колонка флажок. Вторая расходные накладные. Хочу при нажатии флажка подсчитывать суммы уже отмеченных расходных накладных. А у меня ТаблНакл[к][0] всегда ложь.
Помогите, пожалуйста, разобраться, что я не так делаю. Процедура ТаблНаклПриИзмененииФлажка(Элемент, Колонка) сумма=0; Для к=0 По ТаблНакл.Количество()-1 Цикл если ТаблНакл[к][0]=истина тогда сумма=сумма+ТаблНакл.расхнакл.сумма; конецЕсли; КонецЦикла; КонецПроцедуры |
|||
1
dimoff
29.03.11
✎
10:22
|
Какая религия мешает обраттиться к колонкке по имени?
|
|||
2
Defender aka LINN
29.03.11
✎
10:26
|
(0) Страшно представить, какими нетривиальными способами автор способен принимать пищу...
|
|||
3
vicof
29.03.11
✎
10:27
|
если ТаблНакл[к][0]=истина - нельзя так писать, нужно
если ТаблНакл[к][0] тогда |
|||
4
vicof
29.03.11
✎
10:28
|
"сумма=сумма+ТаблНакл.расхнакл.сумма;"
и вот это что такое? |
|||
5
alikgam_3
29.03.11
✎
10:29
|
Это так?
Тоже не выходит Процедура ТаблНаклПриИзмененииФлажка(Элемент, Колонка) сумма=0; Для к=0 По ТаблНакл.Количество()-1 Цикл если ТаблНакл[к].флаг=истина тогда сумма=сумма+ТаблНакл[к].расхнакл.сумма; конецЕсли; КонецЦикла; КонецПроцедуры |
|||
6
dimoff
29.03.11
✎
10:30
|
(3) Какая религия запрещает писать ТаблНакл[к][0]=истина?
|
|||
7
alikgam_3
29.03.11
✎
10:30
|
(2) начинающего каждый обидеть может ;)
|
|||
8
dimoff
29.03.11
✎
10:31
|
А что в колонке "Флаг" табличного поля указано в свойстве "Данные"?
|
|||
9
kosts
29.03.11
✎
10:31
|
Процедура ТаблНаклПриИзмененииФлажка(Элемент, Колонка)
сумма=0; Для каждого т По ТаблНакл Цикл если т.Флажек1 тогда сумма=сумма + т.расхнакл.сумма; конецЕсли; КонецЦикла; КонецПроцедуры |
|||
10
Defender aka LINN
29.03.11
✎
10:32
|
(3) Кто запретил?
|
|||
11
dimoff
29.03.11
✎
10:32
|
И проверь чтобы флажок имел двва состояния а не три, в противном случае его тип будет число а не булево
|
|||
12
alikgam_3
29.03.11
✎
10:33
|
(8) флаг
|
|||
13
Ненавижу 1С
гуру
29.03.11
✎
10:33
|
отлядчик что говорит?
|
|||
14
alikgam_3
29.03.11
✎
10:33
|
(9) сейчас попробую
|
|||
15
Ненавижу 1С
гуру
29.03.11
✎
10:34
|
(12) а ничего должно быть, должны быть данные флажка
|
|||
16
dimoff
29.03.11
✎
10:35
|
(12) Посмотри ТЗ отладчике, будут ли проставлены в нем флажки, потому как ничего неправильного в твоем коде не вижу9кроме того что он неоптимальный, но это не суть)
|
|||
17
dimoff
29.03.11
✎
10:35
|
(15) Точно
|
|||
18
dimoff
29.03.11
✎
10:36
|
Данные должны быть пустыми, Флаг должно быть написано в поле Данные флажка
|
|||
19
vicof
29.03.11
✎
10:40
|
(6) и (10), погорячился. Не то, чтобы нельзя, но ТаблНакл[к].флаг уже содержит Истина. Зачем сравнивать Истину и Истину, когда можно обойтись одним действием? По глазам режет.
|
|||
20
Ненавижу 1С
гуру
29.03.11
✎
10:48
|
(19) да ладно, вот это режет:
Если ЭлементыФормы.ФлажокДоступностиКонтрагента.ЗначениеФлажка=Истина Тогда ЭлементыФормы.Конрагент.Доступность = Истина; Иначе ЭлементыФормы.Конрагент.Доступность = Ложь; КонецЕсли; |
|||
21
alikgam_3
29.03.11
✎
10:50
|
(18) совет помог, но теперь пока не кликнешь по ячейке с флажком там пусто, а должен быть пустой квадратик, как раньше.
Может надо и в этом коде что поменять Процедура ТабличноеПоле1ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) ОформлениеСтроки.ячейки.флаг.отображатьфлажок=истина; ОформлениеСтроки.ячейки.флаг.отображатьтекст=ложь; КонецПроцедуры |
|||
22
Defender aka LINN
29.03.11
✎
10:52
|
(19) А обход таблицы тебе глаза не режет, значит? :)
|
|||
23
vicof
29.03.11
✎
10:56
|
(22) режет, но меньше)
|
|||
24
alikgam_3
29.03.11
✎
10:57
|
(22) можно и без обхода. Но тогда у меня возникал вопрос, как понять в какой строке я только что поменял значение флажка
|
|||
25
Ненавижу 1С
гуру
29.03.11
✎
11:00
|
(24) а зачем?
|
|||
26
alikgam_3
29.03.11
✎
11:05
|
задача посчитать сумму отмеченных накладных. Или каждый раз при смене состояния любого флажка пробегать по всей таблицу считать отмеченные или при смене состояния флажка добавлять или вычитать к сумме соотв-ю накладную
|
|||
27
dimoff
29.03.11
✎
11:05
|
(21) Если я правильно понля о чем речь, то в свойствах колонки установить Редактирвоание "Непосредственно", не думаю что надо что-то в ПриВвыводеСтроки делать.
|
|||
28
dimoff
29.03.11
✎
11:06
|
(24) "Но тогда у меня возникал вопрос, как понять в какой строке я только что поменял значение флажка"
Элемент.ТекущиеДанные Просто минусуй или плюсуй сумму в зависимости от значения флажка. Ещё как вариант посмотри методы ТЗ Скопировать НайтиСтроки и Итог тогда не обязательно знать в какой строке поменял |
|||
29
alikgam_3
29.03.11
✎
11:07
|
(27) точно
|
|||
30
Defender aka LINN
29.03.11
✎
11:07
|
(24) В текущей. Если ты, конечно, не Дэвид Блейн.
|
|||
31
dimoff
29.03.11
✎
11:10
|
Весь код будет выглядеть так
СуммаОтмеченныхСтрок = ТЗ.Скопировать( ТЗ.НайтиСтроки(Новый Структура("Флаг", Истина)), "Сумма").Итог("Сумма") |
|||
32
kosts
29.03.11
✎
12:14
|
(31) А если таблица большая, зачем создавать тормоза
|
|||
33
dimoff
29.03.11
✎
12:20
|
(32) Ну и что ты нового написал? Это описано в 28
|
|||
34
kosts
29.03.11
✎
12:34
|
(33) Не говорю что новое, говорю, что не нужно как в (31)
Далее просто показал как бы сделал я. |
|||
35
dimoff
29.03.11
✎
12:34
|
Ок
|
|||
36
hhhh
29.03.11
✎
12:49
|
(34) всё-таки это ненадежно. У тебя программист получится как сапер, достаточно чуть-чуть где-нибудь ошибиться и вся сумма слетит к едрени фене. Лучше каждый раз пересчитать, дешево и сердито. Но конечно сумма - это должна быть колонка в таблице, а не лазить каждый раз в расходную накладную. То есть
Сумма = Сумма + т.сумма; |
|||
37
Mitriy
29.03.11
✎
12:51
|
до ста постов дотянем?
|
|||
38
alikgam
29.03.11
✎
16:51
|
Всем спасибо. Думаю, что по данному вопросу непоняток у меня не осталось
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |