logo

[ELMA3] Вычислимые поля при изменении атрибутов документа

Важно! Вычисление значения атрибутов осуществляется при создании, сохранении и изменении (после нажатия на кнопку Сохранить) документа.

Внимание! Для того чтобы иметь возможность создавать вычислимые поля, нужно включить функцию Вычисления значения поля. O том, как это сделать, можно прочесть здесь.

Пример 1

В примере показано, как сохранить значение переменной Имя контрагента в строку. Для реализации примера нужно создать атрибут Строка типа Строка, сценарий размещен в поле Сценарий вычисления значения созданного атрибута. Также необходимо добавить переменную Контрагент типа Контрагент. Значение этой переменной будет записано в переменную Строка.

Рис. 1. Атрибуты документа, необходимые для реализации первого примера

Сценарий, необходимый для работы данного примера:

Stroka = (Kontragent != null) ? Kontragent.Name : "у контрагента нет имени";

Если поле контрагента пустое, то будет отображаться фраза: "у контрагента нет имени" (Рис. 2), иначе (Рис. 3).

Рис. 2. Значение при пустом поле контрагент

Рис. 3. Значение после выбора контрагента и сохранения документа.

Пример 2

В данном примере реализована запись имени автора документа в атрибут. Для реализации примера нужно создать атрибут Строка типа Строка, сценарий размещен в поле Сценарий вычисления значения атрибута Строка. Переменная Автор (CreationAuthor) автоматически создана в каждом типе документа.

Сценарий, необходимый для выполнения примера:

Stroka = (CreationAuthor != null) ? CreationAuthor.ToString() : "документ еще не сохранен";

До сохранения документа поле Автор пустое, поэтому в атрибуте Строка отобразится запись "Документ еще не сохранен" (Рис. 4). После сохранения документа значение атрибута поле Автор будет заполнено, а в атрибут Строка подставлено ФИО пользователя, создавшего документ (Рис. 5.).

Рис. 4. Значение атрибута Строка до сохранения документа.

Рис. 5. Значение в строке после сохранения документа.

Пример 3

В примере рассмотрено вычисление суммы двух чисел. Для реализации примера необходимо добавить атрибуты: Число 1, Число 2, Результат типа Целое число, сценарий размещен в атрибуте Результат в поле Сценарий вычисления значения. Атрибуты документа приведены на рис. 6.

Для корректной работы необходимо сделать переменные Chislo1 и Chislo2 обязательными для заполнения. После заполнении переменных Chislo1 и Chislo2 будет вычисляться их сумма, аналогично можно осуществить любую логику с вычислением, умножением, сложением, делением и т.д.

Рис. 6. Атрибуты документа, необходимые для реализации третьего примера.

Сценарий, необходимый для корректной работы примера:

Rezuljtat = ((Chislo1 != null) && (Chislo2 != null)) ? Chislo1+Chislo2: 0;

На Рисунке 7 и Рисунке 8 приведены тестовые примеры сценария.

Рис. 7. Значение до сохранения документа.

Рис. 8. Значение, после сохранения документа.

Пример 4

В примере осуществляется отображение в строке полного имени выбранного пользователи из контекстной переменной типа Пользователь. Сценарий размещен в переменной типа Строка, название – "ФИО", сценарий размещен в поле Сценарий вычисления значения. Атрибуты документа приведены ниже (Рис. 9).

Рис. 9. Атрибуты документа, необходимые для реализации четвертого примера.

Сценарий, необходимый для выполнения примера:

Dolzhnostj = (Poljzovatelj != null) ? Poljzovatelj.FullName: "пользователь не выбран";

Если атрибут Пользователь – не пустой, то в поле ФИО отобразится полное имя выбранного пользователя (Рис. 11), в противном случае будет отображаться – "пользователь не выбран" (Рис. 10).

Рис. 10. Значение, до сохранения документа.

Рис. 11. Значение, после сохранения документа. Отчество не подтянулось, так как оно не заведено в системе.

Пример 5

В данном примере при создании документа типа Договор автоматически подставляются реквизиты компании. Сценарии находится в переменных типа Строка, названия атрибутов: Банк (Bank), Бик (Bik), Р/С (RS), К/С (KS), ОГРН (OGRN), КПП (KPP), ИНН (INN), сценарии размещены в полях Сценарий вычисления значения. Атрибуты документа приведены ниже (Рис. 12). В примере осуществляется отображение в строках реквизитов компании, данные подставляются в атрибуты заранее вручную. Этот пример демонстрирует вычисление значений уже при создании документа, а не при сохранении.

Рис. 12. Атрибуты документа

Сценарии, необходимые для выполнения примера:

Bank = "ОАО АКБ АВАНГАРД г.Москва";
Bik = "044525201";
RS = "40702810942100031287";
KS = "30101810000000000201";
OGRN = "1045207806159";
KPP = "526201001";
INN = "5262127469";

Результат при создании документа:

Рис. 13. Значение до сохранения документа, то есть при его создании.

Пример 6

Сценарий для вызова сложных функций в вычисляемом поле:

new Func<string>(() =>{
  string res = "";
//твой код         
    return res;
})()