Поиск по наименованию в динамическом списке

08.02.17

Задачи пользователя - Адаптация типовых решений

Пример позиционирования в динамическом списке по набранной строке

Скачать исходный код

Наименование Файл Версия Размер
ПодборТоваровВДокументЗакупки.epf
.epf 66,90Kb
9
.epf 66,90Kb 9 Скачать

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

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

модуль формы:

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

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

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

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

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

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

#Область ПоискПоНаименованию
процедура СпозиционироватьсяВСправочнике(Результат, ДополнительныеПараметры) экспорт
	
	Текст=сокрП(ПоискПоНаименованию);
	
	Если Не ПодборТоваровКлиентСервер.ЭтоФормаПодбораТоваровПоКатегориям(ЭтаФорма) Тогда
		ИдСписка=ПодборТоваровКлиентСервер.ИмяСпискаНоменклатурыПоВариантуПоиска(ЭтаФорма);
	Иначе
		ИдСписка="СписокРасширенныйПоискНоменклатура";
	КонецЕсли;
	
 	_Список=Элементы[ИдСписка];
	Настройки=_Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
	
	
	Схема=_Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
	
	КомпоновщикМакета=Новый КомпоновщикМакетаКомпоновкиДанных();
	МакетКомпоновки=КомпоновщикМакета.Выполнить(Схема,Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
	
	МакетКомпоновки.НаборыДанных.НаборДанныхДинамическогоСписка.Запрос=
		МакетКомпоновки.НаборыДанных.НаборДанныхДинамическогоСписка.Запрос+
	"
	//|и СправочникНоменклатура.НаименованиеПолное подобно """+Текст+"%"" 	
	|и СправочникНоменклатура.Наименование подобно """+Текст+"%"" 	
	|";
	
	// добавляем ссылку в макет
	ЯчейкиМакета1=МакетКомпоновки.Макеты.Макет1.Макет.Ячейки;
	ЯчейкиМакета1.Очистить();
	ЯчейкаСсылки=ЯчейкиМакета1.добавить();
	ЯчейкаСсылки.Имя="Ссылка";
	ЯчейкаСсылки.Заголовок="Ссылка";
	ЯчейкаСсылки.ТипЗначения=новый описаниетипов("СправочникСсылка.Номенклатура");
	
	ЯчейкиМакета2=МакетКомпоновки.Макеты.Макет2.Макет.Ячейки;
	ЯчейкиМакета2.Очистить();
	ЯчейкаСсылки=ЯчейкиМакета2.добавить();
	ЯчейкаСсылки.Значение=новый ПараметрКомпоновкиДанных("ПараметрСсылка");
	ЯчейкаСсылки.Колонка="Ссылка";
	
	ПараметрыМакета2=МакетКомпоновки.Макеты.Макет2.Параметры;
	ПараметрыМакета2.Очистить();
	НовПараметр=ПараметрыМакета2.Добавить(тип("ПараметрОбластиВыражениеКомпоновкиДанных"));
	НовПараметр.Выражение="НаборДанныхДинамическогоСписка.Ссылка";
	НовПараметр.Имя="ПараметрСсылка";
	
	ПроцессорКомпоновки=Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
	
	ПроцессорВывода=новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
	мНоменклатура=ПроцессорВывода.Вывести(ПроцессорКомпоновки).ВыгрузитьКолонку("Ссылка");
	
	если мНоменклатура.Количество()>0 тогда
		текПозиция=_Список.ТекущаяСтрока;
		текинд=мНоменклатура.найти(текПозиция);
		индНужнойПозиции=0;
		если текинд=неопределено тогда
		иначеесли текинд<мНоменклатура.Количество()-1 тогда
			индНужнойПозиции=текинд+1;
		КонецЕсли;	
			
		_Список.ТекущаяСтрока=мНоменклатура[индНужнойПозиции].ссылка;
		ТекущийЭлемент = ЭтаФорма.Элементы[ИдСписка];
	иначе	
		ТекущийЭлемент=ЭтаФорма.Элементы["ПоискПоНаименованию"+?(ИдСписка="СписокРасширенныйПоискНоменклатура","","1")];
	КонецЕсли;
	
КонецПроцедуры


&НаКлиенте
Процедура ПоискПоНаименованиюПриИзменении(Элемент)
	
	если сокрл(ПоискПоНаименованию)="" тогда возврат КонецЕсли;
	
	Оповещение=Новый ОписаниеОповещения("СпозиционироватьсяВСправочнике", ЭтотОбъект);
	ВыполнитьОбработкуОповещения(Оповещение);
	//СпозиционироватьсяВСправочнике(ПоискПоНаименованию);
КонецПроцедуры

&НаКлиенте
Процедура ПоискПоНаименованиюФокус(Команда)
	Если Не ПодборТоваровКлиентСервер.ЭтоФормаПодбораТоваровПоКатегориям(ЭтаФорма) Тогда
		ИдСписка=ПодборТоваровКлиентСервер.ИмяСпискаНоменклатурыПоВариантуПоиска(ЭтаФорма);
	Иначе
		ИдСписка="СписокРасширенныйПоискНоменклатура";
	КонецЕсли;

	ТекущийЭлемент=ЭтаФорма.Элементы["ПоискПоНаименованию"+?(ИдСписка="СписокРасширенныйПоискНоменклатура","","1")];
	
КонецПроцедуры

&НаКлиенте
Процедура ПоискПоНаименованиюВыполнить(Команда)
	ПоискПоНаименованиюПриИзменении("");
КонецПроцедуры


#КонецОбласти

См. также

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4689    10    5    

18

Богатый редактор картинок, хранимых в базе, с возможностью РИСОВАНИЯ. Редактор внешних файлов картинок. Объект, расширяющий возможности работы с картинками из встроенного языка (Три в одном) + Обработка «Стандартизация картинок»

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Обработка предназначена для редактирования картинок в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Также обработка может быть использована из встроенного языка как объект для редактирования картинок. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Данная обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    62022    43    59    

81

Расширение для 1С:УНФ. Автоматическое снятие резервов в Заказах покупателей

Логистика, склад и ТМЦ Адаптация типовых решений Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    3121    4    0    

20

[Расширения] Динамическое управление видимостью и доступностью элементов форм (УФ) (8.3.6+)

Работа с интерфейсом Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    54653    16    21    

42

Управление дашбордами

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    16876    21    4    

35
Оставьте свое сообщение