Найти в Дзене

Как узнать какая кнопка нажата 1с

Чтобы узнать, какая именно кнопка была нажата в 1С, вам необходимо обработать событие "Нажатие" этой кнопки. Существует несколько подходов, в зависимости от того, где находятся кнопки и как вы хотите обрабатывать их нажатия.

Основные способы определить нажатую кнопку:

1. Использование свойства "ТекущийЭлемент" (для управляемых форм):

Этот способ хорошо подходит, когда у вас на форме есть несколько кнопок, связанных с одной и той же командой, или когда вы хотите выполнить общее действие, зависящее от того, какая кнопка была активирована.

В обработчике команды (на клиенте):

Фрагмент кода

&НаКлиенте
Процедура МояКоманда(Команда)

Если Элементы.ТекущийЭлемент.Имя = "Кнопка1" Тогда
Сообщить("Нажата кнопка 1");
// Выполнить действия для кнопки 1
ИначеЕсли Элементы.ТекущийЭлемент.Имя = "Кнопка2" Тогда
Сообщить("Нажата кнопка 2");
// Выполнить действия для кнопки 2
КонецЕсли;

КонецПроцедуры

  • В свойствах каждой кнопки убедитесь, что у них указана одна и та же команда в поле "Действие".
  • В обработчике этой команды вы получаете доступ к свойству Элементы.ТекущийЭлемент, которое содержит информацию об элементе формы, инициировавшем событие (в данном случае - нажатую кнопку).
  • Сравнивая Элементы.ТекущийЭлемент.Имя с именем конкретной кнопки, вы можете определить, какая из них была нажата. Имя кнопки можно посмотреть в свойствах элемента формы в конфигураторе.

2. Использование различных обработчиков для каждой кнопки:

Этот способ является наиболее явным и простым, если действия для каждой кнопки сильно отличаются.

  1. Для каждой кнопки на форме создайте свой собственный обработчик события "Нажатие".
  2. В каждом обработчике напишите код, который должен выполняться при нажатии именно этой кнопки.

Например, для кнопки с именем "КнопкаОдин":

Фрагмент кода

&НаКлиенте
Процедура КнопкаОдинНажатие(Элемент)

Сообщить("Нажата кнопка 'КнопкаОдин'");
// Выполнить действия, специфичные для КнопкиОдин

КонецПроцедуры

Аналогично создайте обработчик для каждой нужной кнопки.

3. Передача параметра в команду (для управляемых форм):

Этот способ позволяет использовать одну команду для нескольких кнопок, но при этом передавать дополнительную информацию о том, какая именно кнопка была нажата.

  1. Создайте команду с параметром (например, "ДействиеСПараметром").
  2. Для каждой кнопки в поле "Действие" выберите эту команду.
  3. В свойствах каждой кнопки в поле "Параметр команды" укажите уникальное значение (например, строка "Кнопка1", строка "Кнопка2" или число).

В обработчике команды (на клиенте):

Фрагмент кода

&НаКлиенте
Процедура ДействиеСПараметром(Команда)

Если Команда.Параметр = "Кнопка1" Тогда
Сообщить("Нажата кнопка 1 (через параметр)");
// Выполнить действия для кнопки 1
ИначеЕсли Команда.Параметр = "Кнопка2" Тогда
Сообщить("Нажата кнопка 2 (через параметр)");
// Выполнить действия для кнопки 2
КонецЕсли;

КонецПроцедуры

4. Использование свойства "Синоним" (для управляемых форм):

Вы можете присвоить каждой кнопке уникальный синоним и затем использовать Элементы.ТекущийЭлемент.Синоним в обработчике общей команды.

Фрагмент кода

&НаКлиенте
Процедура ОбщаяКоманда(Команда)

Если Элементы.ТекущийЭлемент.Синоним = "СинонимКнопки1" Тогда
Сообщить("Нажата кнопка с синонимом 'СинонимКнопки1'");
// ...
ИначеЕсли Элементы.ТекущийЭлемент.Синоним = "СинонимКнопки2" Тогда
Сообщить("Нажата кнопка с синонимом 'СинонимКнопки2'");
// ...
КонецЕсли;

КонецПроцедуры

5. Для обычных форм (менее распространенный подход в современных конфигурациях):

В обычных формах вы обычно создаете процедуру-обработчик непосредственно для события "Нажатие" каждой кнопки. В этом случае имя процедуры обычно содержит имя элемента формы (кнопки), что позволяет идентифицировать нажатую кнопку по имени вызванной процедуры.

Какой способ выбрать?

  • Если действия для каждой кнопки сильно отличаются, создание отдельных обработчиков может быть наиболее понятным решением.
  • Если у вас много кнопок, выполняющих схожие действия с небольшими отличиями, использование "ТекущийЭлемент" или передача параметра в команду может сделать код более лаконичным и управляемым.
  • Использование синонимов является еще одним вариантом для идентификации кнопок через общую команду.

Выбор зависит от конкретной задачи и структуры вашей формы. Рекомендуется использовать тот способ, который делает ваш код наиболее читаемым и поддерживаемым.