# Find Suppliers

Let's consider an example of a robot that demonstrates the automation of supplier search.

The robot project consists of 4 diagrams and 7 files in xlsx, txt, and docx formats.

Thus, to describe step by step, this robot works as follows:

1. It checks the email and upon receiving a letter (the template of which is specified in the file “WorkBodyEmail.txt”) makes a request to search for a product in Yandex.
2. It goes through the links from the search results and collects emails.
3. It filters the links using data from the file “BlockEmails.xlsx”.
4. It sends emails to the specified email addresses, taking the subject line from the file “RequestSubjectEmail.txt” and the body of the email from the file “RequestBodyEmail.txt”; two files are attached to the emails: the first is the application from the file “RequestWordTemplate.docx”, and the second is the company details from the file “CompanyDetails.xlsx”.

The main diagram of the project looks like this (for convenience, the blocks of the diagram are numbered):

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfsU7wAmaq3ZD-WhzwGKFlaGzFQd2hJOrDVtII1FXhSSTEjPY2OwkQeFfGgoQw4tcEAC-l0lvH5FV5X48WGLziNxfI1ia7OXvK-4_gUKb-UDjHGF7GKQpHcwcJTmm5C1UbUQ3ZU?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXe5LrZONXfMAgiWmOafJN2j1KS8s-q0N7gcK4nClcpu_oacrpUH_9-eyDSv2MxNwaqK87mizM8zZznxPGMiOVKqqaR4JaF77R0ZDu3a24Y28U8Ql_XgVrNp3XKiRSee2xmscJPgyA?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

1. **Block “Start”** (this block is the beginning of any diagram).
2. **Block “Process”** allows creating scenarios consisting of multiple diagrams. The execution of the scenario will continue from the “Start” block of the specified project diagram. The execution of the scenario will return to the current block and continue in the current diagram as soon as the “End” block in the external diagram is reached. For the “Process” block, the property “Diagram Name” is specified (the name of the diagram file where the scenario will continue).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc4dscE7y4lLISM50nQ8gs2QSiw-RIyUY82TLlhViMzpKegyzu4FFRwk2-3EnRd9csGwDD8SkhVAxnj11Vex1dMkq7NPnBeOlL_LGYFkAEbJy3fWzCCeUGhp4yr1i3HqQTJjmY_?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

3. **Block “Pause”** suspends the execution of the scenario for a specified time. In this case, for 10 seconds.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcWjKOFpRqt0PBo4moLNimzDEHvYijkCgIJYpMhNRfqsDail7ElFCXKKge5tFYoUR2h4XFLXbYUMEKINNRHhUkXGEAI3YE5QucoDx86YYevVucFYZfjNdYMSJp7vBri_7erZRnHoQ?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

4. **Block “Get Emails via POP3”** allows retrieving emails using the POP3 protocol. The following properties are specified for this block:

* Server (server);
* Login (login required for server authorization);
* Password (password required for server authorization);
* Timeout (timeout for server response in seconds);
* SSL (if the flag is set, a secure connection is used);
* Number of emails (the number of the latest emails to be retrieved from the server).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfd5UwJQKX-raktUcTKKN6zuQEYdBRD1FCrAG45GJ69Wg8RlGuKX1l8TE_nkq3rxdHU2SR-min7fAmqZgTDhbJF4PVYjreIDESx5CCFehWQeD_fbd2e4ZE2GzA6A9pcb9uvuG7T?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

5. **Block “Log”** allows outputting arbitrary messages and/or variable values to the log during the execution of the robot's scenario. The property “Value” is specified for this block. A text constant is indicated in quotes, and the variable name starts with the symbol $. That is, this block logs an error message.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdtFsI9gioKuzJBWb2TWF_TxjRDHp2xFsCueAzMtFJwrVSQ9xt3LKTp4VjJJxcm34rGvb8HP-_qnXWRW6nFV6uZyTW2iB2bXqU55p-kcWYD9KsuvSHpvMPRHCs74p2DVJbeqKXzkQ?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

6. **Block “For Each (List)”** iterates over all elements in the specified list, assigning the current element to the variable specified in the “Element” property during each iteration of the loop, and then the execution of the scenario continues towards the Element exit of this block (to the so-called “loop body”). After iterating through all elements of the list, the execution of the scenario continues towards the lower exit of the block. Don’t forget to connect the exit of the last block in the loop body to the entrance of this block. For this block, one property is specified: “List” (the list whose elements need to be iterated over in the loop).

**Important!** *To reset the loop, you need to go not to the loop itself, but to the block above it.*

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfcw9iRqRAdIPze320M-BcS_h3Ka312CfnrF_RejYLpSOB-qHfjvJOGheZqSOFka8ZFUHkBAQIC9LQFY2LlvRNBFHnnl0y2hrMGRSbqBhfTfJFGqwelfeIiQXFYTXc_lYKZWVnJ6A?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

7. **Block “Assign Value to Variable”** sets new values for one or more variables. In this case, two values are specified in the properties that need to be assigned to two variables, respectively.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXe0QLMsH6m3f4joExUfweAzhIfmSlDWlcWdMXh-IP3rHMZhgCJ__TXaNvTC0YM3XBasNVz2IaW3a43ilZexHtxSFlVVkYinlXjdWHNIB7r4-P5ifo1gDM0YyUJUQbhDzWYZSYjJ?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

8. **Block “Encode in Base64”** allows encoding a string in Base64. For this block, one property is specified: “Text” (input string).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfYm8gzk9VSJhlX60YjoR5a-ecd2duT9gBvozMga6W2jl5SOggW8O6n4tGRplDDCsebysyXCWQE-gfLLHsjco6d8FuvYpRmWzbUHtuPzzQ6d7MLJCygRo6-5HtoD83-xRSd90xNFw?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

9. **Block “Check for Element in List”** searches the list and determines whether the sought element is present in the list or not. The following properties are specified for this block:

* List (the list in which the presence of the sought element needs to be checked);
* Element (the element whose presence needs to be checked);
* Check Type (select the type of check).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc6sVDtqosIF-xTg2083WIH8oy47aKbHo23oAA-SnCwVcvaBtixdtphFJNP0kj1cMpqR50yfIbmHkVDDOQS3XtMOT30_8KFiROP93-_21I4wvJKo8gXwIkwQLv5Ha0YRxL19jnavA?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

10. **Block “Add Element to List”** adds the specified element to the end of the list. The following properties are specified for this block:

* List (the list to which the new element needs to be added);
* Element (the variable that needs to be added to the list).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcLHEdUh_mYb6EiepwbMLinwBV3RMOWq4mgfkpp3EfF4HKVI6zNjkIEjq_hFo5YypC-ViBh4ESLQ45xo1K04nqytS4PFcZILvEQan0KAEchDMUKq8KMTsqD7LlqN5VKOylA7pC?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

11. **Block “Split Text”** splits a string into substrings based on the specified delimiter character. The following properties are specified for this block:

* Text (input string);
* New Line (if the flag is set, splitting will occur by new line);
* Remove Empty Substrings (if the flag is set, empty lines will be removed from the result);
* Trim (if the flag is set, each line in the result will be trimmed).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfPfJrCIRcZQ0ik1FF-cDVvXtvPhLqJeYXDRe-_mKE9AADfXX_ZpHt9U2MMyMcLXXR0qvNgOTf_uYOCNZKGKC1pV0BhzAY6_Y8LCaHz7Xc1tt82uJcksHZA4OjIjijHH_D9ogMMlA?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

12. **Block “Condition”** checks the specified condition for truth, after which the execution of the scenario continues towards the “Yes” exit (if the condition is met) or towards the “No” exit (if the condition is not met).

The condition is written in the format: “variable” equals (==)/ greater than (>)/ less than (<) “value”.

For example: $a == “Hello”, that is, if the value of variable $a is equal to “Hello”, then the exit is “Yes”, otherwise – the exit is “No”.

$Result > 5, that is, if the value of variable $Result is less than 5, then the exit is “Yes”, otherwise – the exit is “No”.

In this case, the condition is set as: $listbody\[0] == "SherpaRPA". That is, the body of the email must contain the code word "SherpaRPA".

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfs3eWiwWudOxDBbcqZaxXHB5l0tpXaRN4PHG28y4y2V3lyKPsu979TI74rCd3stdY25B4rsDlK7ZMAxc4h5kRnKPRHALiyUowsE1H79L4yjM-eaTVqR9poGNLCZ12q6p0aXFdWeA?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

13. **Block “Log”** allows outputting arbitrary messages and/or variable values to the log during the execution of the robot's scenario. The property “Value” is specified for this block. A text constant is indicated in quotes, and the variable name starts with the symbol $. That is, this block logs the message “The email does not contain the code word SherpaRPA”.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcygnWRZwJ8Uw5ud5d7XZX5g_liO3iv6kfSkbu5xavMAht3pAhp5Hzfl7M4jpJMdAkd9glqMHFc0so2RZsHrvu4U_pFwkbcg78w0XK8NBPgoarBWNbmxigdueC3rJRNdSvI3L5z?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

14. **Block “Loop”** allows repeating a chain of actions (blocks) several times while counting the number of iterations of the loop, recording the current count in a special variable (specified in the property “Loop”), which can then be used in other blocks. Upon first entering the block, the value of the variable from the property “Loop” is set to “Initial Value” (in this case, it is equal to 1), and then the execution of the scenario continues towards the “Loop” exit of this block (to the so-called “loop body”). As soon as the execution of the scenario reaches this block again, the value of the “Loop” variable will increase by the “Step” value (in this case, it is 1), and the transition to the “Loop” exit will occur again. As soon as the value of the “Loop” variable becomes greater than or equal to the “Final Value” (in this case, it is set to the variable $listbody.Count - 1), the execution of the scenario will continue towards the lower exit of the block. Don’t forget to connect the exit of the last block in the loop body to the entrance of this block or any of the preceding blocks.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcCSPrW4N_NRPBVzzp_UmayaOC06x3kBeN6ScUqT-eMEnrfLqcvWOz_Tgj86a-Q-Oj6AgtIhR3ms2fOwHf20ca9ClI7tJ72NQs8Iy5PJuaNxvRhGV346m8OoFPe3ur_M_2t8O6gEA?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

15. **Block “Process”** allows creating scenarios consisting of multiple diagrams. The execution of the scenario will continue from the “Start” block of the specified project diagram. The execution of the scenario will return to the current block and continue in the current diagram as soon as the “End” block in the external diagram is reached. For the “Process” block, the property “Diagram Name” is specified (the name of the diagram file where the scenario will continue).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcej8T7uEbxkG5VIBP1Azp1sdsSWfAPhwsQJnwdV3eWqQ05u1-J2zzyGtV3--pcaYdWhTBsh16Hn5HjjTLKGw429zxWsbCSdjjjZEa9JCfO4qL6jlc9hq06U_8wcmgUzPHgbSVK?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

16. **Block “Process”** allows creating scenarios consisting of multiple diagrams. The execution of the scenario will continue from the “Start” block of the specified project diagram. The execution of the scenario will return to the current block and continue in the current diagram as soon as the “End” block in the external diagram is reached. For the “Process” block, the property “Diagram Name” is specified (the name of the diagram file where the scenario will continue).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXczh1Fmjb7kZIcZXuiIrKm6m3AFoQyUL5aDUpR-DQVOs_i1sd14D6p5rNqToXB-8ctOXGbhfbwIm94QbBK1ZVx2VEbuHncnTt_blE8l4KaRW6pKLz9Wzgj5-6LkrEBjd8q8_wZHkw?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

17. **Block “Condition”** checks the specified condition for truth, after which the execution of the scenario continues towards the “Yes” exit (if the condition is met) or towards the “No” exit (if the condition is not met).

The condition is written in the format: “variable” equals (==)/ greater than (>)/ less than (<) “value”.

For example: $a == “Hello”, that is, if the value of variable $a is equal to “Hello”, then the exit is “Yes”, otherwise – the exit is “No”.

$Result > 5, that is, if the value of variable $Result is less than 5, then the exit is “Yes”, otherwise – the exit is “No”.

In this case, the condition is set as: $listbody\[$Index] == "Order:". That is, the body of the email must contain "Order:".

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdhz2-qPI8hnywsIsyJCFY0WiBgM-WAnnbBTGDQy7UTHvjQ0nemJFoAkJcM-xT3J8Sjkz6HfBID7nZwW4e2I7q5Kqkw4xmtmauP8TBr4_3wlBv_k85wq873ZKA0VZR5Xg?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

18. **Block “Assign Value to Variable”** sets new values for one or more variables. In this case, one value is specified in the properties that need to be assigned to one variable, respectively.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXf6BOD3kUrgWbMgLPcKTYGZ9JZH2rQ46uVLzo297Oo79ehziS-_SC0gEon_xVkZvIcZnxqTezWxsCi-5_Sm5WPOE7Ix7osdJpCyy9McIKfkbA9PIav4vnGq4i3krsrVOG4xJ3ChNg?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

19. **Block “Condition”** checks the specified condition for truth, after which the execution of the scenario continues towards the “Yes” exit (if the condition is met) or towards the “No” exit (if the condition is not met).

The condition is written in the format: “variable” equals (==)/ greater than (>)/ less than (<) “value”.

For example: $a == “Hello”, that is, if the value of variable $a is equal to “Hello”, then the exit is “Yes”, otherwise – the exit is “No”.

$Result > 5, that is, if the value of variable $Result is less than 5, then the exit is “Yes”, otherwise – the exit is “No”.

In this case, the condition is set as: $listbody\[$Index] == "Manager:". That is, the body of the email must contain "Manager:".

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfiMuVxRJLowhFCO73Vz93cFEZgE-kvyTwIcNOJ0XWwr7mCS8al0a-NBfffRvH9jIvuvZFvPUwlsv1aYcJkH-3Jvn_mojTRmg9aehBYXRknO43jKDjkyvCfZ_2AXnomGwljvnfTAw?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

20. **Block “Assign Value to Variable”** sets new values for one or more variables. In this case, one value is specified in the properties that need to be assigned to one variable, respectively.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXetu-uCccBGY5Btkms8EEJ-DNIcsARYNa6h63fBckaKvxsDvDE4XDdrSaJSh601bWLIJOdHBjewICytrhE6RiVYWl5b_JuI26Zry6bDuemPA9vKsEZHeHhdcqRJSdAofToOkj0fQw?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

21. **Block “Condition”** checks the specified condition for truth, after which the execution of the scenario continues towards the “Yes” exit (if the condition is met) or towards the “No” exit (if the condition is not met).

The condition is written in the format: “variable” equals (==)/ greater than (>)/ less than (<) “value”.

For example: $a == “Hello”, that is, if the value of variable $a is equal to “Hello”, then the exit is “Yes”, otherwise – the exit is “No”.

$Result > 5, that is, if the value of variable $Result is less than 5, then the exit is “Yes”, otherwise – the exit is “No”.

In this case, the condition is set as: $listbody\[$Index] == "Product:". That is, the body of the email must contain "Product:".

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXe-5WM4R10qPDBCNTGwOKQTbfMAri4cASdlyJSv_yayYcWItAJui3UJQeNRZRrukYxDuh6TDIsB-cdsUfJ1NAjTlQkLDjK_UhM8NUCnFRdHwu6BzpEUbtXB5SdrLGWiGA9Pku6a?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

22. **Block “Assign Value to Variable”** sets new values for one or more variables. In this case, one value is specified in the properties that need to be assigned to one variable, respectively.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfZG4-u-TnoITwkbNHJPpTTQV_nH8GNynvde-z26wa0b5PnnTfxpvs0aK00PrjNxJ_bHVXkHqmnxsZh5YDfytE9WPMiM34VHqNxAVQzLgKiSIuLA1lzgZnmo2sYn9f6vED1tI6wAA?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

23. **Block “Condition”** checks the specified condition for truth, after which the execution of the scenario continues towards the “Yes” exit (if the condition is met) or towards the “No” exit (if the condition is not met).

The condition is written in the format: “variable” equals (==)/ greater than (>)/ less than (<) “value”.

For example: $a == “Hello”, that is, if the value of variable $a is equal to “Hello”, then the exit is “Yes”, otherwise – the exit is “No”.

$Result > 5, that is, if the value of variable $Result is less than 5, then the exit is “Yes”, otherwise – the exit is “No”.

In this case, the condition is set as: $listbody\[$Index] == "Quantity:". That is, the body of the email must contain "Quantity:".

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdWElVcSTYhJ3wgZFu4kFS3EPvwipYHlv8EiIrqRFGZobfDZwWIljO2KVVZhIhsv5NNhgwLtaugUA-a1Z1rB8NMIlQOaBOGBFX_nCXMGnkj5DMp5fQaI4gvC2QWaHouRx7CHYRNNw?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

24. **Block “Assign Value to Variable”** sets new values for one or more variables. In this case, one value is specified in the properties that need to be assigned to one variable, respectively.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdLopPymoiZIjmdze4k9S5kP7RpW6or2l4bWch08GgrL8gPQ_AMyM4Vjx9p8q-TvLk_Rn-FWdEsm3Uj48Y2sQrZBN7guaZj-7dDKKTWmVzmScwUnBNxgXMAxOGKKVlKvszQIwxv-Q?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

25. **Block “Condition”** checks the specified condition for truth, after which the execution of the scenario continues towards the “Yes” exit (if the condition is met) or towards the “No” exit (if the condition is not met).

The condition is written in the format: “variable” equals (==)/ greater than (>)/ less than (<) “value”.

For example: $a == “Hello”, that is, if the value of variable $a is equal to “Hello”, then the exit is “Yes”, otherwise – the exit is “No”.

$Result > 5, that is, if the value of variable $Result is less than 5, then the exit is “Yes”, otherwise – the exit is “No”. In this case, the condition is set as: $RowOrganization == $null. That is, the “Organization” row must be equal to null.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdqvDeyzILxTfX5fHEy4p5nFUjWx9bNBiEi4h4Y1oWN6VyYWJ07n7s7t4b-bc5WOZm5LVVI2aZBJytJqIFAqZY5kbAohBSnharpYZQb4VvnlVjUo8rlXlSdx_avTxYvo-hqOtq0rQ?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

26. **Block “Add Element to List”** adds the specified element to the end of the list. The following properties are specified for this block:

* List (the list to which the new element needs to be added);
* Element (the variable that needs to be added to the list).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfBQGZa5TSuQUZPQjDHd20v_yzZ2bjNdOS4eUc_Gq3_sHfnPlBxYU9Q5k7teDDDdjlTun1AOxMPAvNsjiQUx61sYKL5jXUDOeABKGGYnFtPMGXiDpubtXKEABDYGn0AMRUgUArV5A?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

27. **Block “Add Element to List”** adds the specified element to the end of the list. The following properties are specified for this block:

* List (the list to which the new element needs to be added);
* Element (the variable that needs to be added to the list).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdQ5fqkyAifarJk9CyYecFiUVaxy1cnweyXZ-Aipe39HKz5UxGkAAbOLr8wHwQ2v4YuFoL6-_6LrFc716jUN1YwLyXqa0UZkv0_fhGXmzAnmMN3-PZ260b5m4W613IHKHoc3h_vCQ?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

28. **Block “Send Email”** allows sending an email using the POP3 protocol. The following properties are specified for this block:

* Server (server);
* Password (password required for server authorization);
* SSL (if the flag is set, a secure connection is used);
* Sender Email (the email from which the letter will be sent);
* Recipient Email (the email address of the recipient to whom the letter needs to be sent);
* Email Subject (the subject of the email);
* Email Text (the content of the email);
* HTML Markup (if the flag is set, the content of the email will be sent as an HTML page and may contain tags);
* Attachments (path to the file / List of file paths / Dictionary with files that will be attached to the email (key - name, value - path to the file));
* Timeout (timeout for server response in seconds).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXccnI45AIpNSXka2pZ3flXv7QYb0h6pggFIFQym42UapixtuOcNBsmDHjQrHw7GgWB8LaozUsOfLO33MZ0j20C9NWDKwkDrBGzjvQhF0S9kzWVlejp1ZiyVMTw1fOewVqmgGtuzzg?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

29. **Block “Execute Expression”** starts the execution of one or more expressions in a language compatible with PowerShell.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc-pG8xaS_Sqg5U7fz2IHI1ZnUrotKk4xthj48HX_2SforRq2AqXK_Ji10CTERQYjd8h0bnapuSXaBH8QvKu8hHBhEZNfHRdg-AefhoPs1uO4zgcjMAmVK3W0qlrK4QiloeNXo-YQ?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

30. **Block “Assign Value to Variable”** sets new values for one or more variables. In this case, one value is specified in the properties that need to be assigned to one variable, respectively.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcV_hyXibZI0e6UVvMllSuAqEW_wsV1a7neOsrpzFz5KoJ-0rVnMbSo3PdsBlJLqVE_GrEmrov2O12n1gIvrJouwSK1NDPjSb-pFtcemGs_d65CQAmblhGpKyV_7NdGCP_MDUB5ug?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

31. **Block “Get File Path”** allows you to find out the full path to a file. The following properties are specified for this block:

* Folder Path (the path to the folder where the required file is located);
* File Name (the name of the file).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdGxrUr9xdEOtP45QLFZpBKrnApn1xCjMHo2-XC7Of6W-pVG7cA5krvz_nSs9QdhLARwt2Qz8m7WW4Q70MuFoEqERsZgjyy20F_Wtz5NSslzFn2mASSaYpOixKpAk1cVvPNKUV-TQ?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

32. and 33. **Blocks “End”** (these blocks complete the execution of the scenario or return the subprocess diagram to the main process).

**Diagram “ProcessSetting”**

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXe677WtvSkz1w4UDSbNxwGp5G1-0uiR2yq1T1sAVOBXi8BsBT2WS3_4S2C3Iw1FAWoi_aVX9eFC-xlSMVMLDujIH6SWy-mceMklCUN-PvUyf7T6L_vX_JyoesG95k8qk9nayYrebw?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

1. **Block “Start”** (this block is the beginning of any diagram).
2. **Block “Get File Path”** allows you to find out the full path to a file. For this block, one property is specified: “File Name”.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXe6QSSGNTwtuL9na6ygpfKk7-SZXi9W1nHHq2Lq9SsjSEV04h5UANJNCFeMgwbFlOOnvppoXO2Nz-YRKjAyprgbbwV8pcwkdrGrR_8kvGGmSUDLDaBmykC5WGIDhbr28vsEkME9BQ?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

3. **Block “Get File Path”** allows you to find out the full path to a file. For this block, one property is specified: “File Name”.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdVIBlS0HvpN91a2ASii34JSN70XleQ5k6lk9nELBYYQQtfS3QfzGvihIzN4bBLgbZZCJNJaA3-xt93wwjHCPJHrsOgD_m7HWjpzCtVzd10_qmEREjrfYwwxL7wPucglmSNMUfVhQ?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

4. **Block “Read File”** allows reading the contents of a text file into a variable. The following properties are specified for this block:

* File Name (the name of the text file whose contents need to be read);
* Encoding (the encoding of the file).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcVDcC1iOAq2Nv0ayAyr_OI3ThLZoynNf5zimdknn74moQUMOEL9pAhnEV8fvAsrIJinwChRliO-tIwpZAv23T7WB1RWV2BNfRMvdVi82kQ-L3Gcl-hF0BZ-lFeV6YuiI-gk0M?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

5. **Block “Get File Path”** allows you to find out the full path to a file. For this block, one property is specified: “File Name”.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXejAUPiihTWqK2DnkD9SXHkwQimmHk7NX9vbebhnules21FHPbckIDdFxfjFx-5SGjWqxjsd_bXtnZ_dmPcHxtOWT0FRgKbwiMT1el92oxnHTUTtr0LQ94AUPjgBA7F6M7E3jMpmw?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

6. **Block “Read File”** allows reading the contents of a text file into a variable. The following properties are specified for this block:

* File Name (the name of the text file whose contents need to be read);
* Encoding (the encoding of the file).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeJFfgeZT81rV07JmKbkS7e5XmFUIZCqgQPM4UMJtfIz-e-Rdh0FK88bnqJfNIXzlHYw3Ekg5Im2ZgBTOxZ4GM0442RPcyKUGgc0tfZ4pHIF5OU6MaVEQj83uoh1f_H972pcb6qqQ?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

7. **Block “Get File Path”** allows you to find out the full path to a file. For this block, one property is specified: “File Name”.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcOWd-pC6Jj6ntSBHHKrqVjZ01lAsFXjVlojmvjLJOdfs6bVkoyfAjsO15EUzSWiFGed8yPFogaz2qGJ5ddCPTXzZI8EMEAetYAm5VymxVG5Ry5miDcDby_v9Gz14s4JLS0wjoqHA?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

8. **Block “Load Data Table”** allows loading a “Data Table” from an Excel document. The following properties are specified for this block:

* File Path (the data table into which data from the Excel document will be loaded);
* Sheet (the ordinal number of the sheet from which data needs to be read into the Data Table).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcJNedbos7RXA5AkDi-p1FiEJGKYFJy_Ni4cHB35LerOOqWtvQ3TYj8W_ZQ9rGu_4i1map_CfWPokJ8Qr6oVr3iKvsOv0DlCXFyZ3okj0hAdW8cEaZWsc12HKpa6sd6sVsgg9myOg?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

9. **Block “Get File Path”** allows you to find out the full path to a file. For this block, one property is specified: “File Name”.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdMhj24oGirsuExKk7AOoqm-ewqQH8MHtjNOvFxlgFmBs9nfRiY8dEs_A1JyIob2pkZxa5WyeM1oEynnXNdHTZ1-Q9KC2nettVsEZncKMLXnI_8ILT00O9jlI1NEPvCrYnvAkG5aQ?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

10. **Block “Load Data Table”** allows loading a “Data Table” from an Excel document. The following properties are specified for this block:

* File Path (the data table into which data from the Excel document will be loaded);
* Sheet (the ordinal number of the sheet from which data needs to be read into the Data Table).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd-__flDErov_pC6nUgPWcp6v5steGtr30iOgJfsAjR4vT1NXS5yPSOw1zkGls8Z1i0SARjgEI0VITH96-8K3JDXIsa4Uq7Hez_MDW5Yt4Ut5ccEZOAl3r2rQ7drdNGtVYGvwPHXw?key=jbUDunSxnrB5kl7NOMhHjOp2" alt=""><figcaption></figcaption></figure>

11. **Block “End”** (this block completes the execution of the scenario or returns the subprocess diagram to the main process).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sherparpa.ru/en/sherpa-rpa/sherpa-designer/primery-robotov/find-suppliers.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
