Потратил кучу времени. Оказалось, что если у динамического списка есть основная таблица, то текущая строка это ссылка и ее можно просто взять и заполнить ссылкой!
Форма обработки. В ней есть список приемов. В обработку передали параметр «Прием» и хотим этот прием видеть активированным в списке.
Россия: +7 (800) 3333-229
- Заказчикам
- Специалистам
- Услуги
- Продукты и решения
- О компании
- А. Белов +
Одним из неприятных моментов при работе с динамическими списками управляемого приложения является невозможность использования такой привычной для обычного приложения опции, как «поиск по строке». Предлагаю один из вариантов реализации поиска по первым буквам в динамическом списке на основе общей Формы Подбора из типовой конфигурации УНФ.
В описанном ниже примере поиск вместе с сортировкой по полю реализован для колонок Код, Артикул, Наименование.
Добавляем Реквизиты формы ПоискКод, ПоискАртикул, ПоискНаименование с типом «Строка».Вносим их в Группу Поиск на форме.
Программируем события поля ввода АвтоПодбор:
процедура Установитьпорядок ( ИмяПоля )
Если НЕ ( СписокЗапасов . Порядок . элементы . количество () = 1 и СписокЗапасов . Порядок . элементы [ 0 ]. поле = Новый ПолеКомпоновкиДанных ( ИмяПоля )) тогда
СписокЗапасов . Порядок . элементы . очистить ();
НЭлемент = СписокЗапасов . Порядок . Элементы . Добавить ( Тип ( «ЭлементПорядкаКомпоновкиДанных» ));
НЭлемент . Использование = Истина;
НЭлемент . Поле = Новый ПолеКомпоновкиДанных ( ИмяПоля );
НЭлемент . ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных . Возр ;
НЭлемент . РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных . Обычный ;
конецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьПоискПоСтрокеНаСервере ( Текст , ИмяКолонки )
ПостроительЗапроса = новый построительЗапроса ;
ПостроительЗапроса . Текст = «ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| ПОДСТРОКА(Номенклатура.» + ИмяКолонки + » , 1, &Длина) = &Зн
| <ГДЕ
| Номенклатура.Ссылка.*>» ;
ПостроительЗапроса . Параметры . Вставить ( «Длина» , СтрДлина ( Текст ));
ПостроительЗапроса . Параметры . Вставить ( «Зн» , Текст );
Если Не СписокЗапасов . Параметры . элементы [ 2 ]. Значение = Справочники . Номенклатура . ПустаяСсылка () тогда
НЭлемент = ПостроительЗапроса . Отбор . Добавить ( «Ссылка» );
НЭлемент . ВидСравнения = ВидСравнения . ВИерархии ;
НЭлемент . Значение = СписокЗапасов . Параметры . элементы [ 2 ]. Значение ;
НЭлемент . Использование = Истина;
КонецЕсли;
ПостроительЗапроса . Выполнить ();
ТЗ = Построительзапроса . Результат . Выгрузить ();
Сп = новый СписокЗначений ;
Сп . ЗагрузитьЗначения ( ТЗ . ВыгрузитьКолонку ( «Ссылка» ));
СписокЗапасов . Отбор . Элементы . Очистить ();
НЭлемент = СписокЗапасов . Отбор . Элементы . добавить ( Тип ( «ЭлементОтбораКомпоновкиДанных» ));
Нэлемент . левоеЗначение = новый ПолекомпоновкиДанных ( «Номенклатура» );
НЭлемент . ВидСравнения = ВидСравненияКомпоновкиДанных . ВСписке ;
НЭлемент . ПравоеЗначение = Сп ;
НЭлемент . Использование = истина;
КонецПроцедуры
Таким образом получаем , что при наборе первых букв искомого варианта в поле «по артикулу» , например, группы поиска, происходит сортировка списка по колонке Артикул и отбор тех строк, артикул которых начинается с набранных символов.
Тут , конечно, был бы удачнее не отбор, а позиционирование на первом найденном в списке элементе . Т.е. мне бы хотелось в тексте запроса Построителя добавить «Первые 1» и дальше просто позиционироваться на найденной ссылке, но как найти позицию в динамическом списке ? Ответа на этот вопрос не нашла.
Буду рада любым предложениям по оптимизации этого варианта решения вопроса или ссылкам на другой вариант решения.
Поскольку поиск в динамических списках в типовой УТ сводится в конечном счете к отбору, что не всегда привычно для пользователей, работавших ранее без динамических списков, привожу пример простого позиционирования в списке.
Пример на работе формы подбора в документ закупки в конфигурации УТ 11.2 (11.2.3.163). По сравнению с типовой обработкой внесены следующие изменения:
в конце модуля #Область ПоискПоНаименованию ;
добавлены команды: ПоискПоНаименованиюВыполнить, ПоискПоНаименованиюФокус
добавлен реквизит ПоискПоНаименованию, Строка
добавлены кнопки в группу ФормаГорячиеКлавиши: ПоискПоНаименованию2 (команда ПоискПоНаименованиюФокус), ПоискПоНаименованиюВыполнить (команда ПоискПоНаименованиюВыполнить)
добавлены поля ввода: ПоискПоНаименованию1 (при ) в группе СтандартныйПоискНоменклатура, ПоискПоНаименованию в группе РасширенныйПоискНоменклатура. Данные для обоих полей ПоискПоНаименование, для обоих полей при изменении вызывается ПоискПоНаименованиюПриИзменении
Привожу код области #Область ПоискПоНаименованию
- Скачать файлы
- Специальные предложения
- См. также
- Расширение подсистемы доставки и логистики, интеграция с Яндекс.Картами (в том числе WebKit) 12
- Генерация управляемой формы на основе обычной (proof of concept) 20
- «Все функции» с плюшками 10
- Аппроксимация в запросе. Прогноз продаж на практике 10
- Картинки конфигурации 26
- Описание формата внутреннего представления данных 1С в контексте обмена данными 150
Скачать файлы
Наименование | Файл | Версия | Размер |
---|---|---|---|