Бөлісу құралы:


Error, IfError, IsError, IsBlankOrError функциялары

Қолданылады: Canvas қолданбалары Dataverse формула бағандары Жұмыс үстелі ағындары Үлгіге негізделген қолданбалар Power Pages Power Platform CLI

Қателерді анықтайды және балама мәнді береді немесе әрекет жасайды. Реттелетін қатені жасаңыз немесе қатені жіберіңіз.

Ескертпе

Қолданба Формула деңгейіндегі қателерді басқару мүмкіндікін Параметрлер>Жаңартулар> астындағы ажыратса Жұмыстан шыққан, бұл функциялар дұрыс жұмыс істемейді.

IfError

IfError функциясы қатені тапқанша мәндерді тексереді. Функция қатені тапса, функция есептеледі және сәйкес ауыстыру мәнін қайтарады және одан әрі есептеуді тоқтатады. Сондай-ақ қателер табылмаған жағдайға әдепкі мәнді беруге болады. IfError құрылымы If функциясына ұқсайды: IfError қателер бар-жоғын тексереді, ал If функциясы true мәнін беретінін тексереді.

IfError функциясын кейінгі есептеулер жалғаса алуы үшін қатені жарамды мәнмен ауыстыру үшін пайдаланыңыз. Мысалы, бұл функцияны пайдаланушының енгізуі нөлге бөлуге әкелуі мүмкін болса пайдаланыңыз:

IfError( 1/x, 0 )

Бұл формула 0 қайтарады x мәні нөлге тең болса, 1/x қате шығарады. x нөл болмаса, 1/x қайтарылады.

Одан әрі өңдеуді тоқтату

Мінез-құлық формулаларында формулаларды тізбектегенде, мысалы:

Patch( DS1, ... );
Patch( DS2, ... )

DS2 екінші Patch функциясын орындауға тіпті DS1 Patch функциясы сәтсіз болса да орындалады. Қатенің аумағы тізбектелетін әрбір формуламен шектеледі.

IfError функциясын әрекетті орындау және өңдеуді осы әрекет сәтті болса ғана жалғастыру үшін пайдаланыңыз. Осы мысалға IfError функциясын қолдану:

IfError(
    Patch( DS1, ... ), Notify( "problem in the first action" ),
    Patch( DS2, ... ), Notify( "problem in the second action" )
)

DS1 Patch мәселесі болса, алдымен Notify орындалады. Одан әрі өңдеу, соның ішінде DS2 екінші Patch орын алмайды. Бірінші Patch сәтті болса, екінші Patch орындалады.

Берілген болса, қателер табылмаса, DefaultResult деген міндетті емес аргумент қайтарылады. Бұл аргументсіз, соңғы Value аргументі қайтарылады.

Соңғы мысалға сүйенсек, кез келген мәселелер болған-болмағанын анықтау үшін IfError функциясынан алынған қайтарылған мәнді тексеруге болады:

IfError(
    Patch( DS1, ... ), Notify( "problem in the first action" );  false,
    Patch( DS2, ... ), Notify( "problem in the second action" ); false,
    true
)

Түр үйлесімділігі

IfError аргументтерінің бірінің мәнін қайтарады. IfError қайтаруы мүмкін барлық мәндердің түрлері үйлесімді болуы керек.

Соңғы мысалда Patch ауыстыру формулалары үшін пайдаланылатын логикалық мәндермен үйлесімді емес жазбаны қайтарады. немесе Әдепкі нәтиже . Бұл дұрыс, өйткені бұл Patch шақыруларынан алынатын қайтарылатын мәндерді IfError қайтаратын жағдай жоқ.

Ескертпе

Мінез-құлық өзгеру процесінде болғанда, IfError функциясының барлық аргументтерінің түрлері қазіргі уақытта үйлесімді болуы керек.

Бұрын сипатталған қарапайым мысалда:

IfError( 1/x, 0 )

Екеуі де сан болғандықтан 1/x және 0 түрлері үйлесімді болды. Егер олар болмаса, екінші аргумент бірінші аргумент түріне сәйкес келу үшін мәжбүрленеді.

Нөлге бөлу орын алған кезде Excel бағдарламасы #DIV/0! көрсетеді.

Оның орнына мыналар бар IfError функциясын қолданып көріңіз:

IfError( 1/x, "#DIV/0!" )

Жоғарыдағы формула жұмыс істемейді. Мәтін жолы "#DIV/0!" бірінші аргумент түріне Егер Қате, ол сан болып табылады. IfError нәтижесі тағы бір қате, себебі мәтін жолын мәжбүрлеу мүмкін емес. Түзету ретінде, IfError әрқашан мәтін жолын қайтаруы үшін бірінші аргументті мәтін жолына түрлендіріңіз:

IfError( Text( 1/x ), "#DIV/0!" )

Жоғарыда көретіндей, Replacement немесе DefaultResult қате болса, IfError қатені қайтаруы мүмкін.

FirstError / AllErrors

Ауыстыру формулаларында табылған қателер туралы ақпарат FirstError жазбасы және AllErrors кестесі арқылы қолжетімді. AllErrors бұл БіріншіҚате осы кестенің бірінші жазбасының таңбашасы болып табылатын қате туралы ақпарат жазбаларының кестесі. FirstError әрдайым бірдей мәнді қайтарады Бірінші( AllErrors ).

Қате жазбалар келесілерді қамтиды:

Өріс Түр Сипаттама
Мейірімді ErrorKind санамалауы (сан) Қате санаты.
Хабарлама Мәтін жолы Соңғы пайдаланушыға көрсетуге жарайтын қате туралы хабар.
Дереккөз Мәтін жолы Қате пайда болған орын есеп беру үшін пайдаланылады. Мысалы, басқару сипатына байланыстырылған формула үшін бұл мән ControlName.PropertyName пішінінде болады.
Бақыланды Мәтін жолы Қате пайдаланушыға көрсетілетін орын есеп беру үшін пайдаланылады. Мысалы, басқару сипатына байланыстырылған формула үшін бұл мән ControlName.PropertyName пішінінде болады.
Мәліметтер Жазба Қате туралы мәліметтер. Қазіргі уақытта мәліметтер тек желі қателері үшін берілген. Бұл жазба құрамында HTTP күй коды бар HttpStatusCode және HttpResponse оның ішінде мына жерден жауап мәтіні бар. қосқыш немесе қызмет.

Мысалы, келесі формуланы Түйме басқару элементінің OnSelect сипаты ретінде қарастырыңыз:

Set( a, 1/0 )

Бұл формуланы екінші Түймешік басқару элементінің OnSelect сипатына қосыңыз:

IfError( a, Notify( "Internal error: originated on " & FirstError.Source & ", surfaced on " & FirstError.Observed ) )

Жоғарыдағы мысал формуласы екі түймешікті ретімен іске қосқанда келесі баннерді көрсетеді:

Басқару түймешігі іске қосылып, хабарландыру функциясының хабарламасы көрсетіледі.

Әдетте, БіріншіҚате жеткілікті түрде жұмыс істей алатын бір ғана қате болады. Дегенмен, бірнеше қате қайтарылуы мүмкін сценарийлер бар. Мысалы, формула тізбек оператын немесе параллель функциясы пайдаланған кезде. Тіпті мұндай жағдайларда FirstError кестесі пайдаланушыны бірнеше қатемен шамадан тыс жүктеудің орнына мәселені анықтау үшін жеткілікті болуы мүмкін. Егер сізде әлі де әрбір қатемен жеке жұмыс істеу талабы болса, AllErrors кестесін пайдалануға болады.

IsError

IsError функциясы қате мән бар-жоғын тексереді.

Қайтарылатын мән — логикалық true немесе false.

IsError қолдану қатенің кез келген әрі қарай өңделуіне жол бермейді.

IsBlankOrError

IsBlankOrError функциясы бос мәнді немесе қате мәнді тексереді және Or( IsBlank( X ), IsError( X ) ) баламасы болып табылады.

Бұрыннан бар бағдарламалар үшін қате өңдеуді қосқанда, бағдарламаның бұрыннан бар әрекетін сақтау үшін IsBlank функциясын IsBlankOrError функциясымен ауыстыруды қарастырыңыз. Қатені өңдеуді қоспас бұрын a бос мәні дерекқорлардағы бос мәндерді және қате мәндерін көрсету үшін пайдаланылды. Қатені өңдеу IsBlank функциясын пайдалануды жалғастыратын бұрыннан бар бағдарламалар әрекетін өзгертуі мүмкін бос мәннің осы екі түсіндірмесін бөледі.

Қайтарылатын мән — логикалық шын немесе жалған.

IsBlankOrError пайдалану қатенің кез келген әрі қарай өңделуіне жол бермейді.

Реттелетін қатені жасау және есеп беру үшін Error функциясын пайдалануға болады. Мысалы, сізде кез келген берілген мән мәнмәтін үшін жарамды немесе жарамсыз екенін анықтау логикасы болуы мүмкін, яғни мәселе автоматты түрде тексерілмеген кезде. IfError функциясы үшін жоғарыда сипатталған бірдей жазбаны пайдалану арқылы Түрі және Хабар параметрі бар жеке қате жасауға және қайтаруға болады.

IfError мәнмәтінінде Error функциясын қатені қайта шығару немесе одан өту үшін пайдалануға болады. Мысалы, IfError ішіндегі логика кейбір жағдайларда қатені қауіпсіз елемеу мүмкін екенін шешуі мүмкін, бірақ басқа жағдайларда қатеден өту маңызды болады. IfError немесе App.OnError ішінде Error( FirstError ) функциясын қатеден өту үшін пайдаланыңыз.

Сонымен қатар Error функциясын AllErrors кестесіндегі қателер кестесіне жіберуге болады. Error( AllErrors ) функциясын бірінші қатені ғана емес, барлық қателерді қайта шығару үшін пайдаланыңыз.

Бос жазба немесе Error функциясына жіберілген бос кесте қатеге әкелмейді.

Синтаксис

Қате( Қате жазба )
Қате( Қате кестесі )

  • ErrorRecord – Міндетті. Түрі, Хабар және басқа өрістері бар қате туралы ақпарат жазбасы. Түр міндетті. FirstError тікелей жіберуге болады.
  • Қателер кестесі – Міндетті. Қате туралы ақпарат жазбаларының кестесі. AllErrors тікелей жіберуге болады.

IfError( 1-мән, Ауыстыру1 [, 2-мән , Ауыстыру2, ... [, Әдепкі нәтиже ] ] )

  • Мәндер – Міндетті. Қате мән бар-жоғы тексерілетін формула(лар).
  • Ауыстырулар – Міндетті. Сәйкес Value аргументтері қатені қайтарса, есептейтін формулалар және қайтаратын мәндер.
  • DefaultResult – Қосымша. Формула ешбір қателерді таппаса есептейтін формулалар.

IsError( Мән )
IsBlankOrError( Мән )

  • Мән – Міндетті. Тексерілетін формула,

Мысалдар

Қарапайым IfError

Формула Сипаттамасы Нәтиже
IfError( 1, 2 ) Бірінші аргумент қате емес. Функцияның тексеретін басқа қателері жоқ және әдепкі қайтаратын мәні жоқ. Бұл функция есептелген соңғы value аргументін қайтарады. 1
IfError( 1/0, 2 ) Бірінші аргумент қате мәнді қайтарады (нөлге бөлуге байланысты). Бұл функция екінші аргументті есептейді және оны нәтиже ретінде қайтарады. 2
IfError( 10, 20, 30 ) Бірінші аргумент қате емес. Функцияның тексеретін басқа қателері жоқ, бірақ әдепкі қайтаратын мәні бар. Бұл функция DefaultResult аргументін қайтарады. 30
IfError( 10, 11, 20, 21, 300 ) 10 деген бірінші аргумент қате емес, сондықтан бұл функция сол аргументтің 11 деген сәйкес ауыстыру мәнін есептемейді. 20 деген үшінші аргумент те қате емес, сондықтан бұл функция сол аргументтің 21 деген сәйкес ауыстыру мәнін есептемейді. 300 деген бесінші аргументте сәйкес ауыстыру мәні жоқ және әдепкі нәтиже болып табылады. Бұл функция формулада қателер болмағандықтан сол нәтижені қайтарады. 300
IfError( 1/0, Хабарландыру( "Ішкі мәселе болды" ) ) Бірінші аргумент қате мәнді қайтарады (нөлге бөлуге байланысты). Бұл функция екінші аргументті есептейді және пайдаланушыға хабарды көрсетеді. IfError функциясының қайтарылатын мәні — Notify функциясының IfError функциясының бірінші аргументімен бірдей түрге (сан) мәжбүрлеп орнатылған қайтарылатын мәні. 1

Қарапайым IsError

Формула Сипаттама Нәтиже
Қате( 1 ) Бұл аргумент қате емес. жалған
IsError( бос() ) Аргумент бос, бірақ қате емес. жалған
IsError( 1/0 ) Бұл аргумент қате. рас
If( IsError( 1/0 ), Хабарландыру( "Ішкі мәселе болды" ) ) IsError аргументі қате мәнді қайтарады (нөлге бөлуге байланысты). Бұл функция шын мәнін қайтарады, бұл If операторының пайдаланушыға Notify функциясымен хабар көрсетуіне себеп болады. If функциясының қайтарылатын мәні — Notify функциясының If функциясының бірінші аргументімен бірдей түрге (логикалық мән) мәжбүрлеп орнатылған қайтарылатын мәні. рас

Қарапайым IsBlankOrError

Формула Сипаттамасы Нәтиже
IsBlankOrError( 1 ) Аргумент қате емес немесе бос. жалған
IsBlankOrError( бос() ) Аргумент бос. рас
IsBlankOrError( 1/0 ) Бұл аргумент қате. рас

Қарапайым қате

Бұл мысалда күндер бір-біріне қатысты тексеріледі, нәтижесінде ақаулық туындаса, қате пайда болады.

If( StartDate > EndDate,
    Error( { Kind: ErrorKind.Validation, Message: "Start Date must be before End Date" } ) )

Бұл мысалда кейбір қателер өтуге рұқсат етілген, ал басқалары басылған және мәнмен ауыстырылған. Бірінші жағдайда, b қате күйінде, себебі Мән функциясында жарамсыз аргумент бар. Бұл формула авторы күтпегендіктен, ол арқылы пайдаланушы оны көреді. Екінші жағдайда, бірдей формуламен b 0 мәні бар, нәтижесінде нөлге бөлінеді. Бұл жағдайда формула авторы мұның осы логика үшін қолайлы екенін біліп, қатені басып (баннер көрсетілмейді) және орнына -1 қайтаруы мүмкін.

With( {a: 1, b: Value("a")},
      IfError( a/b, If( FirstError.Kind <> ErrorKind.Div0, Error( FirstError ), -1 ) ) )
// returns an error with Kind = ErrorKind.InvalidArgument

With( {a: 1, b: 0} )
      IfError( a/b, If( FirstError.Kind <> ErrorKind.Div0, Error( FirstError ), -1 ) ) )
// returns -1

AllErrors кестесін кез келген басқа кесте сияқты сүзгілеуге болады. Error функциясымен пайдаланылғанда күтілетін қателерді жоюға және қалған қателерді сақтауға және хабарлауға болады. Мысалы, егер нөлге бөлу белгілі бір контексте қиындық тудырмайтынын білсек, бұл қателерді келесі формуламен барлық басқа қателерді қалдырып, сүзуге болады:

Error( Filter( AllErrors, Kind <> ErrorKind.Div0 ) )

Қадамдық

  1. Text input басқару элементін қосыңыз және әдепкі бойынша мұндай аты болмаса, оған TextInput1 атауын беріңіз.

  2. Белгі басқару элементін қосыңыз және әдепкі бойынша мұндай аты болмаса, оған Label1 атауын беріңіз.

  3. Label1 басқару элементінің Мәтін сипатының формуласын мынаған орнатыңыз:

    IfError( Value( TextInput1.Text ), -1 )
    
  4. TextInput1 ішінде 1234 санын енгізіңіз.

    Белгі1 1234 мәнін көрсетеді, себебі бұл Мән функциясына жарамды кіріс.

  5. TextInput1 ішінде ToInfinity деп енгізіңіз.

    Белгі1 -1 мәнін көрсетеді, себебі бұл Мән функциясына жарамды кіріс емес. Value функциясын IfError функциясымен ораусыз, белгі ешбір мәнді көрсетпейтін еді, өйткені қате мән бос мән ретінде қарастырылады.

Сондай-ақ келесіні қараңыз

Формула сілтемесі Power Apps