I am facing issue while creating layout for invoices. For few invoices I am able to capture the description column. But that is empty location, its not capturing where the details available in description column. I have checked with multiple options. I am unable to capture that. Here I have attached screenshot of the recognizing area in description column. Please check and help me.
In your case the ExactColumnBorders function of FlexiLayout language could be useful. It allows to set the column borders manually where you want them to be, without relying on the inner logic of Table element.
Please take a look at the FlexiLayout language > Specifying element properties > Table topic of FlexiLayout Studio Help
and also at the following forum topic:
Thank you for your response. The solution you gave to me will work if the column order is Description, quanity etc. If column order is Quanitity, description.. I am getting error as follows "Error in element "SearchElements.Table", 'Pre-search relations' section: Argument 'left' is greater than or equal to argument 'right' in function 'ExactColumnBorders.' "
Any solution for this?
If you can possibly encounter different column order, you should take into account multiple possible variants.
First option is to create alternatives for different types of documents that contain different types of tables.
Another solution is to create series of “if…then” constructions in Advanced pre-search relations tab where you can check all possible variations of column orders and set exact column borders for each variation.
Also as a solution for your initial question, more distinct search for column filling can be used (see Check content type in column Properties). In this case FLS will look for values of selected type more thoroughly.
Sorry, the comment was posted too early and without all details. Sample of what option's usage do you want to see?
Looking for example code for this kind of scenario. Any possibilities?
If you select on the Order tab multiple possible column orders and then in the Advanced pre-search relations write the code like:
If (stOrderNumber.XCenter < stDescription.XCenter) then //Order Number column is to the left of the Description column, stOrderNumber and stDescription being headers of columns
ExactColumnBorders(...) //some expression setting borders where Order Number column is to the left of the Description column
else //Order Number is to the right of the Description column
ExactColumnBorders(...) //some other expression setting borders
To give you more detailed advice, we'd like to see your samples, better if they will have different table columns order.
Thank you. Let me check.
I have added the image with different column order.. I would like to capture quantity,description and amount. Please help me on that.
somewhat its capturing Description. But not other columns.
This is the code, I have wrote to capture the columns.
If (Tableheader.Description.YCenter < TableHeader.Quantity.YCenter) then
ExactColumnBorders (TableHeader.Description.Rect.Right-650dt, TableHeader.Quantity.Rect.Left, Blocks.Table.Description);
ExactColumnBorders (TableHeader.Quantity.Rect.Right, TableHeader.Description.Rect.Left, Blocks.Table.Description);
If borders for one of the columns are set by ExactColumnBorders() method, the best practice is to set borders for all the other columns also by this method. Please add to both logic variants appropriate ExactColumnBorders() expressions for Quantity and Amount columns.
Its working fine with the code which I have mentioned with small corrections. Thank you for your response. I dont know how to add some new expressions for Quantity and Amount columns.
Please look at the chapters FlexiLayout Languages and Tutorial in the FlexiLayout Studio Help. If you need future assistance with your own advanced pre-search code, please contact your regional support.
Please sign in to leave a comment.