Имя: Пароль:
1C
1С v8
Флажок в табличной части 1С
, ,
0 korableg
 
02.11.12
09:07
Здравствуйте волшебники.
Суть проблемы:
Имеется какая то табличная часть и в ней нужно организовать флажок, проблем нет просто поставил флажок и всё, но выбор его так устроен неочень по умолчанию в 3 этапа:

1) выделение ячейки
2) активирование ее
3) Установка флажка

Нужно упростить его, допустим навел мышь, ткнул один раз и галочка поставилась, есть какие нибудь идеи?
Пробовал через событие ПриАктивацииЯчейки, но чет не догоняю как в обработчике потом именно к ней обратиться?

Заранее спасибо за ваши советы и замечания:)
1 ДенисЧ
 
02.11.12
09:09
чо?
Сделал обработку. Добавил табчасть с одной колонкой типа булево.
Вывел её на форму. Появился флажОк. Навел мышой и ткнул - галка поставилась...

Что я не так сделал?
2 PaulBC
 
02.11.12
09:10
Режим редактирования - Непосредственно
3 Wobland
 
02.11.12
09:11
ЭлементыФормы.Результат.Колонки.Пометка.ТолькоПросмотр=Ложь;
   ЭлементыФормы.Результат.Колонки.Пометка.ТекстШапки="";
   ЭлементыФормы.Результат.Колонки.Пометка.УстановитьЭлементУправления(Тип("Флажок"));
   ЭлементыФормы.Результат.Колонки.Пометка.РежимРедактирования=РежимРедактированияКолонки.Непосредственно;
   ЭлементыФормы.Результат.Колонки.Пометка.Данные="";
   ЭлементыФормы.Результат.Колонки.Пометка.ДанныеФлажка="Пометка";
   ЭлементыФормы.Результат.Колонки.Пометка.Ширина=1;
4 korableg
 
02.11.12
09:16
Действия (2) и (3) выполняются в 2 этапа, выделение и активирование, смена значения, а требуется в 1 этап сразу.
5 korableg
 
02.11.12
09:17
в этом и таится загвоздка)
6 Wobland
 
02.11.12
09:17
(4) ещё раз почитай (3) и подумай, зачем я его себе писал
7 cw014
 
02.11.12
09:18
(4) Да ладно!!????
8 korableg
 
02.11.12
09:22
(6) и (7) только что опробовал, 2 этапа, не один.
9 korableg
 
02.11.12
09:23
выделение и активация, смена значения. как и писал выше
10 Wobland
 
02.11.12
09:23
(8) устроим дуэль? я записываю видео со своей стороны, ты со своей. у кого не получится после предварительных действий в (3) идёт за пивом
11 cw014
 
02.11.12
09:25
(10) А я рефери, кто проиграл еще пиво рефери оплачивает
12 korableg
 
02.11.12
09:25
(10) занятная идея))) я на работе, пожалуй обойдусь скринами
13 Wobland
 
02.11.12
09:26
(12) убей свою колонку, создай новую и проставь все свойства как сказано. ни влево, ни вправо
14 Wobland
 
02.11.12
09:27
(13) разрешаю даже это сделать руками
15 cw014
 
02.11.12
09:27
(12) И обрати внимание на строку:
   ЭлементыФормы.Результат.Колонки.Пометка.Данные="";
16 korableg
 
02.11.12
09:35
17 Serg_1960
 
02.11.12
09:36
Эээ... я не понял. ТС хочет "тыкнуть" влюбом месте, любой строки табличной части так, чтобы флажок изменил состояние, а текущая строка - осталась текущей?
18 korableg
 
02.11.12
09:37
(17) нет, не любой части, а именно в ту ячейку без ее выделения, тоесть одним кликом
19 Serg_1960
 
02.11.12
09:44
Посмотри в отладчике какая у тебя текущая строка, после твоих действий м.б. тогда ты поймешь об чём я.

Типа как-то так: если текущая строка изменилась и/или текущая ячейка там, где флажок, - изменяем его значение.
20 Wobland
 
02.11.12
09:45
на каком-то из скринов проигнорировано (15)
21 Wobland
 
02.11.12
09:46
а так же проигнорировано (13) и (14). я обиделся, я ухожу
22 korableg
 
02.11.12
09:55
(21) ниче не проигнорировано, я поставил настройки ячейки как и были представлены при открытии..
23 korableg
 
02.11.12
09:55
(19) сейчас поищу там)
24 Serg_1960
 
02.11.12
10:02
Можно не искать - первый скрин - Данные:"Выбрать"
25 korableg
 
02.11.12
10:35
(24) Мне кажется вы не совсем поняли о чем вопрос. Мне нужно чтоб ставилась галочка одним кликом мыши, тоесть при активации ячейки скрипт спрашивал та ли ячейка активирована, если да то текущие данные заменялись. Вопрос в том как вытащить данные о ячейке именно какая колонка.
26 korableg
 
02.11.12
10:45
Процедура ТабличноеПолеВыбораОперацииПриАктивизацииЯчейки(Элемент)
   Если ЭлементыФормы.ТабличноеПолеВыбораОперации.ТекущаяКолонка.Имя = "Выбрать" Тогда
       Если ЭлементыФормы.ТабличноеПолеВыбораОперации.ТекущиеДанные.Выбрать Тогда
           ЭлементыФормы.ТабличноеПолеВыбораОперации.ТекущиеДанные.Выбрать = Ложь
       Иначе
           ЭлементыФормы.ТабличноеПолеВыбораОперации.ТекущиеДанные.Выбрать = Истина
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры


Вот мужики, как то так.
27 stonewolf
 
02.11.12
10:45
(24) Чтобы менялось непосредственно, нужно ещё событие «ПриИзмененииФлажка» запилить, хотя бы пустое.
28 stonewolf
 
02.11.12
10:46
(27) -> (25)
29 Wobland
 
02.11.12
10:47
(26) то есть, стрелочками пришёл - значение инвертировалось? ты хочешь какую-то ересь. я ваще (25) с четвёртого раза не понял
30 Wobland
 
02.11.12
10:47
(26) а=НЕ а; так тоже можно, если что
31 korableg
 
02.11.12
10:50
(30) можно, но не нужно.
Ты же обиделся?))

эту ересь не я хочу, а люди которые этим пользуются им лень несколько раз мышкой тыкать по одной ячейке)
32 stonewolf
 
02.11.12
10:51
(27) Гоню %)
33 Wobland
 
02.11.12
10:53
(31) это почему не нужно? то же самое, о чём в (26)
>лень несколько раз мышкой тыкать по одной ячейке
когда мне будет лень, я пойду и сделаю на форме то, о чём так много говорил. и если эти извраты только ради того, чтобы избавиться от двух щелчков, то тут только к доктору
34 Wobland
 
02.11.12
10:55
ещё раз. юзер добрался до ячейки стрелками. внезапно проставилась галка. это задуманное поведение?
35 korableg
 
02.11.12
10:57
(34) добрался и сделал один щелчок
36 korableg
 
02.11.12
11:02
я создал этот топик чтоб послушать ваши идеи, это как соревнования по программированию в которых надо сложить а+б и при этом получить исходник меньшего размера:)
37 Wobland
 
02.11.12
11:03
(36) у меня нет ни строки кода. приз в студию
38 korableg
 
02.11.12
11:04
(37) поставлю пиво если пришлешь видео)))
39 Wobland
 
02.11.12
11:05
(38) формулировать задачу я буду или ты?
40 Bober
 
02.11.12
11:08
(0) как вариант
1. добавить обработчик ПриПолученииДанных у табличного поля, там в нужную ячейку выставлять флажок (УстановитьФлажок).
2. добавить обработчик ПриИзмененииФлажка.
41 Bober
 
02.11.12
11:09
(40) актуально для старых форм.
42 korableg
 
02.11.12
11:12
Спасибо (40) уже решено всё равно)

(39) задача в (1) избавиться от лишних щелчков мыши при установке флажка в табличной части
43 Wobland
 
02.11.12
11:17
(42) в ТП. тогда я сформулирую
необходимо сделать на обычной форме табличное поле с колонкой значений типа булево, значения в которой изменяются ровно одним нажатием на кнопку мыши или (как аналог нажатия) пробелом

пойдёт?
44 korableg
 
02.11.12
11:17
(43) так точно)
45 Bober
 
02.11.12
11:18
(42) да, там 5 строк кода.

Процедура ТабличноеПолеПриПолученииДанных(Элемент, ОформленияСтрок)
   
   Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
       ОформлениеСтроки.Ячейки.Пометка.УстановитьФлажок(ОформлениеСтроки.ДанныеСтроки.Пометка);
       ОформлениеСтроки.Ячейки.Пометка.УстановитьТекст("");
   КонецЦикла;
   
КонецПроцедуры

и

Процедура ТабличноеПолеПриИзмененииФлажка(Элемент, Колонка)
   
   Если Колонка.Имя = "Пометка" Тогда
       Элемент.ТекущиеДанные.Пометка = Не Элемент.ТекущиеДанные.Пометка;
   КонецЕсли;
   
КонецПроцедуры

PS для (43)
46 Bober
 
02.11.12
11:19
(45) для красоты можно еще запретить непосредственный ввод в поле ввода этой колонки.
47 korableg
 
02.11.12
11:20
(45) Ценю, я недопер до второго варианта и создал второе условие! вот)) если это соревнование, то Bober лидер!
48 korableg
 
02.11.12
11:21
кстати Wobland предлагал, но я чет недогадался, тупой тупой))
49 Stepa86
 
02.11.12
11:21
(16) в свойствах указать "Выбрать" в данных флажка, а не в данных предлагали уже?
50 Bizon2005
 
02.11.12
11:23
51 korableg
 
02.11.12
11:24
(49) и (50) не предлагали, щас поштурмую и этот способ)
52 Wobland
 
02.11.12
11:25
Пакет доступен по ссылке: http://disk.tom.ru/elflvyf

ни строки кода
53 Stepa86
 
02.11.12
11:25
(51) вижу, что еще в (3) предложили
54 Wobland
 
02.11.12
11:26
+(52) ТП на вкладке результат, сроки для посмотреть добавляются с помощью пкм
55 Bober
 
02.11.12
11:32
(52) подтверждаю.
В колонке табличного поля значение из свойства данные перенес в свойство данные флажка.
56 korableg
 
02.11.12
11:32
(53) Да первый раз это делаю и не заметил
(52) с меня пиво :D
57 Wobland
 
02.11.12
11:32
(56) +"о великий гуру"
58 Wobland
 
02.11.12
11:37
59 korableg
 
06.11.12
06:18
Да, зп будет обязательно внесу свой вклад, уже прочел топик тот
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший