Имя: Пароль:
1C
1С v8
Гляньте несложный алгоритм с пометками строк таблицы
0 DJ Anthon
 
13.08.13
15:09
1. Не, не пойдет 100% (1)
2. Смысл в этом есть 0% (0)
3. А лучше сделать вот так / Тут баг 0% (0)
4. КГ/АМ 0% (0)
Всего мнений: 1

Нужна любая таблица (табличное поле) с пометками, у табличного поля есть метод. ну еще нужна переменная модуля Пометки типа строка.

Зачем оно надо: около таблицы принято размещать кнопочки, которыми можно сразу отметить все строки или разотметить. а в 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) писать не лень? ну ладно, дело твое
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой