cancel
Showing results for 
Search instead for 
Did you mean: 
Reply

Issues running Patch function in PowerApps

Hi, 

Any help is greatly appreciate it. 

 

I have create the following patch (I need to insert records from PowerApps to Sharepoint list) and it works perfectly. 

 

Payments = collection

SPAPLICACIONES = Sharepoint list (table B) 

DOCDETALLE = form with input to table A in Sharepoint

 

ForAll(Payments, If(!IsBlank(Comprobante), Patch(SPAPLICACIONES,{COMPROBANTE: Comprobante, MONTO_APLICADO: Monto_Aplicado, MONTO_TOTAL: Monto_Total, MONEDA: Moneda, TIPO: Tipo, PAGO: Pago})))

 

However, when I add just a couple of changes to the patch formula as they are underlying below, it does not run. I have also added the changes individually but it does not run neither.  It worth mentioning that the reason why I am adding the second underlying section is because I am trying to write a link between Table A and Table B, however I have not done any "Last Submit" (any advise here to replace the "Last Submit")

 

ForAll(Payments, If(!IsBlank(Comprobante), Patch(SPAPLICACIONES, Defaults(SPAPLICACIONES), {COMPROBANTE: Comprobante, MONTO_APLICADO: Monto_Aplicado, MONTO_TOTAL: Monto_Total, MONEDA: Moneda, TIPO: Tipo, PAGO: Pago, CPID: DOCDETALLE.LastSubmit.ID})))

 

Thank you in advance

 

20 REPLIES 20
WarrenBelz
Most Valuable Professional
Most Valuable Professional

Hi @bolandre92 ,

Firstly I have parsed it below - it is always helpful to use Format Text and put it in a text box as below when posting

ForAll(
   Payments, 
   If(
      !IsBlank(Comprobante),
      Patch(
         SPAPLICACIONES, 
         Defaults(SPAPLICACIONES), 
         {
            COMPROBANTE: Comprobante, 
            MONTO_APLICADO: Monto_Aplicado, 
            MONTO_TOTAL: Monto_Total, 
            MONEDA: Moneda, 
            TIPO: Tipo, 
            PAGO: Pago, 
            CPID: DOCDETALLE.LastSubmit.ID
         }
      )
   )
)

Firstly, adding Defaults(SPAPLICACIONES) is the correct syntax for adding new records, so that should certainly do the job.
As you said it was running before, I assume all field types in Payments (is it a Collection or List ?) line up with the matching ones in SPAPLICACIONES.
This then leaves CPID: DOCDETALLE.LastSubmit.ID . I assume DOCDETALLE is the Form name that was submitted are you want the ID from it - if so, this code should get you the correct value. I also assume CPID is a Numeric field in SPAPLICACIONES.
Are all my assumptions correct?

As an addition, try the below - it would be good if it worked for you.

ClearCollect(
   colPay,
   AddColumns(
      Filter(
         Payments,
         !IsBlank(Comprobante)
      ),
      "CPID",
      DOCDETALLE.LastSubmit.ID
   )
);
Collect(SPAPLICACIONES,colPay)

 

Please click Accept as solution if my post helped you solve your issue. This will help others find it more readily. It also closes the item. If the content was useful in other ways, please consider giving it Thumbs Up.

 

v-xida-msft
Community Support
Community Support

Hi @bolandre92 ,

How do you submit your DOCDETALLE form data? Using Patch function or SubmitForm function?

 

If you submit your DOCDETALLE form data using SubmitForm function, I think you could put your ForAll formula within the OnSuccess property of the DOCDETALLE form, then you could reference the DOCDETALLE.LastSubmit.ID formula.

Please set the OnSuccess property of the DOCDETALLE form to following:

ForAll(
        Payments, 
        If(
            !IsBlank(Comprobante), 
            Patch(
                  SPAPLICACIONES, 
                  Defaults(SPAPLICACIONES), 
                  {
                    COMPROBANTE: Comprobante, 
                    MONTO_APLICADO: Monto_Aplicado, 
                    MONTO_TOTAL: Monto_Total, 
                    MONEDA: Moneda, 
                    TIPO: Tipo, 
                    PAGO: Pago, 
                    CPID: DOCDETALLE.LastSubmit.ID
                  }
            )
        )
);
ResetForm(DOCDETALLE)

when you submit your DOCDETALLE form data successfully using SubmitForm function, the OnSuccess property of the Form would be fired, then the ForAll formula would be executed, you could reference the ID value of the submitted record within your Patch function via DOCDETALLE.LastSubmit.ID formula.

More details about the LastSubmit property of the Edit form, please check the following article:

https://docs.microsoft.com/en-us/powerapps/maker/canvas-apps/controls/control-form-detail#key-proper...

 

If you use Patch function to submit your DOCDETALLE form data, you could consider set the submitted form data into a variable, then you could reference the ID value of the submitted record through the variable.

Set(
    SubmittedRecord, 
    Patch(
          'Table A List', 
          Defaults('Table A List'),
          DOCDETALLE.Updates
    )
);
ForAll(
        Payments, 
        If(
            !IsBlank(Comprobante), 
            Patch(
                  SPAPLICACIONES, 
                  Defaults(SPAPLICACIONES), 
                  {
                    COMPROBANTE: Comprobante, 
                    MONTO_APLICADO: Monto_Aplicado, 
                    MONTO_TOTAL: Monto_Total, 
                    MONEDA: Moneda, 
                    TIPO: Tipo, 
                    PAGO: Pago, 
                    CPID: SubmittedRecord.ID   // reference ID value from the saved variable value
                  }
            )
        )
);

 

Please consider take a try with above solution, check if the issue is solved.

 

Best regards,

Community Support Team _ Kris Dai
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

@v-xida-msft ,

Thank you for the additional information.

@bolandre92 , Happy to continue the discussion with the answers to my queries.

Please tag whoever you want to continue this thread with.

Hi Warren, 

 

Thank you for your reply. 

 

All your assumptions are correct. Just one remark here: my collection does not have the column CPID. This is not a field that I am feeding in the first patch --Patch(Payments, ThisItem, {Fecha:DateValue(IFecha.Text), Comprobante:IComprobante.Text, Monto_Total: Value(IMonto_Total.Text), Monto_Aplicado: Value(IMonto_Aplicado.Text), Moneda: IMoneda.Text, Tipo: ITipo.Text, Pago: IPago.Text});Collect(Payments,{Fecha:"", Comprobante:"", Monto_Total:0, Monto_Aplicado:0, Moneda: "", Tipo: "", Pago: ""})

 

Please bear in mind that CPID is a Lookup field in the list SPAPLICACIONES and this fried comes from a table field named CP. So what I am doing here is to create a link between these two tables (SPAPLICACIONES and SPDOCUMENTOSCP). The first have the rows and the second has the heads. 

 

Should I store CPID in the collection? if so, just as a single text field? or how?

 

Finally, could you please elaborate more on your second query? what this should do and please clarify if I should replace the ClearCollect that I already have. 

 

Thank you for your patience, I am not a super PowerApps user. 

 

Andrey B. 

Hi, 

 

Thank you very much for your time. Very useful information. Just let me clarify one step here. 

 

I did not find another way to get the CPID other than creating a submit form of DOCDETALLE. However, I am not submiting any input from DOCDETALLE. Actually, it stores a display view of information from a Sharepoint list called SPDOCUMENTOSCP which has the headings while SPAPLICACIONES has the lines. These two lists are connected through a lookup column in SPAPLICACIONES named CPID which brings the ID of SPDOCUMENTOS. So my idea is that once I run the Patch from the PowerApp form, these records drop into SPAPLICACIONES but remain linked to SPDOCUMENTOSCP. 

 

I hope this is clear otherwise more than happy to provide further explanation. 

 

Thank you 

Hi @bolandre92 ,

I assume you want me to take this forward?

That changes the context a bit as you were using LastSubmit in your post - to this point, I have only been looking at the syntax of the Patch code you supplied.

It it reflected in a field value in whatever you have selected as ThisItem or can it be related to a value there with a Lookup?

 

 

Hi Warren, please do. 

 

Indeed, I think the last submit is something that I should not use here, however, I have not find the way to write in CPID which links the SP list headers and rows. 

 

I have attached a screenshot. The button "Insertar pagos" has the -- ClearCollect(Payments,{Fecha:"", Comprobante:"", Monto_Total: 0, Monto_Aplicado: 0,Moneda:"", Tipo:"", Pago:""})

 

The plus button has the --Patch(Payments, ThisItem, {Fecha:DateValue(IFecha.Text), Comprobante:IComprobante.Text, Monto_Total: Value(IMonto_Total.Text), Monto_Aplicado: Value(IMonto_Aplicado.Text), Moneda: IMoneda.Text, Tipo: ITipo.Text, Pago: IPago.Text});Collect(Payments,{Fecha:"", Comprobante:"", Monto_Total:0, Monto_Aplicado:0, Moneda: "", Tipo: "", Pago: ""})

 

the save button has the --ForAll(Payments, If(!IsBlank(Comprobante), Patch(SPAPLICACIONES, Defaults(SPAPLICACIONES), {COMPROBANTE: Comprobante, MONTO_APLICADO: Monto_Aplicado, MONTO_TOTAL: Monto_Total, MONEDA: Moneda, TIPO: Tipo, PAGO: Pago, CPID: DOCDETALLE.LastSubmit.ID})))

 

Bear in mind that all in the blue side is the DOCDETALLE, but I am not submitting anything here. It is just the information from the SP list where I need the form working. 

 

Let me know if you any further detail. 

 

thank you. 

Hi @bolandre92 ,

Could you please share a bit more about the Item property of the DOCDETALLE form?

Do you mean that you do not submit the DOCDETALLE form data, instead, just display information from your SPDOCUMENTOSCP List?

 

If the DOCDETALLE form Item property is bind to selected item within a Gallery in your canvas app, you could modify your ForAll formula as below:

ForAll(
       Payments, 
       If(
          !IsBlank(Comprobante), 
          Patch(
                SPAPLICACIONES, 
                Defaults(SPAPLICACIONES), 
                {
                  COMPROBANTE: Comprobante, 
                  MONTO_APLICADO: Monto_Aplicado, 
                  MONTO_TOTAL: Monto_Total, 
                  MONEDA: Moneda, 
                  TIPO: Tipo, 
                  PAGO: Pago, 
                  CPID: BrowseGallery.Selected.ID   // Modify formula here
                }
          )
       )
)

Note: I assume that you add a Gallery in your canvas app to list all records from your SPDOCUMENTOSCP List.

 

If you do not add a Gallery control in your app, just type a LookUp formula within the Item property of your DOCDETALLE form, please modify above ForAll formula as below:

ForAll(
       Payments, 
       If(
          !IsBlank(Comprobante), 
          Patch(
                SPAPLICACIONES, 
                Defaults(SPAPLICACIONES), 
                {
                  COMPROBANTE: Comprobante, 
                  MONTO_APLICADO: Monto_Aplicado, 
                  MONTO_TOTAL: Monto_Total, 
                  MONEDA: Moneda, 
                  TIPO: Tipo, 
                  PAGO: Pago, 
                  CPID: LookUp(SPDOCUMENTOSCP, PrimaryColumn = "Specific value xxxxx").ID   // Modify formula here. Find specific record from your SPDOCUMENTOSCP List, then reference the ID column value
                }
          )
       )
)

 

Please take a try with above solution, check if the issue is solved.

 

Best regards,

Community Support Team _ Kris Dai
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

Hi @bolandre92 ,

As mentioned in my last post, we only need to get the CPID either directly or by lookup from an item that we have access to.

So how does the CPID relate to the data in your DOCDETALLE table or alternatively an field in the Paymentlist?

You have said that it a Lookup field in the list SPAPLICACIONES and this field comes from a table field named CP. 

Once you tell me this, we should be able to easily reference it with a Lookup. Also is the ID you are seeking the one from CP or SPAPLICACIONES

 

Helpful resources

Announcements

Community will be READ ONLY July 16th, 5p PDT -July 22nd

Dear Community Members,   We'd like to let you know of an upcoming change to the community platform: starting July 16th, the platform will transition to a READ ONLY mode until July 22nd.   During this period, members will not be able to Kudo, Comment, or Reply to any posts.   On July 22nd, please be on the lookout for a message sent to the email address registered on your community profile. This email is crucial as it will contain your unique code and link to register for the new platform encompassing all of the communities.   What to Expect in the New Community: A more unified experience where all products, including Power Apps, Power Automate, Copilot Studio, and Power Pages, will be accessible from one community.Community Blogs that you can syndicate and link to for automatic updates. We appreciate your understanding and cooperation during this transition. Stay tuned for the exciting new features and a seamless community experience ahead!

Summer of Solutions | Week 4 Results | Winners will be posted on July 24th

We are excited to announce the Summer of Solutions Challenge!   This challenge is kicking off on Monday, June 17th and will run for (4) weeks.  The challenge is open to all Power Platform (Power Apps, Power Automate, Copilot Studio & Power Pages) community members. We invite you to participate in a quest to provide solutions in the Forums to as many questions as you can. Answers can be provided in all the communities.    Entry Period: This Challenge will consist of four weekly Entry Periods as follows (each an “Entry Period”)   - 12:00 a.m. PT on June 17, 2024 – 11:59 p.m. PT on June 23, 2024 - 12:00 a.m. PT on June 24, 2024 – 11:59 p.m. PT on June 30, 2024 - 12:00 a.m. PT on July 1, 2024 – 11:59 p.m. PT on July 7, 2024 - 12:00 a.m. PT on July 8, 2024 – 11:59 p.m. PT on July 14, 2024   Entries will be eligible for the Entry Period in which they are received and will not carryover to subsequent weekly entry periods.  You must enter into each weekly Entry Period separately.   How to Enter: We invite you to participate in a quest to provide "Accepted Solutions" to as many questions as you can. Answers can be provided in all the communities. Users must provide a solution which can be an “Accepted Solution” in the Forums in all of the communities and there are no limits to the number of “Accepted Solutions” that a member can provide for entries in this challenge, but each entry must be substantially unique and different.    Winner Selection and Prizes: At the end of each week, we will list the top ten (10) Community users which will consist of: 5 Community Members & 5 Super Users and they will advance to the final drawing. We will post each week in the News & Announcements the top 10 Solution providers.  At the end of the challenge, we will add all of the top 10 weekly names and enter them into a random drawing.  Then we will randomly select ten (10) winners (5 Community Members & 5 Super Users) from among all eligible entrants received across all weekly Entry Periods to receive the prize listed below. If a winner declines, we will draw again at random for the next winner.  A user will only be able to win once overall. If they are drawn multiple times, another user will be drawn at random.  Individuals will be contacted before the announcement with the opportunity to claim or deny the prize.  Once all of the winners have been notified, we will post in the News & Announcements of each community with the list of winners.   Each winner will receive one (1) Pass to the Power Platform Conference in Las Vegas, Sep. 18-20, 2024 ($1800 value). NOTE: Prize is for conference attendance only and any other costs such as airfare, lodging, transportation, and food are the sole responsibility of the winner. Tickets are not transferable to any other party or to next year’s event.   ** PLEASE SEE THE ATTACHED RULES for this CHALLENGE**   Week 1 Results: Congratulations to the Week 1 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Community MembersNumber of SolutionsSuper UsersNumber of Solutions @anandm08  23 @WarrenBelz  31 @DBO_DV  10 @Amik  19 AmínAA 6 @mmbr1606  12 @rzuber  4 @happyume  7 @Giraldoj  3@ANB 6 (tie)   @SpongYe  6 (tie)     Week 2 Results: Congratulations to the Week 2 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Community MembersSolutionsSuper UsersSolutions @anandm08  10@WarrenBelz 25 @DBO_DV  6@mmbr1606 14 @AmínAA 4 @Amik  12 @royg  3 @ANB  10 @AllanDeCastro  2 @SunilPashikanti  5 @Michaelfp  2 @FLMike  5 @eduardo_izzo  2   Meekou 2   @rzuber  2   @Velegandla  2     @PowerPlatform-P  2   @Micaiah  2     Week 3 Results: Congratulations to the Week 3 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge.   Week 3:Community MembersSolutionsSuper UsersSolutionsPower Apps anandm0861WarrenBelz86DBO_DV25Amik66Michaelfp13mmbr160647Giraldoj13FLMike31AmínAA13SpongYe27     Week 4 Results: Congratulations to the Week 4 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge.   Week 4:Community MembersSolutionsSuper UsersSolutionsPower Apps DBO-DV21WarranBelz26Giraldoj7mmbr160618Muzammmil_0695067Amik14samfawzi_acml6FLMike12tzuber6ANB8   SunilPashikanti8

Check Out | 2024 Release Wave 2 Plans for Microsoft Dynamics 365 and Microsoft Power Platform

On July 16, 2024, we published the 2024 release wave 2 plans for Microsoft Dynamics 365 and Microsoft Power Platform. These plans are a compilation of the new capabilities planned to be released between October 2024 to March 2025. This release introduces a wealth of new features designed to enhance customer understanding and improve overall user experience, showcasing our dedication to driving digital transformation for our customers and partners.    The upcoming wave is centered around utilizing advanced AI and Microsoft Copilot technologies to enhance user productivity and streamline operations across diverse business applications. These enhancements include intelligent automation, AI-powered insights, and immersive user experiences that are designed to break down barriers between data, insights, and individuals. Watch a summary of the release highlights.    Discover the latest features that empower organizations to operate more efficiently and adaptively. From AI-driven sales insights and customer service enhancements to predictive analytics in supply chain management and autonomous financial processes, the new capabilities enable businesses to proactively address challenges and capitalize on opportunities.    

Updates to Transitions in the Power Platform Communities

We're embarking on a journey to enhance your experience by transitioning to a new community platform. Our team has been diligently working to create a fresh community site, leveraging the very Dynamics 365 and Power Platform tools our community advocates for.  We started this journey with transitioning Copilot Studio forums and blogs in June. The move marks the beginning of a new chapter, and we're eager for you to be a part of it. The rest of the Power Platform product sites will be moving over this summer.   Stay tuned for more updates as we get closer to the launch. We can't wait to welcome you to our new community space, designed with you in mind. Let's connect, learn, and grow together.   Here's to new beginnings and endless possibilities!   If you have any questions, observations or concerns throughout this process please go to https://aka.ms/PPCommSupport.   To stay up to date on the latest details of this migration and other important Community updates subscribe to our News and Announcements forums: Copilot Studio, Power Apps, Power Automate, Power Pages