Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 20:51

Переключить фокус окна

Автор Msoul, 17 мая 2012, 13:25

0 Пользователей и 1 гость просматривают эту тему.

Msoul

Добрый день всем!

У меня такая проблемка. В документе реализация сделал собственную обработку подбора номенклатуры. Обработка вызывается всеми способами и по кнопке "три точки" в поле ввода, и при вводе наименования в само поле. Но есть одна неприятная вещь обработка вызывается событиями "ТоварыНоменклатураОкончаниеВводаТекста" и "ТоварыНоменклатураНачалоВыбора", но при открытии фокус с окна обработки уходит на окно документа, и обработка остается "под" документом.
Отсюда вопрос: Можно ли вернуть фокус форме обработки? И Как это сделать?

LexaK

Вообще какую-то странную ситуацию описываете, все отлично должно работать (при правильном использовании)
а для вас, есть комманда

   ВашаФорма.Активизировать();

попробуйте ее
.
если помогло нажмите: Спасибо!

Msoul

Знаю про эту команду. Но в какой момент ее использовать?

LexaK

Так вы сами же пишите:
Но есть одна неприятная вещь обработка вызывается событиями "ТоварыНоменклатураОкончаниеВводаТекста" и "ТоварыНоменклатураНачалоВыбора", но при открытии фокус с окна обработки уходит на окно документа, и обработка остается "под" документом.

вот в этом месте и вызываейте. (Это только для вашего, запутанного случая)

а вообще если хоть немного дружите с 1С, возьмите любую конфигурацию покопайте, там наверняка есть нестандартный побор, отвечающий вашей задачи, но написанный правильно. Посмотрите как там сделано и у себя реализуйте. Примерно 80% при написании новой программы в 1С занимает копирование старых кодов, зачастую своих, иногда чужих.

если помогло нажмите: Спасибо!

Msoul

Вот как раз в этот момет и не получается. Форма документа возвращает фокус позже, последнее отрабатваемое событие формой "ТоварыНоменклатураПриИзменении". Но и там Активизировать() не срабатывает.

LexaK

Не зная вашей программы трудно что-то советовать.
где-то в перечисленных вами событиях надо использовать комманду

СтандартнаяОбработка = Ложь;
если помогло нажмите: Спасибо!

Msoul

Да там ничего особого нет!


Процедура ТоварыНоменклатураНачалоВыбора(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = ЛОЖЬ;
//ВызовоОбработки
КонецПроцедуры

Процедура ТоварыНоменклатураОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
СтандартнаяОбработка = ЛОЖЬ;
//ВызовоОбработки
КонецПроцедуры

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск