Any Interest in a Coding Camp Type Thread?

There is really no reason we can’t link to already established topics or posts with relevant and well presented explanations.

In some cases, maybe some context could be added if needed. No need to re-invent the wheel, just show them where to find it.

I would imagine we would start the thread either in the coding corner, or the Kinetic forum, and as the quality and quantity of the information improved, we could eventually move it to the experts corner.

I can volunteer myself as a doc testing dummy! I confess, I haven’t invested the time to get familiar with functions. Dunno how much of a doozy that first step is, and I generally get free time to figure out stuff like that in half hour chunks, so never felt like I had a proper block of time to usefully commit. This thread just got me thinking, if I had such a How-To-Function thing I’d probably be functioning all over the place by now.

@klincecum , can you provide an example of what you are expecting this to look like? Do you expect it to be like @hmwillett compendium? Do you think it should be a separate Topic that only certain members have access to edit but everyone can view? Will it be a folder type structure?

I’m only asking as understanding what the end result might be may help users figure out what questions they may want to ask.

Whoa, whoa, whoa. Let’s keep it clean. :laughing:

I’ll tell you what, there is a really good, but older thread on here for that, that could probably use some updating and simplification, so I’ll attempt to do that one as my first volunteer assignment.

In the meantime: Let’s Get Funcy - Epicor Functions

1 Like

Yes, but not at the moment. This thread is my distraction for now, I have real work to do, can’t do anymore due to prior commitments.

Yes & No

Imagine a very nice curated list at the top, but the thread is a (limited) free for all. :dumpster_fire:

No, I think we can trust those who can edit, to only edit the curated list.

That’s part of what we’re here to discuss. Brainstorming etc.

Can’t answer that one yet. Let’s hammer it out.

surprised hammer GIF

Yes! As a non-developer who has to deal with code every so often this could be awesome.

When you say Coding Camp, is it specifically using the Custom C# Block or will it include how/when to use the widgets ?? ( Think Low Coder Corner ??)

Either way, I would be interested in using such a resource

1 Like

Yes! Get folks using functions! I just got my first functions working and it really opens up a lot of doors.
Here are some other ideas I had while reading this thread:

  1. I would like to see third party API integration and would offer my example as a case study. Timeclock Integration - Asure API

  2. I would also like to see more integration examples between API and functions.

  3. Lots of folks know how to make a BAQ and a UBAQ, and also how to make the BPM with a custom action inside that BAQ. What I recently learned is that there are other methods to program for besides CustomAction. in the integration above, I used the GetList method in my UBAQ/BPM. I would like to know when and how to use the other methods available. Kevin knew right away to tap into that GetList method for my particular case. How did he come to that conclusion?

  4. You cant sort there… When can you use sort by in a BAQ? When you can’t sort because of the rules in the BAQ, how do you get around it and still sort the results in the way you need? I know you can only sort the top level query, but there are tricks to getting your sort working even if it is in a subquery. (Having flag?)

  5. Variable variable types. Various variables have various ways to call them. Recently, I had to declare a bunch of variables inside my custom code block with a question mark (I think this make it nullable?). Normally, epicor is not very picky about these, but using a function and/or third-party APIs may make these variable declarations a bit more needy.

  6. Using a UBAQ without updating any tables. I often have to use UBAQs to perform some specific task. Falling back to my integration with Asure from above, that UBAQ doesn’t update any tables. I only use the updateable part of the BAQ to update a flag in the BAQ results to show the record has been processed and to allow the BPM to move to the next record. I do this in combination with the FirstOrDefault() records from the results set, that way I always have the next record. I have seen other folks do things this way too, but I can’t help but feel like it is a hack. When is it right to use a UBAQ?

  7. Usings? We often overlook the libraries that are needed to make a specific chunk of code work. Sometimes the error message can point to the right library to include, but when we can’t figure it out, what is the best way to learn which resource to include in the “Usings…”?

  8. Pro tips in BPM Designer. Working with widgets has been nice. It provides an easy way to see where the flow of the program is going. To that end I have a handful of tips and tricks that I use when creating or editing BPMs. As an example: if a looping BPM will not execute, and the error is not present, or not descriptive enough, then you need to break your BPM. Normally I would do this with code breaks, but we can’t do that here. Instead, once you identify the widget that you expect is the issue, remove the last arrow pointing to it, and point to a messagebox widget instead. Output all your relevant variables and table values to figure out where you messed up. then once you figure it out, reconnect your original widget, and hold that messagebox widget to the side to use later. BPMs wont complete or give you an error if one of the widgets fails. So, remove the failing widget and put in a messagebox temporarily to help debugging. I use this all the time!

  9. Custom Code Events. How do you setup custom events in a customization? I know I have made a custom event for .Leave. I had to add the code to the InitializeCustomCode and DestroyCustomCode parts of my customization script. Let’s learn more about custom events.

  10. Kinetic… ugghh… I guess we have to forget everything we know when moving to kinetic. So how do we do all the stuff listed in 1-9 in kinetic instead?

2 Likes

As in allowed, yes.

As in from me? Absolutely not!

Ice T No GIF by The Tonight Show Starring Jimmy Fallon

@JasonMcD

1 Like

I’ll answer that one right now.

You don’t. But you will have to rethink some of it. We gain some capabilities, and we lose some. Gotta think on your feet, and outside the box.

As @Mark_Wonsil would say, “What business problem are you trying to solve? Is there a better way than what you are doing now?”

1 Like

Not everything, just half. (The client side). People have been preaching for years now to move your s*** to server side because it’s better for a bunch of reasons. If you’ve done that, then a lot, if not most of the heavy hitting as far as code goes is still relevant. If you ignored the warning and put all your code on the client side, then, yeah, you’re in a hurt bag. But you can’t say that you weren’t warned. :person_shrugging:

4 Likes

In stead of Experts Corner, it could be Dummies Corner. I’d bookmark that.

What’s the aversion to widgets? Isn’t that what epicor ‘wants’ us to use? Aren’t they also less prone to breaking during upgrades?

I would like to see some more discussion around this. We are cloud DT, so I am never sure what is client and server side. I can’t be the only one confused. What are the most common client side changes a company is likely to make? What are the best ways to migrate those kinds of changes to the server side? These questions are for the list. I am curious, but not curious enough to actually do some research. :stuck_out_tongue:

1 Like

Because the only complexity widgets abstract away is syntax, which is the easiest part of programming. Understanding the BO/API design, breaking down what you want to happen and what logic would achieve that and all the really hard parts remain. Once you have the skills to do these harder parts, widgets just make you less efficient at your work. Whats worse, is the widgets are unique to Epicor, whereas C# is more global in scope, so you can find resources and help for it much easier. Not only that, but you can find people who already have C# skills.

Because widgets are more restrictive, it was hoped that it would make upgrades easier, as you can change how a widget is implemented without the person who made it having to know anything. But it hasn’t actually worked out that way in my experience, for both Widgets and code, the reason they have broken for me is the way the software works has changed, or the BO signature has changed, which broke the widgets and code equally.

4 Likes

BPM’s, Epicor functions, and BAQ’s are server side.

UI customizations are client side.

I would say data validation and business logic (you can only do x after Y unless Z applies) are the most common thing people do in a UI customization that should be done at the BPM level.

2 Likes

Super Troopers Yes GIF by Searchlight Pictures

2 Likes

To be honest, I will use what I am comfortable with.

They say so, but I’ve never had a bpm or function break.
I have had the opposite.

2 Likes