Управляевые формы. Можно ли сделать в динамическом списке (справочник Номенклатура) что бы после стандартного поиска происходило позиционирование на список (первую строку списка)? Как вариант после нажатия клавиши Enter.? Спасибо.
&НаКлиенте
Процедура КомандаПерваяСтрока(Команда)
Элементы.ДокументСписок.ТекущаяСтрока = ПолучитьСсылкуПервогоЭлемента();
КонецПроцедуры
&НаСервере
Функция ПолучитьСсылкуПервогоЭлемента()
лкСхема = Элементы.ДокументСписок.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
лкНастройки = Элементы.ДокументСписок.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
//почему-то по умолчанию, в динамических списках нет поля Ссылка, добавляем
лкПоля = лкНастройки.Структура[0].Выбор.Элементы;
лкПоле = лкПоля.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
лкПоле.Поле = Новый ПолеКомпоновкиДанных("Ссылка");
лкКомпоновщик = Новый КомпоновщикМакетаКомпоновкиДанных();
лкМакетКомпоновки = лкКомпоновщик.Выполнить(лкСхема, лкНастройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
лкПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
лкПроцессорКомпоновки.Инициализировать(лкМакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
лкРезультат = Новый ТаблицаЗначений;
ПроцессорВывода.УстановитьОбъект(лкРезультат);
ПроцессорВывода.Вывести(лкПроцессорКомпоновки);
Если лкРезультат.Количество() > 0 Тогда
лкСсылка = лкРезультат[0].Ссылка;
Иначе
лкСсылка = Неопределено;
КонецЕсли;
Возврат лкСсылка;
КонецФункции
&НаКлиенте
Процедура КомандаПерваяСтрока(Команда)
//устанавливаем фокус на таблицу списка
ЭтаФорма.ТекущийЭлемент = Элементы.ДокументСписок;
мГенераторКлавиш = Новый COMОбъект("Wscript.shell");
мГенераторКлавиш.SendKeys("{Home}");
КонецПроцедуры
AnryMc @ Сегодня, 16:13
,
Проблема впередаче фокуса после поиска, у строки поиска нет событий. думал может можно программно назначить обработчик, тоже не получается
Я делал свою строку поиска...
Реквизит формы "СтрокаДляПоиска" - тип строка,
&НаКлиенте
Процедура СтрокаДляПоискаПриИзменении(Элемент)
Если ЗначениеЗаполнено(СтрокаДляПоиска) Тогда
УстановитьМойОтбор(СтрокаДляПоиска);
Иначе
УдалитьМойОтбор();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СтрокаДляПоискаОчистка(Элемент, СтандартнаяОбработка)
УдалитьМойОтбор();
КонецПроцедуры
&НаКлиенте
Процедура СтрокаДляПоискаОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = ЛОЖЬ;
Если ЗначениеЗаполнено(Элемент.ТекстРедактирования) Тогда
УстановитьМойОтбор(Элемент.ТекстРедактирования);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьМойОтбор(СДП)
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "Наименование", СДП, ВидСравненияКомпоновкиДанных.Содержит,,Истина);
КонецПроцедуры
&НаКлиенте
Процедура УдалитьМойОтбор()
ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(Список, "Наименование");
КонецПроцедуры
//устанавливаем фокус на таблицу списка
ЭтаФорма.ТекущийЭлемент = Элементы.ДокументСписок;
AnryMc @ Сегодня, 17:20
,
я знаю как установить фокус, вопрос в какой обработчик это запихнуть? ))
AnryMc @ Сегодня, 17:28
,
Ну вот и я не нахожу. Мне тут подсказывают, что можно элементу формы назначить обработчик (программно), но у меня вот так тоже не получилось
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
...
Элементы.СписокЗапасыСтандартныйПоиск.УстановитьДействие("ПриИзменении", "ВыполнитьДействиеПриИзмененииДанных");
...
КонецПроцедуры // ПриСозданииНаСервере()
&НаКлиенте
Процедура ВыполнитьДействиеПриИзмененииДанных(Элемент)
КонецПроцедуры
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua