Освоение Business Central: изучение SetRange для полей типа Enum

В этой статье блога мы углубимся в мощную функцию SetRange в Microsoft Dynamics 365 Business Central и изучим ее применение с полями типа перечисления. SetRange — это широко используемая функция, которая позволяет разработчикам фильтровать записи по определенным критериям. Мы обсудим различные методы реализации SetRange для полей типа перечисления, попутно предоставляя примеры кода и ценные советы.

Метод 1: использование одного значения перечисления
Один простой подход — использовать SetRange с одним значением перечисления. Допустим, у нас есть поле типа перечисления под названием «Статус» со значениями «Открыто», «Закрыто» и «Ожидание». Для фильтрации записей со статусом «Открыто» можно использовать следующий код:

MyRecord.SETRANGE(Status, Status::Open);

Метод 2: фильтрация нескольких значений перечисления
Иногда может потребоваться фильтровать записи на основе нескольких значений перечисления. В таких случаях вы можете использовать функцию SetRange в сочетании с оператором OR. Например, чтобы отфильтровать записи со статусом «Открыто» или «Ожидание», используйте следующий код:

MyRecord.SETRANGE(Status, '|%1|%2|', Status::Open, Status::Pending);

Метод 3: исключение определенных значений перечисления
Если вы хотите исключить определенные значения перечисления из набора результатов, вы можете использовать оператор NOT в сочетании с SetRange. Например, чтобы исключить записи со статусом «Закрыто», используйте следующий код:

MyRecord.SETRANGE(Status, '<>%1', Status::Closed);

Метод 4: фильтрация на основе диапазона значений перечисления
В некоторых сценариях может потребоваться получить записи, попадающие в диапазон значений перечисления. Например, чтобы отфильтровать записи со статусами от «Открыто» до «Ожидание», вы можете использовать следующий код:

MyRecord.SETRANGE(Status, '>%1..%2', Status::Open, Status::Pending);

Метод 5: объединение SetRange с другими фильтрами
SetRange можно комбинировать с другими фильтрами для создания более сложных запросов. Например, предположим, что вы хотите отфильтровать записи со статусом «Открыто» и определенным диапазоном дат. Этого можно добиться, связав несколько операторов SetRange в цепочку, как показано ниже:

MyRecord.SETRANGE(Status, Status::Open);
MyRecord.SETRANGE("Posting Date", '>%1D..%2D', StartDate, EndDate);

SetRange — это универсальная функция в Microsoft Dynamics 365 Business Central, которая позволяет разработчикам эффективно фильтровать записи, особенно при работе с полями типа перечисления. Освоив различные методы, обсуждаемые в этой статье, вы сможете использовать SetRange для создания эффективных запросов и точного получения необходимых данных.

Эффективно используя SetRange, вы сможете расширить свои возможности разработки в Business Central и оптимизировать рабочие процессы ERP.

Не забудьте поэкспериментировать с этими методами в своих проектах, чтобы лучше понять, как SetRange может работать на вас.