[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; })()