Программное нажатие кнопки на форме

1. user1671936 1 29.07.22 11:57 Сейчас в теме
Здравствуйте. Есть форма обработки , при сканировании через ТСД открывается другая форма, в которой так же происходит сканирование. Проблема заключается в том, что если программно закрывать вторую форму, то из первой происходит повторное открывание , и так по кругу гоняет открытие этой формы. А если добавить на вторую форму кнопку и закрывать ее через физическое нажатие данной кнопки, то код отрабатывает дальше. Просто программно вызывать нажатие данной кнопки так же приводит к зацикливанию открытия формы. Подскажите, пожалуйста, как это можно починить? Чем физическое нажатие отличается от программного?

//////////////////////////////код из первой формы
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	Если Источник = "ПодключаемоеОборудование"
		И ИмяСобытия = "Barcode"
		И ВводДоступен()	
		Тогда
		Штрихкод = Параметр;	
                Назначение = ОткрытьФормуМодально("Обработка.ПолучениеНазначенийНоменклатуры.Форма.ФормаСканированияНазначения");
		
		ОбработатьШтрихкод(СокрЛП(Штрихкод));
		
	КонецЕсли;
КонецПроцедуры

//////////////код из второй формы

&НаКлиенте
Процедура ОК(Команда)
	Если ЗначениеЗаполнено(Назначение) Тогда
		ЭтаФорма.Закрыть(СокрЛП(Назначение));
	Иначе
		Предупреждение("Не найдено назначение с таким штрихкодом!");
		Возврат;
	КонецЕсли;	
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	Если Источник = "ПодключаемоеОборудование"
		И ИмяСобытия = "Barcode"
		И ВводДоступен()
		Тогда
		Штрихкод = Параметр;	
		Назначение= ОбработатьШтрихкод(СокрЛП(Штрихкод));

		Ок(Неопределено);   /////////если это закомментить, то все отрабатывает нормально. При программном нажатии зацикливает открытие формы.
			
	КонецЕсли;
КонецПроцедуры


Показать
По теме из базы знаний
Найденные решения
6. spacecraft 29.07.22 12:56 Сейчас в теме
(1)
Ок(Неопределено);

вместо этого кода использовать подключение обработчика ожидания.

ПодключитьОбработчикОжидания("ЗакрытьФорму", 0.1, Истина);

...

&НаКлиенте
Процедура ЗакрытьФорму() Экспорт
    ОК(Неопределено);
КонецПроцедуры
user1671936; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ZergKRSK 129 29.07.22 12:13 Сейчас в теме
(1)
Ок(Неопределено);

Вместо этого написать
Если ЗначениеЗаполнено(Назначение) Тогда
        ЭтаФорма.Закрыть(СокрЛП(Назначение));
    Иначе
        Возврат;
    КонецЕсли;    
3. user1671936 1 29.07.22 12:15 Сейчас в теме
Так изначально и было, гонял открытие формы по кругу, после этого я решил добавить кнопку и с ней потестировать
(2)

Вместо этого написать
Если ЗначениеЗаполнено(Назначение) Тогда
ЭтаФорма.Закрыть(СокрЛП(Назначение));
Иначе
Возврат;
КонецЕсли;

4. ZergKRSK 129 29.07.22 12:16 Сейчас в теме
(3)
Так изначально и было, гонял открытие формы по кругу

Назначение при этом было заполнено или нет?
5. user1671936 1 29.07.22 12:18 Сейчас в теме
(4) заполнено. Иначе сработал бы возврат к этой же самой форме, и я для проверки Сообщить(Назначение) прописал.
6. spacecraft 29.07.22 12:56 Сейчас в теме
(1)
Ок(Неопределено);

вместо этого кода использовать подключение обработчика ожидания.

ПодключитьОбработчикОжидания("ЗакрытьФорму", 0.1, Истина);

...

&НаКлиенте
Процедура ЗакрытьФорму() Экспорт
    ОК(Неопределено);
КонецПроцедуры
user1671936; +1 Ответить
7. user1671936 1 29.07.22 13:42 Сейчас в теме
(6)
ПодключитьОбработчикОжидания("ЗакрытьФорму", 0.1, Истина);
спасибо!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот