Меню Закрыть

1С позиционирование в динамическом списке

Содержание

Потратил кучу времени. Оказалось, что если у динамического списка есть основная таблица, то текущая строка это ссылка и ее можно просто взять и заполнить ссылкой!

Форма обработки. В ней есть список приемов. В обработку передали параметр «Прием» и хотим этот прием видеть активированным в списке.

Россия: +7 (800) 3333-229

  • Заказчикам
  • Специалистам
  • Услуги
  • Продукты и решения
  • О компании
  • А. Белов +

Одним из неприятных моментов при работе с динамическими списками управляемого приложения является невозможность использования такой привычной для обычного приложения опции, как «поиск по строке». Предлагаю один из вариантов реализации поиска по первым буквам в динамическом списке на основе общей Формы Подбора из типовой конфигурации УНФ.

В описанном ниже примере поиск вместе с сортировкой по полю реализован для колонок Код, Артикул, Наименование.

Добавляем Реквизиты формы ПоискКод, ПоискАртикул, ПоискНаименование с типом «Строка».Вносим их в Группу Поиск на форме.

Программируем события поля ввода АвтоПодбор:

процедура Установитьпорядок ( ИмяПоля )
Если НЕ ( СписокЗапасов . Порядок . элементы . количество () = 1 и СписокЗапасов . Порядок . элементы [ 0 ]. поле = Новый ПолеКомпоновкиДанных ( ИмяПоля )) тогда
СписокЗапасов . Порядок . элементы . очистить ();
НЭлемент = СписокЗапасов . Порядок . Элементы . Добавить ( Тип ( "ЭлементПорядкаКомпоновкиДанных" ));
НЭлемент . Использование = Истина;
НЭлемент . Поле = Новый ПолеКомпоновкиДанных ( ИмяПоля );
НЭлемент . ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных . Возр ;
НЭлемент . РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных . Обычный ;
конецЕсли;
КонецПроцедуры

&НаСервере
Процедура УстановитьПоискПоСтрокеНаСервере ( Текст , ИмяКолонки )
ПостроительЗапроса = новый построительЗапроса ;
ПостроительЗапроса . Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| ПОДСТРОКА(Номенклатура." + ИмяКолонки + " , 1, &Длина) = &Зн
| <ГДЕ
| Номенклатура.Ссылка.*>" ;
ПостроительЗапроса . Параметры . Вставить ( "Длина" , СтрДлина ( Текст ));
ПостроительЗапроса . Параметры . Вставить ( "Зн" , Текст );

Если Не СписокЗапасов . Параметры . элементы [ 2 ]. Значение = Справочники . Номенклатура . ПустаяСсылка () тогда
НЭлемент = ПостроительЗапроса . Отбор . Добавить ( "Ссылка" );
НЭлемент . ВидСравнения = ВидСравнения . ВИерархии ;
НЭлемент . Значение = СписокЗапасов . Параметры . элементы [ 2 ]. Значение ;
НЭлемент . Использование = Истина;
КонецЕсли;
ПостроительЗапроса . Выполнить ();
ТЗ = Построительзапроса . Результат . Выгрузить ();
Сп = новый СписокЗначений ;
Сп . ЗагрузитьЗначения ( ТЗ . ВыгрузитьКолонку ( "Ссылка" ));

Читайте также:  Сколько на картинке прямоугольников

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

Таким образом получаем , что при наборе первых букв искомого варианта в поле «по артикулу» , например, группы поиска, происходит сортировка списка по колонке Артикул и отбор тех строк, артикул которых начинается с набранных символов.

Тут , конечно, был бы удачнее не отбор, а позиционирование на первом найденном в списке элементе . Т.е. мне бы хотелось в тексте запроса Построителя добавить «Первые 1» и дальше просто позиционироваться на найденной ссылке, но как найти позицию в динамическом списке ? Ответа на этот вопрос не нашла.

Буду рада любым предложениям по оптимизации этого варианта решения вопроса или ссылкам на другой вариант решения.

Поскольку поиск в динамических списках в типовой УТ сводится в конечном счете к отбору, что не всегда привычно для пользователей, работавших ранее без динамических списков, привожу пример простого позиционирования в списке.

Пример на работе формы подбора в документ закупки в конфигурации УТ 11.2 (11.2.3.163). По сравнению с типовой обработкой внесены следующие изменения:

в конце модуля #Область ПоискПоНаименованию ;

добавлены команды: ПоискПоНаименованиюВыполнить, ПоискПоНаименованиюФокус

добавлен реквизит ПоискПоНаименованию, Строка

добавлены кнопки в группу ФормаГорячиеКлавиши: ПоискПоНаименованию2 (команда ПоискПоНаименованиюФокус), ПоискПоНаименованиюВыполнить (команда ПоискПоНаименованиюВыполнить)

добавлены поля ввода: ПоискПоНаименованию1 (при ) в группе СтандартныйПоискНоменклатура, ПоискПоНаименованию в группе РасширенныйПоискНоменклатура. Данные для обоих полей ПоискПоНаименование, для обоих полей при изменении вызывается ПоискПоНаименованиюПриИзменении

Привожу код области #Область ПоискПоНаименованию

Скачать файлы

Специальные предложения

См. также

Расширение подсистемы доставки и логистики, интеграция с Яндекс.Картами (в том числе WebKit) 12

Данная разработка — инструмент для оптимизации работы транспортной службы. Зоны доставки на карте. Автоматическое определение зоны по адресу. Планирование графика доставок. Расчет маршрута и контроль пробега.

11.11.2019 1038 7 andryandry 6

Генерация управляемой формы на основе обычной (proof of concept) 20

В статье рассматривается техническая возможность автоматизированной генерации управляемой формы на основе обычной.

06.11.2019 1638 1 user700211_a.straltsou 11

"Все функции" с плюшками 10

Устали ждать пока откроются "Все функции"? Мучает ностальгия по быстрому позиционированию по первым символам? Попробуйте "Все функции" с плюшками!

06.11.2019 1285 12 codejs 6

Аппроксимация в запросе. Прогноз продаж на практике 10

Составление прогноза продаж на основании данных предыдущих 3-х периодов. Методом линейной аппроксимации. На практике, напрямую в запросе. Оказывается, это гораздо проще, чем звучит.

15.09.2019 1728 3 kida1 0

Картинки конфигурации 26

Иногда перед разработчиками 1С встает вопрос: есть ли подходящая общая картинка в конфигурации или нужно рисовать свою иконку для кнопки? А какие вообще картинки есть в конфигурации и какие у большинства из них размеры? Поиск подходящей картинки через Конфигуратор, мне показался не совсем удобным, поэтому и появился отчет по общим картинкам конфигурации. Отчет универсальный должен работать в любой конфигурации и на обычных и на управляемых формах. Важно: версия платформы 1С должна быть 8.3.14 или выше.

10.09.2019 2050 10 rusmil 6

Описание формата внутреннего представления данных 1С в контексте обмена данными 150

Фирма 1С не рекомендует использовать внутреннее представление данных для любых целей, которые отличны от обмена с 1С:Предприятием 7.7. Но сама возможность заглянуть на "внутреннюю кухню" платформы с помощью функций ЗначениеВСтрокуВнутр(), ЗначениеВФайл(), ЗначениеИзСтрокиВнутр() и ЗначениеИзФайла(), дала возможность сообществу программистов 1С разработать новые приемы разработки и анализа. Так, именно на использовании внутреннего представления был построен алгоритм "быстрого массива", который позволяет практически мгновенно создать массив в памяти на основании строки с разделителями. С помощью разбора внутреннего представления можно "на лету" программным кодом выполнить анализ обычной формы и даже сделать редактор графической схемы. Во внутреннем формате сохраняют свои данные между сеансами различные популярные внешние обработки. А еще это возможность сделать быстрый обмен с внешними системами.

06.09.2019 5492 5 Dementor 27

Наименование Файл Версия Размер

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.