Делаем быстрый поиск по списку Справочника, Документов. Сразу оговорюсь, пример для списка справочника Контрагенты, но подобное я использую очень часто.
И так: Менеджерам хочется открыть список контрагентов, и быстро найти контрагента по любым данным которые они помнят!
Реализованно следующим образом:
1. На форму в Командную панель Действия формы добавленно 2 Кнопки
а) Найтиконтр (с картинкой поиск,
Процедура НайтиКонтр(Кнопка) ) будет использоваться для запроса данных у пользователя для отбора
б) Инф (с картинкой бинокль) будет отображать параметр текущего запроса
в) В свойствах табличного поля добавим Событие При Активизации Колонки -
Процедура ИзмНазваниеКнопки(Элемент)
2. В модуль добавим код:
Код 1C v 8.х
Процедура НайтиКонтр(Кнопка)
Если элементыформы. ДействияФормы. Кнопки. Найтиконтр. текст = "Показать все задания" Тогда
СправочникСписок. Отбор. Сбросить( ) ;
элементыформы. ДействияФормы. Кнопки. Найтиконтр. текст = "Поиск по " + ЭлементыФормы. СправочникСписок. ТекущаяКолонка. ТекстШапки;
элементыформы. ДействияФормы. Кнопки. инф. текст= "Отбора нет" ;
Иначе
Текст = "" ;
Подсказка = "Поиск по " + ЭлементыФормы. СправочникСписок. ТекущаяКолонка. ТекстШапки;
Типзнач= ЭлементыФормы. СправочникСписок. ТекущаяКолонка. ЭлементУправления. ТипЗначения;
Если ВвестиЗначение( Текст, Подсказка, Типзнач) Тогда
Попытка
СправочникСписок. Отбор[ЭлементыФормы. СправочникСписок. ТекущаяКолонка. имя]. ВидСравнения = ВидСравнения. Содержит;
СправочникСписок. Отбор[ЭлементыФормы. СправочникСписок. ТекущаяКолонка. имя]. Значение = текст;
СправочникСписок. Отбор[ЭлементыФормы. СправочникСписок. ТекущаяКолонка. имя]. Использование = Истина ;
элементыформы. ДействияФормы. Кнопки. инф. текст= "Отбор: Содержит - " + ЭлементыФормы. СправочникСписок. ТекущаяКолонка. ТекстШапки+ " = " + ВРег( строка( текст) ) ;
элементыформы. ДействияФормы. Кнопки. Найтиконтр. текст = "Показать все задания" ;
Исключение
СправочникСписок. Отбор[ЭлементыФормы. СправочникСписок. ТекущаяКолонка. имя]. ВидСравнения = ВидСравнения. Равно;
СправочникСписок. Отбор[ЭлементыФормы. СправочникСписок. ТекущаяКолонка. имя]. Значение = текст;
СправочникСписок. Отбор[ЭлементыФормы. СправочникСписок. ТекущаяКолонка. имя]. Использование = Истина ;
элементыформы. ДействияФормы. Кнопки. инф. текст= "Отбор: Равно - " + ЭлементыФормы. СправочникСписок. ТекущаяКолонка. ТекстШапки+ " = " + ВРег( строка( текст) ) ;
элементыформы. ДействияФормы. Кнопки. Найтиконтр. текст = "Показать все задания" ;
Конецпопытки ;
КонецЕсли ;
КонецЕсли ;
КонецПроцедуры
Процедура ИзмНазваниеКнопки(Элемент)
Если не элементыформы. ДействияФормы. Кнопки. Найтиконтр. текст = "Показать все задания" Тогда
элементыформы. ДействияФормы. Кнопки. Найтиконтр. текст = "Поиск по " + ЭлементыФормы. СправочникСписок. ТекущаяКолонка. ТекстШапки;
КонецЕсли ;
КонецПроцедуры
В результате перемещаясь по колонкам списка, меняется
Поиск по...(Названию колонки)
Для примера нужно быстро получить список Контрагентов у которых телефон содержит 783
Результат:
Автор: Евгений Мигачев Категория:
Список Справочника, Документов, Регистров Поиск элемента, найти элемент справочника Код 1C v 8.2 УП &НаКлиенте
Процедура ПоКнопкеНайти(Команда)
Сообщить( НайтиКонтрагента( "000000001" ) ) ;
КонецПроцедуры
&НаСервере
Функция НайтиКонтрагента(КодКонтрагента)
Перем КонрагентДляПоиска, СсылкаНайденногоКонрагента;
КонрагентДляПоиска = Справочники. Контрагенты;
СсылкаНайденногоКонрагента = КонрагентДляПоиска. НайтиПоКоду( КодКонтрагента) ;
Если СсылкаНайденногоКонрагента = КонрагентДляПоиска. ПустаяСсылка( ) Тогда
Возврат "Контрагент не найден" ;
Иначе
Возврат СсылкаНайденногоКонрагента. Наименование;
КонецЕсли ;
КонецФункции ;
Код 1C v 8.х
СпрСотр = Справочники. Сотрудники;
НайденныйСотр = СпрСотр. НайтиПоКоду( 123 ) ;
НайденныйСотр = СпрСотр. НайтиПоНаименованию( "Иванов Иван Иванович" ) ;
НайденныйСотр СпрСотр. НайтиПоРеквизиту( "Оклад" , 5000 ) ;
РезультатПоиска = Справочники. Номенклатура. НайтиПоКоду( "00030" ) ;
Если РезультатПоиска. Пустая( ) Тогда
КонецЕсли ;
НайденныйСотр = СпрСотр. НайтиПоНаименованию( "Иванов Иван Иванович" ) ;
Если НайденныйСотр = Неопределено Тогда
. . . . .
КонецЕсли ;
Код 1C v 7.x СпрСотр = СоздатьОбъект( "Справочник.Сотрудники" ) ;
СпрСотр. НайтиЭлемент( Сотрудник) ;
СпрСотр. НайтиПоКоду( 123 ) ;
СпрСотр. НайтиПоНаименованию( "Иванов Иван Иванович" ) ;
СпрСотр. НайтиПоРеквизиту( "Оклад" , 5000 ) ;
Если СпрСотр. НайтиПоНаименованию( "Иванов Иван Иванович" ) = 1 Тогда
. . . . . . . . НайденныйСотр = СпрСотр. ТекущийЭлемент( ) ;
КонецЕсли ;
спр= СоздатьОбъект( "Справочник.Материалы" ) ;
Если спр. НайтиПоНаименованию( "Пряжа шерстяная" ) = 1 Тогда
Предупреждение( "Найденный элемент справочника имеет код " + спр. ТекущийЭлемент( ) . Код) ;
Иначе
Предупреждение( "Элемент с заданным наименованием не найден" ) ;
КонецЕсли ;
Категория:
Справочники