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

Оцените статью
Наименование Файл Версия Размер
CookieDurationDescription
cookielawinfo-checkbox-analytics11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional11 monthsThe cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy11 monthsThe cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional
Performance
Analytics
Advertisement
Others