Обучение
Модуль
Handle errors by using application language in Dynamics 365 Business Central - Training
Learn how to handle errors in Dynamics 365 Business Central by using application language (AL).
Этот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
Аналогично тому, как в Excel и языке DAX есть IFERROR
функция, Power Query имеет собственный синтаксис для тестирования и перехвата ошибок.
Как упоминание в статье по устранению ошибок в Power Query, ошибки могут отображаться на шаге или на уровне ячейки. В этой статье рассматриваются способы перехвата ошибок и управления ими на основе собственной логики.
Примечание
Чтобы продемонстрировать эту концепцию, в этой статье в качестве источника данных используется книга Excel. Основные понятия, показанные здесь, применяются ко всем значениям в Power Query, а не только к тем, которые приходят из книги Excel.
Пример источника данных для этой демонстрации — книга Excel со следующей таблицей.
Эта таблица из книги Excel содержит ошибки Excel, такие как #NULL!, #REF!, и #DIV/0! в столбце "Стандартный тариф". При импорте этой таблицы в редактор Power Query на следующем рисунке показано, как это выглядит.
Обратите внимание, что ошибки из книги Excel отображаются со [Error]
значением в каждой ячейке.
Из этой статьи вы узнаете, как заменить ошибку другим значением. Кроме того, вы узнаете, как поймать ошибку и использовать ее для собственной логики.
В этом случае цель состоит в создании нового столбца "Окончательная ставка " в примере источника данных, который использует значения из столбца "Стандартная ставка ". При возникновении ошибок используется значение из соответствующего столбца "Специальная ставка ".
Чтобы создать новый настраиваемый столбец, перейдите в меню "Добавить столбец" и выберите "Настраиваемый столбец". В окне "Настраиваемый столбец " введите формулу try [Standard Rate] otherwise [Special Rate]
. Присвойте этому новому столбцу окончательную ставку.
Эта формула пытается оценить столбец "Стандартная ставка " и выводит его значение, если ошибки не найдены. Если ошибки найдены в столбце "Стандартная ставка ", выходные данные определяются после otherwise
инструкции, которая в данном случае является столбцом "Специальная ставка ".
После добавления правильных типов данных во все столбцы таблицы на следующем рисунке показано, как выглядит окончательная таблица.
Примечание
В качестве альтернативного подхода можно также ввести формулуtry [Standard Rate] catch ()=> [Special Rate]
, которая эквивалентна предыдущей формуле, но использование catch ключевое слово с функцией, которая не требует параметров.
В catch
мае 2022 года в Power Query появилась ключевое слово.
Используя тот же образец источника данных, что и предыдущий раздел, новая цель — создать новый столбец для конечной ставки. Если значение из стандартной ставки существует, используется это значение. В противном случае используется значение из столбца "Специальный тариф ", за исключением строк с любой #REF!
ошибкой.
Примечание
Единственной целью исключения #REF!
ошибки является демонстрация. С помощью концепций, показанных в этой статье, вы можете выбрать любые поля из записи об ошибке.
При выборе любого из пробелов рядом со значением ошибки вы получите область сведений в нижней части экрана. Область сведений содержит как причину ошибки, DataFormat.Error
так и сообщение об ошибке: Invalid cell value '#REF!'
Вы можете выбрать только одну ячейку за раз, чтобы эффективно проверять только компоненты ошибки одного значения ошибки одновременно. На этом этапе вы создаете новый настраиваемый столбец и используете try
выражение.
Чтобы создать новый настраиваемый столбец, перейдите в меню "Добавить столбец" и выберите "Настраиваемый столбец". В окне "Настраиваемый столбец " введите формулу try [Standard Rate]
. Присвойте этому новому столбцу все ошибки.
Выражение try
преобразует значения и ошибки в значение записи, указывающее, обрабатывает ли try
выражение ошибку или нет, а также правильное значение или запись ошибки.
Вы можете развернуть этот только что созданный столбец со значениями записей и просмотреть доступные поля, чтобы развернуть, выбрав значок рядом с заголовком столбца.
Эта операция предоставляет три новых поля:
null
значения.null
значения.
Для дальнейшего изучения можно развернуть столбец All Errors.Error , чтобы получить три компонента записи об ошибке:
После выполнения операции развертывания в поле All Errors.Error.Message отображается определенное сообщение об ошибке, которое сообщает о том, какая ошибка Excel имеет каждую ячейку. Сообщение об ошибке является производным от поля "Сообщение об ошибке" записи об ошибке.
Теперь при каждом сообщении об ошибке в новом столбце можно создать новый условный столбец с именем Final Rate и следующими предложениями:
null
, выходные данные — это значение из столбца "Стандартный тариф ".Invalid cell value '#REF!'.
, выходные данные — это значение из столбца "Специальный тариф ".
После сохранения только столбцов "Учетная запись", "Стандартная ставка", "Специальная ставка" и "Окончательная ставка" и добавления правильного типа данных для каждого столбца на следующем рисунке показано, как выглядит окончательная таблица.
Кроме того, можно создать новый настраиваемый столбец с помощью try
ключевое слово.catch
try [Standard Rate] catch (r)=> if r[Message] <> "Invalid cell value '#REF!'." then [Special Rate] else null
Обучение
Модуль
Handle errors by using application language in Dynamics 365 Business Central - Training
Learn how to handle errors in Dynamics 365 Business Central by using application language (AL).