Довідковий матеріал

Призначення та будова критеріїв відбору

У складі метаданих 1С:Підприємства 8 існує об'єкт Критерій відбору . Цей об'єкт, на відміну від більшості прикладних об'єктів конфігурації, не описує будь-яких самостійних даних, які зберігатимуться в інформаційній базі 1С:Підприємства. Він призначений виключно для опису деякого правила вибірки інформації з об'єктних даних різних типів.

У складі метаданих 1С:Підприємства 8 існує об'єкт Критерій відбору. Цей об'єкт, на відміну від більшості прикладних об'єктів конфігурації, не описує будь-яких самостійних даних, які зберігатимуться в інформаційній базі 1С:Підприємства. Він призначений виключно для опису деякого правила вибірки інформації з об'єктних даних різних типів.

Суть розв'язуваного завдання дуже проста – потрібно знайти посилання на всі об'єкти заданих типів, які зберігають деяке шукане значення у зазначених реквізитах. Наприклад, потрібно знайти всі документи, пов'язані з певним контрагентом, тобто такі, що мають у своїх реквізитах (або реквізитах табличної частини) посилання на конкретний елемент довідника Контрагенти.

Під час опису в конфігурації критерію відбору потрібно задати список реквізитів різних об'єктних даних, за якими формуватиметься відбір.

Наприклад, якщо ми шукатимемо за контрагентом документи "ПриходнаяНакладная", "РасходнаяНакладная" та "Взаимозачет", то потрібно вибрати реквізити:

  • Документ.ПриходнаяНакладная.Реквизит.Поставщик;
  • Документ.РасходнаяНакладная.Реквизит.Покупатель;
  • Документ. Взаимозачет.ТабличнаяЧасть.Состав.Реквизит.Кто;
  • Документ. Взаимозачет.ТабличнаяЧасть.Состав.Реквизит.Кому.

На прикладі документа "Взаимозачет" зауважимо, що можна вибирати реквізити з табличних частин і можна вибирати кілька реквізитів в одному об'єкті. Цей критерій відбору дасть змогу знайти всі документи зазначених трьох типів, що містять посилання на шуканого контрагента в зазначених реквізитах. Фактично, критерій відбору описує деяку область пошуку.

Під час опису критерію відбору в конфігурації можна задати тип критерію відбору, тоді під час налаштування складу критерію відбору пропонуватимуться реквізити лише відповідних типів.

Під час включення до конфігурації критерію відбору система не створює жодних таблиць, однак для оптимізації пошуку створюється індекс за кожним реквізитом, який зазначено у складі критеріїв відбору. Індекси використовуватимуться СУБД для оптимізації отримання вибірки під час використання критерію відбору. Таким чином, під час опису критерію відбору потрібно враховувати, що система витрачатиме додаткові ресурси на підтримання необхідних індексів.

Критерій відбору може використовуватися кількома способами.

  • може бути отримана вибірка за допомогою методу Найти() менеджера критерію відбору;
  • може бути виконано звернення до віртуальної таблиці критерію відбору в запиті (КритерийОтбора.<имя>);
  • можна зробити форму критерію відбору або вставити в будь-яку форму табличне поле, пов'язане з об'єктом КритерийОтбораСписок.<имя>, для відображення вибірки в табличному полі;
  • можна використовувати критерій відбору у відборі списку документів.

У всіх випадках вибірка виконується одним і тим самим способом. Система формує запит до СУБД для пошуку об'єктів, які містять шукане значення, і формує вибірку, що складається зі знайдених посилань на об'єкти. Сформований запит є об'єднанням запитів до кожної таблиці, у якій потрібно здійснити пошук.

Запити формуються лише до тих даних (таблиць), серед описаних у критерії відбору, у реквізиті яких може бути значення того типу, значення якого наразі шукається. Наприклад, критерій відбору містить посилання на довідник фізичних осіб і довідник організацій, а в конкретному реквізиті конкретного документа може бути посилання лише на довідник фізичних осіб. Тоді запит за цим документом виконуватиметься, лише якщо наразі пошук виконується за фізичною особою.

Важливо враховувати, що критерій відбору завжди вибирає всі шукані дані. Ані в списку, ані в інших режимах не підтримується динамічна вибірка, оскільки інформація вибирається шляхом об'єднання даних із різних таблиць. Індекс, сформований для критерію відбору, дає змогу зробити це досить швидко, але якщо даних у вибірці виявиться дуже багато, то вибірка формуватиметься неефективно. Тому доцільно створювати критерії відбору за даними, що мають великий розкид значень, щоб вибірки виходили не дуже великими. В іншому разі втрачається сенс такого відбору та знижується його ефективність.

Таким чином, критерій відбору є сервісною можливістю, запропонованою розробнику конфігурації. Фактично, він дає змогу інтерактивно описати умову вибірки, автоматично створити необхідні індекси, автоматично сформувати складний запит, що містить звернення до великої кількості даних, і автоматично задіяти вибірку за цим критерієм в інтерфейсі прикладного рішення.

Рекомендуємо також ознайомитися з розділами:

Записатися телефоном