Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> позиционирование после стандартного поиска          
iksteram Подменю пользователя
сообщение 30.08.22, 14:40
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 10
Спасибо сказали: 0 раз
Рейтинг: 0

Управляевые формы. Можно ли сделать в динамическом списке (справочник Номенклатура) что бы после стандартного поиска происходило позиционирование на список (первую строку списка)? Как вариант после нажатия клавиши Enter.? Спасибо.

AnryMc Подменю пользователя
сообщение 30.08.22, 15:13
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 314
Спасибо сказали: 95 раз
Рейтинг: 96.6

Цитата(iksteram @ 30.08.22, 15:40) *
что бы после стандартного поиска происходило позиционирование на список (первую строку списка)?


Я "подозреваю" что это события "ПриОчистке" и "ПриИзменении" когда "пусто"...

А позиционирование

&НаКлиенте
Процедура КомандаПерваяСтрока(Команда)
    
    Элементы.ДокументСписок.ТекущаяСтрока = ПолучитьСсылкуПервогоЭлемента();
    
КонецПроцедуры

&НаСервере
Функция ПолучитьСсылкуПервогоЭлемента()
    
    лкСхема     = Элементы.ДокументСписок.ПолучитьИсполняемуюСхемуКомпоновкиДанных();  
    лкНастройки     = Элементы.ДокументСписок.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
    
    //почему-то по умолчанию, в динамических списках нет поля Ссылка, добавляем
    лкПоля = лкНастройки.Структура[0].Выбор.Элементы;
    лкПоле = лкПоля.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
    лкПоле.Поле = Новый ПолеКомпоновкиДанных("Ссылка");
    
    лкКомпоновщик     = Новый КомпоновщикМакетаКомпоновкиДанных();
    лкМакетКомпоновки = лкКомпоновщик.Выполнить(лкСхема, лкНастройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    
    лкПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    лкПроцессорКомпоновки.Инициализировать(лкМакетКомпоновки);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    лкРезультат = Новый ТаблицаЗначений;
    ПроцессорВывода.УстановитьОбъект(лкРезультат);
    ПроцессорВывода.Вывести(лкПроцессорКомпоновки);
    
    
    Если лкРезультат.Количество() > 0  Тогда
        лкСсылка = лкРезультат[0].Ссылка;
    Иначе    
        лкСсылка = Неопределено;
    КонецЕсли;    
    
    Возврат лкСсылка;
    
КонецФункции




Хотя если документов очень много, будет не реально тормозить.
можно по кнопке Home - должно быстрее
&НаКлиенте
Процедура КомандаПерваяСтрока(Команда)
    
    //устанавливаем фокус на таблицу списка
    ЭтаФорма.ТекущийЭлемент = Элементы.ДокументСписок;
    мГенераторКлавиш = Новый COMОбъект("Wscript.shell");
    мГенераторКлавиш.SendKeys("{Home}");
    
КонецПроцедуры

iksteram Подменю пользователя
сообщение 30.08.22, 16:16
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 10
Спасибо сказали: 0 раз
Рейтинг: 0

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

AnryMc Подменю пользователя
сообщение 30.08.22, 16:20
Сообщение #4

Оратор
Иконка группы
Группа: Местный
Сообщений: 314
Спасибо сказали: 95 раз
Рейтинг: 96.6

Я делал свою строку поиска...
Реквизит формы "СтрокаДляПоиска" - тип строка,
&НаКлиенте
Процедура СтрокаДляПоискаПриИзменении(Элемент)
    
    Если ЗначениеЗаполнено(СтрокаДляПоиска) Тогда
        
        УстановитьМойОтбор(СтрокаДляПоиска);
        
    Иначе
        
        УдалитьМойОтбор();
        
    КонецЕсли;
    
КонецПроцедуры

&НаКлиенте
Процедура СтрокаДляПоискаОчистка(Элемент, СтандартнаяОбработка)
    
    УдалитьМойОтбор();
        
КонецПроцедуры

&НаКлиенте
Процедура СтрокаДляПоискаОткрытие(Элемент, СтандартнаяОбработка)
    
    СтандартнаяОбработка = ЛОЖЬ;
    
    Если ЗначениеЗаполнено(Элемент.ТекстРедактирования) Тогда
        
        УстановитьМойОтбор(Элемент.ТекстРедактирования);
        
    КонецЕсли;
    
КонецПроцедуры

&НаКлиенте
Процедура УстановитьМойОтбор(СДП)
    
    ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "Наименование", СДП, ВидСравненияКомпоновкиДанных.Содержит,,Истина);
    
КонецПроцедуры

&НаКлиенте
Процедура УдалитьМойОтбор()
    
    ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(Список, "Наименование");
    
КонецПроцедуры


Цитата(iksteram @ 30.08.22, 17:16) *
Проблема впередаче фокуса после поиска


   //устанавливаем фокус на таблицу списка
    ЭтаФорма.ТекущийЭлемент = Элементы.ДокументСписок;


Сообщение отредактировал AnryMc - 30.08.22, 16:24

iksteram Подменю пользователя
сообщение 30.08.22, 16:23
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 10
Спасибо сказали: 0 раз
Рейтинг: 0

AnryMc @ Сегодня, 17:20 * ,

я знаю как установить фокус, вопрос в какой обработчик это запихнуть? ))

AnryMc Подменю пользователя
сообщение 30.08.22, 16:28
Сообщение #6

Оратор
Иконка группы
Группа: Местный
Сообщений: 314
Спасибо сказали: 95 раз
Рейтинг: 96.6

Цитата(iksteram @ 30.08.22, 17:23) *
вопрос в какой обработчик это запихнуть?


Лично я в своё время не нашёл 8,3,15,1700 на более свежих не знаю...

iksteram Подменю пользователя
сообщение 30.08.22, 18:25
Сообщение #7

Общительный
**
Группа: Пользователи
Сообщений: 10
Спасибо сказали: 0 раз
Рейтинг: 0

AnryMc @ Сегодня, 17:28 * ,

Ну вот и я не нахожу. Мне тут подсказывают, что можно элементу формы назначить обработчик (программно), но у меня вот так тоже не получилось

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
...
Элементы.СписокЗапасыСтандартныйПоиск.УстановитьДействие("ПриИзменении", "ВыполнитьДействиеПриИзмененииДанных");

...
КонецПроцедуры // ПриСозданииНаСервере()

&НаКлиенте
Процедура ВыполнитьДействиеПриИзмененииДанных(Элемент)
    
КонецПроцедуры

AnryMc Подменю пользователя
сообщение 31.08.22, 14:38
Сообщение #8

Оратор
Иконка группы
Группа: Местный
Сообщений: 314
Спасибо сказали: 95 раз
Рейтинг: 96.6

Цитата(iksteram @ 30.08.22, 19:25) *
можно элементу формы назначить обработчик (программно)


а строка поиска - ДополнениеЭлементаФормы Вид: "Отображение строки поиска", где Родитель: Список (таблица формы) - а не элемент...

Можно еще НАВЕРНО через "ж...у":
Повесить ПодключитьОбработчикОжидания с периодом например 1 секунда и анализировать наверно Элементы.ДокументСписок.ПолучитьИсполняемыеНастройкиКомпоновкиДанных() есть ли там отбор...

Сообщение отредактировал AnryMc - 31.08.22, 14:39

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 13:49
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!