![]() |
|
Гляньте несложный алгоритм с пометками строк таблицы | ☑ | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0
DJ Anthon
13.08.13
✎
15:09
|
Нужна любая таблица (табличное поле) с пометками, у табличного поля есть метод. ну еще нужна переменная модуля Пометки типа строка.
Зачем оно надо: около таблицы принято размещать кнопочки, которыми можно сразу отметить все строки или разотметить. а в 7.7 когда-то было принято еще и инвертировать выделение. но эти кнопочки на скорую руку рисовать влом и дизайн часто они портят, особенно когда таблиц много, просто неохота их никуда пихать. тем не менее, заголовки таблиц неинтерактивны, и контекстное меню тоже делать неохота. я решил использовать такую особенность таких таблиц-списков - как правило, одну и ту же пометку пользователи не нажимают несколько раз. короче, сделал так, чтобы на троекратное нажатие любой строчки все пометки инвертировались, на последующие троекратные нажатия все отметки устанавливались в зависимости от текущей. то есть можно особо не двигая мышкой (до кнопок с галочками, которые еще найти надо) быстренько отметить все пункты. Плюс - простота и универсальность. Минус - надо еще об этом догадаться, что таблица так умеет. пока что для себя сделаю. Процедура ТЗПриИзмененииФлажка(Элемент, Колонка) НС = Элемент.ТекущиеДанные.НомерСтроки; Пометки = Пометки + "!" + НС; Если СтрЗаменить(Пометки, "!" + НС, "") = "" Тогда Если СтрДлина(Пометки) % (3 * СтрДлина("!" + НС)) = 0 Тогда НС = ?(СтрДлина(Пометки) / СтрДлина("!" + НС) = 3, -НС, Элемент.ТекущиеДанные.Пометка); Для Каждого Строка Из ТЗ Цикл Строка.Пометка = ?(НС < 0, ?(-НС = Строка.НомерСтроки, Строка.Пометка, НЕ Строка.Пометка), НС); КонецЦикла; Иначе Возврат; КонецЕсли; Иначе Пометки = "!" + НС; КонецЕсли; КонецПроцедуры |
|||||||||||||
1
Попытка1С
13.08.13
✎
15:11
|
"Минус - надо еще об этом догадаться, что таблица так умеет. пока что для себя сделаю. "
Именно поэтому нафиг не надо, иконки оно как-то нагляднее. Имхо. Не, не пойдет |
|||||||||||||
2
DJ Anthon
13.08.13
✎
15:15
|
(1) тогда почему их мало кто делает? сколько обработок ни качаю из инета, этих кнопок жутко не хватает. да и привязки начинают плясать, кнопки за экран улетают и все...
http://zalil.ru/34675388 вот пример (нужна любая база 8.2 и база ТиС) |
|||||||||||||
3
pessok
13.08.13
✎
15:39
|
брррр. кнопки в панель действий ТЧ, есть даже предопределенные платформенные картинки. процедуры - пометить все, распометить, инвентировать - две строчки кода
|
|||||||||||||
4
DJ Anthon
13.08.13
✎
15:41
|
(4) никогда такого не видел
|
|||||||||||||
5
Fish
гуру
13.08.13
✎
15:43
|
(2) Привязки начинают плясать только у тех, кто не умеет ими пользоваться.
|
|||||||||||||
6
pessok
13.08.13
✎
15:43
|
Процедура Помечать(ВидПометки)
Для Каждого ТекСтр Из ТЧ Цикл Если ВидПометки = "Пометить" Тогда ТекСтр.Пометка = Истина; ИначеЕсли ВидПометки = "Снять" Тогда ТекСтр.Пометка = Ложь; ИначеЕсли ВидПометки = "Инвертировать" Тогда ТекСтр.Пометка = Не ТекСтр.Пометка; КонецЕсли КонецПроцедуры |
|||||||||||||
7
pessok
13.08.13
✎
15:44
|
ну и цикл там завершить, ога :)
|
|||||||||||||
8
DJ Anthon
13.08.13
✎
15:46
|
(3) а нет, вру, вижу, иногда есть. но это в типовых только.
(7) ну это ясно понятно, а куда эту процедуру пихать? |
|||||||||||||
9
pessok
13.08.13
✎
15:49
|
(8) вызывать ее при нажатии на кнопочки с нужным праметром. в параметр лучше не текст передавать, а кнопку
|
|||||||||||||
10
DJ Anthon
13.08.13
✎
15:52
|
(9) не, это не пойдет, я уже в (0) описал почему. мне кнопочки не надо. как в контекстное меню добавить эти команды? так, чтобы остальные команды не исчезли (которые автоматом предлагаются)
|
|||||||||||||
11
pessok
13.08.13
✎
15:55
|
(10) тебе и не говорят про кнопочки. тебе говорять в панель таблицы, рядом с действиями добавить/редактировать/удалить и т.п.
|
|||||||||||||
12
DJ Anthon
13.08.13
✎
15:56
|
(11) какую еще панель? мне панель не надо. максимум, что есть - контекстное меню.
|
|||||||||||||
13
pessok
13.08.13
✎
15:58
|
ну значит добавляй команды в контекстное меню, кто тебе не дает то?
|
|||||||||||||
14
DJ Anthon
13.08.13
✎
16:02
|
(13) лень...
|
|||||||||||||
15
pessok
13.08.13
✎
16:04
|
а копрокод из (0) писать не лень? ну ладно, дело твое
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |