Свой поиск по номенклатуре
Иногда хочется использовать типовой метод с небольшой доработкой. Увы, мы не можем залезть в платформу и что-то поменять. Но зато можем полностью переписать типовой метод.
Клиент хотел, чтобы помеченные на удаление товары не участвовали в поиске.
Поэтому пришлось переписать вызов метода НайтиПоНаименованию. Делюсь кодом, может быть тоже когда-нибудь понадобится организовать свой поиск.
И еще — вот почему лучше всегда использовать запросы, чем типовые функции. Потому что на практике часто условия поиска позже уточняются и все равно очень часто приходится менять типовую функцию на запрос.
Функция НайтиТоварПоНаименованию(Наименование, Целиком, Группа = Неопределено) Экспорт З = Новый Запрос( "ВЫБРАТЬ ПЕРВЫЕ 1 | Т.Ссылка КАК Ссылка |ИЗ | Справочник.Номенклатура КАК Т |ГДЕ | &УсловиеНаименования | И НЕ Т.ПометкаУдаления | И &УсловиеГруппы" ); Если Целиком Тогда УсловиеНаименования = "Т.Наименование = &Наименование"; Иначе УсловиеНаименования = "ПОДСТРОКА(Т.Наименование, 1, " + XMLСтрока(СтрДлина(Наименование)) + ") = &Наименование"; КонецЕсли; З.УстановитьПараметр("Наименование", Наименование); З.Текст = СтрЗаменить(З.Текст, "&УсловиеНаименования", УсловиеНаименования); Если ЗначениеЗаполнено(Группа) Тогда УсловиеГруппы = "Т.Ссылка В ИЕРАРХИИ(&Группа)"; З.УстановитьПараметр("Группа", Группа); Иначе УсловиеГруппы = "Истина"; КонецЕсли; З.Текст = СтрЗаменить(З.Текст, "&УсловиеГруппы", УсловиеГруппы); Выборка = З.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Возврат Выборка.Ссылка; КонецЕсли; Возврат Справочники.Номенклатура.ПустаяСсылка(); КонецФункции
Свежие комментарии