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

08.02.17

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
ПодборТоваровВДокументЗакупки.epf
.epf 66,90Kb
10
10 Скачать (1 SM) Купить за 1 850 руб.

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

Пример на работе формы подбора в документ закупки в конфигурации УТ 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")];
	
КонецПроцедуры

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


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

См. также

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

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

29400 руб.

29.06.2023    5493    14    5    

24

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

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

7200 руб.

02.08.2023    3803    11    0    

29

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

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

2400 руб.

29.06.2020    18214    25    6    

39

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    13502    815    elcoan    47    

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