Имя: Пароль:
1C
1С v8
Как получить заголовок команды
0 luter-89
 
03.09.15
13:24
Ситуация интересная.

Заголовок команды на клиенте не доступен, но доступен на сервере. Но на сервер его передать не получится, так как он не доступен на клиенте. Команду на сервер передать тоже нельзя. Вот)
1 butterbean
 
03.09.15
13:27
зачем ее передавать на сервер, если она там уже есть?
2 luter-89
 
03.09.15
13:29
Проблема в том, что если команда одна, а на форме их, допустим 20. И нужно понять какая именно команда на форме отработала. По идее нужно определять по заголовку команды. Но я решил с помощью ТекущийЭлемент.Имя
3 butterbean
 
03.09.15
13:35
(2) у команды есть еще Имя, оно везде доступно
4 luter-89
 
03.09.15
13:37
Имя команды - это имя команды, а не имя элемента на форме
5 luter-89
 
03.09.15
13:40
Если есть команда Удалить, и две кнопки на форме УдалитьВсе и УдалитьНеВсе у которых имя команды Удалить и соответственно обработчик Удалить(Команда). То команда.Имя выдаст имя команды, а не команды на форме
6 butterbean
 
03.09.15
13:44
(5) чтобы не страдать такой херней, лучше делать разные команды для разных кнопок
7 luter-89
 
03.09.15
13:52
(6) Нужно пытаться писать код универсальнее,  а не плодить лишнее
8 luter-89
 
03.09.15
13:53
Бывают ситуации, когда нет смысла делать впринципе одинаковые команды
9 luter-89
 
03.09.15
13:56
&НаСервере
Процедура УстановитьПоУмолчаниюНаСервере()
    
    Если ПричинаНепланПоУмолчанию <> Перечисления.ПричиныВнеплановыхРабот.ПустаяСсылка() Тогда
        
        Для Каждого Строка Из Объект.НеплановыеРаботы Цикл
            
            Строка.ПричинаВыполненнойРаботы = ПричинаНепланПоУмолчанию;
            
        КонецЦикла;
        
    КонецЕсли;
    
КонецПроцедуры

&НаКлиенте
Процедура УстановитьПоУмолчанию(Команда)
    
    Если ТекущийЭлемент.Имя = "УстановитьПоУмолчанию" Тогда
        
        УстановитьПоУмолчаниюНаСервере();
        
    ИначеЕсли ТекущийЭлемент.Имя = "УстановитьПоУмолчанию1" Тогда
        
        УстановитьПоУмолчанию1НаСервере();
        
    КонецЕсли;    
    
КонецПроцедуры

&НаСервере
Процедура УстановитьПоУмолчанию1НаСервере()

    Если ПричинаПланПоУмолчанию <> Перечисления.ПричиныНевыполненияРабот.ПустаяСсылка() Тогда
        
        Для Каждого Строка Из Объект.НевыполненныеРаботы Цикл
            
            Строка.ПричинаНевыполненияРаботы = ПричинаПланПоУмолчанию;
            
        КонецЦикла;
        
    КонецЕсли;

КонецПроцедуры // УстановитьПоУмолчанию1НаСервере()
10 Лефмихалыч
 
03.09.15
13:58
(0) в стандартах и методиках русским по белому написано, что обработчики у разных команд должны быть разными. Как раз, чтобы вот такие глупые проблемы не решать
11 butterbean
 
03.09.15
14:00
(9) вот это все на клиенте спокойно делается
12 luter-89
 
03.09.15
14:13
(10) А если это одна команда, только на форме находится в разных местах, допустим на разных страницах
13 luter-89
 
03.09.15
14:13
(11) Что именно? Команда.Имя доступно и на клиенте и на сервере. Но речь то не об этом
14 mikecool
 
03.09.15
14:15
(12) так это одна команда, у нее один обработчик, не понимаю проблемы
15 luter-89
 
03.09.15
14:16
(14) Все верно, одна команда с одним обработчиком и 2-я ми элементами на форме
16 butterbean
 
03.09.15
14:18
(13) то, что у тебя запихано в серверные процедуры: условие и циклы
17 VikingKosmo
 
03.09.15
14:28
(15) команда одна, то почему у нее должно быть ДВА обработчика?!
18 luter-89
 
03.09.15
14:42
(17) Да блин, команда одна и обработчик один. На форме 2 команды
19 VikingKosmo
 
03.09.15
14:49
(18) если на форме ДВЕ команды, сделай ДВА обработчика...
20 luter-89
 
03.09.15
14:55
Вот такой пример.

Есть на форме 10 страниц с 10 табличными частями  в каждой.
И для каждой ТЧ есть кнопка Очистить. Можно сделать одну команду с одним обработчиком и 10 кнопок на форме. А потом в обработчике определять какую именно кнопку нажали. По идее все кнопки формы могут работать через один обработчик. Нужно только условия писать. Что плохого в таком подходе?
21 Mort
 
03.09.15
15:01
(20) Плохо то, что в обработчике нельзя определить элемент формы, который вызвал команду. Даже по заголовку.
Будь мужиком, сделай 10 команд, б****ть!!!
22 luter-89
 
03.09.15
15:07
(21) Да можно)
23 luter-89
 
03.09.15
15:07
По текущему элементу формы
24 Mort
 
03.09.15
15:14
(23) Ну как хошь, проверяй тупо:

Если ТекущийЭлемент = Элементы.Кнопка1 Тогда

только не подписывай что ты это делал, а то тебя поймают и прострелят коленки.
25 luter-89
 
03.09.15
15:25
Если ТекущийЭлемент.Имя = "Кнопка1"
26 luter-89
 
03.09.15
15:25
Имена то все уникальные
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан