Нажатие кнопки в обработке программно

1. boks 1 07.12.10 10:08 Сейчас в теме
Добрый день!

Из Обработки1 открываю Обработку2

ФормаВыгрузки=глТорговоеОборудование.ПолучитьФорму("ЗагрузкаОборудования", ЭтаФорма);
ФормаВыгрузки.РежимЗагрузки=1;
ФормаВыгрузки.ОбъектЗагрузки=ВыбГруппаТО;
ФормаВыгрузки.Открыть();

открывается нормально.

Вопрос: Как программно из Обработки1 нажать кнопку на форме Обработки2 ?
Или выполнить процедуру из модуля формы Обработки2?

Заранее спасибо!
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
8. user623969_dusa 16.01.18 19:46 Сейчас в теме
(1) как в 1 описано может и будет нажиматься из формы только это форма будет обработки объекта созданного локально а не формы запущенной где-то.. то есть смысла нажимать кнопки в пользовательских формах нет да и не надо это практически
2. пользователь 07.12.10 13:26
Выполнить можно любую функцию и процедуру извне, если объявить ее как экспортную
Функция Выполнить() Экспорт
   ...
КонецФункции;


Программно такие функции вызываются обычно:

ФормаВыгрузки=глТорговоеОборудование.ПолучитьФорму("ЗагрузкаОборудования", ЭтаФорма);
ФормаВыгрузки.РежимЗагрузки=1;
ФормаВыгрузки.ОбъектЗагрузки=ВыбГруппаТО;
ФормаВыгрузки.Выполнить();


Можно так же программно "нажать на кнопку", но так же процедура события кнопки должна быть экспортной:

Форма_1 имеет кнопку "Выполнить" и задан обработчик кВыполнитьНажатие, добавляем Экспорт к процедуре:
Процедура кВыполнитьНажатие(Элемент) Экспорт
	...
КонецПроцедуры


Из Формы_2 выполняем обработчик кнопки "Выполнить в Форме_1:
Форма_1 = ЭтотОбъект.ПолучитьФорму("Форма_1");
ВрмЭлемент = Форма_1.ЭлементыФормы.кВыполнить;
ВрмДействие = ВрмЭлемент.ПолучитьДействие("Нажатие");
Выполнить("Форма_1." + Строка(ВрмДействие) + "(ВрмЭлемент"));
Михаська; user591389_aska_rabota; user859511; user705522_constantin_h; корум; Tiger86; RodinMax; +7 Ответить
4. Allexe8.1 10.06.14 17:04 Сейчас в теме
(2) bomba, еще вариант - через обработку оповещения.
3. tarasenkov 340 10.06.14 13:12 Сейчас в теме
// Программное нажатие на кнопку (обычную или на командной панели) на *чужой* форме с вызовом связанного события
// через переопределение действия формы ПриПовторномОткрытии
// увы, без передачи элемента кнопки в качестве параметра
// для режима запуска "обычное приложение"
Процедура ИнтерактивноНажатьКнопку(Кнопка, ФормаКнопки) Экспорт
	// Удостоверимся что есть права на нажатие
	// Кнопка
	стрОшибка = "";
	Попытка
		Если Кнопка.Видимость = Ложь Тогда
			стрОшибка = стрОшибка + ", Невидима";
		КонецЕсли;	
	Исключение
	КонецПопытки;	
	Попытка
		Если Кнопка.Доступность = Ложь Тогда
			стрОшибка = стрОшибка + ", Недоступна";
		КонецЕсли;	
	Исключение
	КонецПопытки;	
	Если стрОшибка <> "" Тогда
		стрОшибка = Сред(стрОшибка, 3)+" кнопка, которую требуется нажать";
		ВызватьИсключение(стрОшибка);
	КонецЕсли;	
	
	Если ТипЗнч(Кнопка) = Тип("КнопкаКоманднойПанели") Тогда
		Действие = Кнопка.Действие;
	ИначеЕсли ТипЗнч(Кнопка) = Тип("Кнопка") Тогда	
		Действие = Кнопка.ПолучитьДействие("Нажатие");
	КонецЕсли;	
	буфДействие = ФормаКнопки.ПолучитьДействие("ПриПовторномОткрытии");
	ФормаКнопки.УстановитьДействие("ПриПовторномОткрытии", Действие);
	Попытка
		// собственно вызов нажатия кнопки
		ФормаКнопки.Открыть();
		ФормаКнопки.УстановитьДействие("ПриПовторномОткрытии", буфДействие);
	Исключение	
		ФормаКнопки.УстановитьДействие("ПриПовторномОткрытии", буфДействие);
		ВызватьИсключение;
	КонецПопытки;	
КонецПроцедуры
Показать


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

ИнтерактивноНажатьКнопку(ФормаКнопки.ЭлементыФормы.КнопкаОК, ФормаКнопки);

ИнтерактивноНажатьКнопку(ФормаКнопки.ЭлементыФормы.КоманднаяПанель1.Кнопки.ОК, ФормаКнопки);
DesertPunk; user591389_aska_rabota; user705522_constantin_h; корум; Neco; yudakov; perena; adva; vladir; +9 Ответить
5. vladir 114 08.10.14 13:51 Сейчас в теме
(3) tarasenkov, Спасибо! Отличная процедура. Как раз то, что надо, отрабатывает на Ура.
10. Pirat-37 4 20.02.20 16:43 Сейчас в теме
11. FOI1977 1 13.10.20 14:13 Сейчас в теме
(3)
ИнтерактивноНажатьКнопку(ФормаКнопки.ЭлементыФормы.КнопкаОК, ФормаКнопки);


Спасибо за процедурку.
6. adhocprog 1139 16.01.18 15:09 Сейчас в теме
Можно ли как-нибудь нажать кнопку, если вызываемая процедура без слова Экспорт?
7. bad_wag 48 16.01.18 19:37 Сейчас в теме
(6)да, если это серверная процедурв
9. roman77 297 06.05.19 15:37 Сейчас в теме
Как вариант. Подключаем обработчик изменения данных, соответствующий нужной кнопке (в примере "ЗаполнитьПоИНННажатие") и изменяем. Измененные данные (в примере "наименование") потом можно обратно вернуть.

Контрагент = Справочники.Контрагенты.СоздатьЭлемент();
Контрагент.ИНН = "7704217370";
ФК = Контрагент.ПолучитьФорму();
Контрагент.Наименование = "OZON.RU";
ФК.ПодключитьОбработчикИзмененияДанных("Наименование", "ЗаполнитьПоИНННажатие", Ложь);
ФК.Открыть();
Контрагент.Наименование = "";
Показать
12. jan-pechka 403 30.03.23 15:48 Сейчас в теме
здесь просто все: https://1c-bz.ru/programming/238/

			Форма = ПолучитьФорму("Обработка.РаботаСДиаграммами.Форма");     
			Форма.Открыть(); 
			Форма.Элементы.Группа1.ТекущаяСтраница = Форма.Элементы.Гистограмма_;
			Форма.ПостроитьГистограмм(Неопределено); // специально сделала ее Экспорт на Команду кнопки!!!! чтобы нажималась кнопка программно)


главное - это на команде кнопки должен стоять ЭКСПОРТ
13. user1880116 30.03.23 16:55 Сейчас в теме
(12) Четыре года выжидания и на тебе ссылку. Сильно.
ZOMI; jan-pechka; +2 Ответить
14. jan-pechka 403 30.03.23 17:13 Сейчас в теме
(13)
почему 4 года?...автор же 13 лет назад спросил.....ну вот...значит-актуально!))))
ZOMI; Farhat95; +2 Ответить
15. Farhat95 30.03.23 17:51 Сейчас в теме
(14) Подумаешь подождал немного )))
jan-pechka; +1 Ответить
Оставьте свое сообщение
Вакансии
Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день

Программист 1C
Волгоград
зарплата от 200 000 руб.
Полный день

Аналитик
Санкт-Петербург
зарплата от 200 000 руб. до 250 000 руб.
Полный день