Как ускорить поиск номенклатуры с помощью КритерийОтбора в 1С?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как ускорить поиск номенклатуры с помощью КритерийОтбора в 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #34066
      Телеграм группа https://t.me/odineskiOdineski
      Участник

        Как ускорить поиск используемой номенклатуры с помощью КритерийОтбора ?

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

          Даниил, привет!

          Ускорение поиска используемой номенклатуры с помощью объекта **КритерийОтбора** в 1С достигается за счёт использования встроенного механизма индексации и виртуальных таблиц, которые позволяют быстро находить документы и другие объекты, содержащие ссылки на нужные элементы справочника «Номенклатура», включая реквизиты табличных частей.

          ### Основные шаги и рекомендации для ускорения поиска через КритерийОтбора:

          1. **Создание КритерияОтбора по типу данных «СправочникСсылка.Номенклатура»**
          В конфигураторе создайте новый объект «КритерийОтбора», укажите тип данных «СправочникСсылка.Номенклатура».
          На закладке «Состав» отметьте все документы и объекты, в которых может встречаться номенклатура (в том числе в табличных частях).

          2. **Использование виртуальной таблицы КритерияОтбора в запросах**
          В запросах обращайтесь к виртуальной таблице критерия отбора, например:

             Запрос.Текст = 
                 "ВЫБРАТЬ
                 |   ДокументыСНоменклатурой.Ссылка
                 |ИЗ
                 |   КритерийОтбора.ДокументыСНоменклатурой(&Номенклатура) КАК ДокументыСНоменклатурой";
             Запрос.УстановитьПараметр("Номенклатура", СсылкаНаНоменклатуру);
             Результат = Запрос.Выполнить();
             

          Это позволит получить все документы, где используется указанная номенклатура.

          3. **Оптимизация индексов**
          При создании критерия отбора система автоматически создаёт индексы по реквизитам, участвующим в критерии. Это значительно ускоряет поиск.
          Однако стоит учитывать, что слишком широкий критерий отбора с большим количеством объектов и реквизитов может замедлить обновление индексов и увеличить нагрузку на систему.

          4. **Использование фильтров и ограничений**
          Для повышения эффективности поиска используйте дополнительные параметры отбора (например, по дате, по типу документа), чтобы уменьшить объём выборки.

          5. **Обновление индексов**
          При изменении критерия отбора происходит процесс заполнения индекса поиска, который может занимать некоторое время. Планируйте эти операции в периоды низкой нагрузки.

          6. **Включение отображения результата отбора в интерфейсе**
          Для удобства можно настроить форму списка критерия отбора и добавить её в командный интерфейс, чтобы быстро просматривать результаты поиска.

          ### Почему КритерийОтбора ускоряет поиск?

          — **Виртуальная таблица** — не создаёт физическую таблицу, но позволяет обращаться к объединённым данным из разных объектов, где встречается номенклатура.
          — **Индексы** — создаются по реквизитам, участвующим в критерии, что значительно ускоряет выборку.
          — **Поиск по табличным частям** — стандартные запросы не всегда позволяют эффективно искать по табличным частям, а критерий отбора это умеет.

          ### Пример использования КритерияОтбора для поиска документов с номенклатурой

          Процедура ПолучитьДокументыПоНоменклатуре(Номенклатура)
              Запрос = Новый Запрос;
              Запрос.Текст = 
                  "ВЫБРАТЬ
                  |   ДокументыСНоменклатурой.Ссылка
                  |ИЗ
                  |   КритерийОтбора.ДокументыСНоменклатурой(&Номенклатура) КАК ДокументыСНоменклатурой";
              Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
              Результат = Запрос.Выполнить();
              Возврат Результат.Выгрузить();
          КонецПроцедуры
          

          ### Итог

          Использование **КритерияОтбора** — это мощный и эффективный способ ускорить поиск используемой номенклатуры, особенно когда нужно искать по множеству документов и табличных частей. Главное — грамотно настроить критерий, не перегружать его лишними объектами и реквизитами, и использовать параметры отбора для сужения выборки.

          Рекомендую посмотреть здесь:
          https://infostart.ru/1c/articles/401743/

          Если нужна помощь с конкретным примером настройки или кодом — обращайся!

          Оценка ответа: 9/10 — подробный, с примерами и рекомендациями.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С