# Код

## Форматирование кода <a href="#code-formatting" id="code-formatting"></a>

#### Workflow XML Editor

Для автоматического выравнивания кода в редакторе Workflow XML Editor используется сочетание клавиш **Ctrl + Q.**

{% hint style="info" %}
Полный список сочетаний клавиш приведен в [статье](https://wfsys.gitbook.io/wt-knowledge-base/workflow-xml-editor/keyboard-shortcuts).
{% endhint %}

## Серверная часть <a href="#server" id="server"></a>

Элементы серверного xml-файла группируем в логические боки в рамках родительского тэга. И каждый блок отмечаем комментарием, раскрывающим смысл блока.

Например, запросы на получение списка городов и списка клиентов и запросы на редактирование этих списков объединяем в два блока:

<figure><img src="https://705744344-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVZ4foBjMM8Ahva3mdZKf%2Fuploads%2FiXggPalHeBMpRs5BluGw%2Fimage.png?alt=media&#x26;token=12b295cc-5801-4b17-82f2-94ea82427ea4" alt=""><figcaption></figcaption></figure>

В начале блока идут запросы на чтение данных о клиентах, а затем запросы на редактирование этих  данных.

В блок запросов для работы со списком можно добавить запрос на получение короткого списка, который будет использовать на формах в ComboBox - запрос ClientShortSelectSqlQuery. Если этот запрос будет вызываться только на одной форме, то лучше описать его в блоке запросов связанных с этой формой. Например, в блок запросов для работы с заказами добавлены запросы OrderPositionByOrderIdSelectSqlQuery и OrderPaymentByOrderIdSelectSqlQuery, которые будут вызываться только на форме заказа:

<figure><img src="https://705744344-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVZ4foBjMM8Ahva3mdZKf%2Fuploads%2FbuEfNdXATnqBOF8v77MO%2Fimage.png?alt=media&#x26;token=d7f87f15-ea4d-45e0-9968-a63a0057328d" alt=""><figcaption></figcaption></figure>

Аналогично группируем и AccessPoint, собирая в один блок точки доступа привязанные к одной сущности:

<figure><img src="https://705744344-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVZ4foBjMM8Ahva3mdZKf%2Fuploads%2FDkeYgDxDz9pJqU4emIwu%2Fimage.png?alt=media&#x26;token=ce0e3a1e-6786-479f-ae21-8130ab048583" alt=""><figcaption></figcaption></figure>

В случае с AccessPoint можно использовать короткую запись комментария для наименования блока, т.к. код занимает меньше места, чем описание SqlQuery с текстом запроса. Двустрочный комментарий удобен при редактировании кода SqlQuery с текстом запросов.

Описание Permission и Role так же группируем в блоки.

## Клиентская часть <a href="#client" id="client"></a>

### Элементы формы <a href="#form-elements" id="form-elements"></a>

Все элементы формы кроме ее объектов группируются в блоки, объединенные либо одной сущностью, либо одной логикой.

На скриншоте ниже видно, что в блоки "Позиции заказа" и "Оплаты" попали DataConnection, которые хранят списки сущностей для отображения в таблицах но форме. А в блок "Вспомогательные" попали те, что получают с сервера данные для выпадающих списков.

<figure><img src="https://705744344-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVZ4foBjMM8Ahva3mdZKf%2Fuploads%2Fc7NtatpqfjKWU5pwfVX7%2Fimage.png?alt=media&#x26;token=896939cd-b7c8-4a5c-bec9-d5f530c2a797" alt=""><figcaption></figcaption></figure>

Аналогичным образом следует поступать с условиями и командами:

<div><figure><img src="https://705744344-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVZ4foBjMM8Ahva3mdZKf%2Fuploads%2FvYeNKwmXAbgV7RnKJTBx%2Fimage.png?alt=media&#x26;token=446cba7e-8c1f-4629-b357-50d33ea5bf07" alt=""><figcaption></figcaption></figure> <figure><img src="https://705744344-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVZ4foBjMM8Ahva3mdZKf%2Fuploads%2FEJ4lU8VH9TuV1onWwvAX%2Fimage.png?alt=media&#x26;token=92042cda-abb8-4e03-84e6-06c075d9475f" alt=""><figcaption></figcaption></figure></div>

### Объекты формы <a href="#form-objects" id="form-objects"></a>

Порядок описания xml-кода элементов формы должен соответствовать порядку отображения элементов в интерфейсе. Объекты описываются сверху вниз и слева направо в пределах своего контейнера.

<figure><img src="https://705744344-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVZ4foBjMM8Ahva3mdZKf%2Fuploads%2FA3GUNuTa89dbaxKKgbz8%2F01.png?alt=media&#x26;token=797786cf-0e04-4b4a-b6a4-f2f584c3ec27" alt=""><figcaption></figcaption></figure>
