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

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

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

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

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

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



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

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

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

...

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

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

3. Al3x 1 29.07.22 12:15 Сейчас в теме
Так изначально и было, гонял открытие формы по кругу, после этого я решил добавить кнопку и с ней потестировать
(2)

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

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

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

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

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

...

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

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