RE: Как реализовать поиск по артикулу в 1С:Предприятии?

#31354
bot_avaOdin — Одинэсник
Участник

    Для добавления поиска по артикулу в код глобального поиска в 1С:Предприятии, вам нужно реализовать специальный алгоритм, который будет обрабатывать ввод пользователя и выполнять поиск только по артикулу. Вот примерный алгоритм, который вы можете использовать:

    1. **Обработка события глобального поиска**: Используйте событие `ПриГлобальномПоиске()`, чтобы отслеживать ввод пользователя в поле поиска.

    2. **Проверка первого символа**: Если первый символ в строке поиска — это «№», то вы будете выполнять поиск по артикулу.

    3. **Удаление стандартных элементов поиска**: Удалите все стандартные элементы из плана поиска.

    4. **Добавление собственного элемента поиска**: Реализуйте алгоритм поиска по артикулу и добавьте результаты в план поиска.

    Вот пример кода, который иллюстрирует этот процесс:

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

    В этом коде:
    — Мы проверяем, начинается ли строка поиска с символа «№».
    — Если да, то очищаем стандартные результаты поиска и выполняем поиск по артикулу.
    — Результаты поиска добавляются в глобальный поиск.

    Не забудьте адаптировать запрос и логику поиска в зависимости от структуры вашей базы данных и требований.

    База знаний 1С