Предварительные действия
XML
<Extension name="MyExt" title="My_Extension" jsfile="/js/myext.js">
<Cards>
<Card type="ReferenceRecord" refcode="AllReq" jsfile="/js/myext.js" customcardformclass="DIRECTUM.WebAccess.Extensions.MyExt.AllReqCardForm, NpoComputer.WebAccess.Components ">
</Card>
</Cards>
</Extension>
JS
(function (global) {
WA.ready(function () {
switch (WA.getLocation()) {
case 'reference':
// Карточка записи справочника.
switch (WA.CR.getReferenceCode()) {
case 'AllReq':
// Справочник "Все реквизиты" (AllReq).
// Вычисления при открытия карточки справочника «Все реквизиты».
// Код, описанный ниже.
break;
//...
}
break;
case 'referencerecords':
// Список записей справочника.
break;
}
});
})(window);
|
В зависимости от значения текущего реквизита
var reqName = "Работник";
WA.CR.form.requisites[reqName].bind('change', function (req, event, newReq) {
if (newReq.value !== '') {
// 1. Выделить красным цветом название реквизита «Работник»,
// если указано любое значение.
$($('#' + WA.CR.form.requisites[reqName].controlsIds[0]).parents('.Card_Element')[0]).prev().css('color', 'red');
// 2. Выделить красным цветом метку, не относящуюся к реквизиту на форме.
$('div[name="NetAssetsLabel2"]').css({ "color": "red" });
}
});
Результат 1:
Результат 2:
|
В зависимости от значения других реквизитов карточки
var reqNamePod = 'Подразделение';
WA.CR.form.requisites[reqName].bind('change', function (req, event, newReq) {
if (newReq.value !== '') {
// 1. Выделить красным цветом название реквизита «Работник»,
// если реквизит «Подразделение» заполнен.
var reqName = "Работник";
$($('#' + WA.CR.form.requisites[reqName].controlsIds[0]).parents('.Card_Element')[0]).prev().css('color', 'red');
// 2. Выделить красным цветом метку, не относящуюся к реквизиту на форме.
$('div[name="NetAssetsLabel2"]').css({ "color": "red", "font-weight": "bold" });
}
});
Результат 1:
Результат 2:
|
В зависимости от значений реквизитов связанного объекта
В атрибуте CustomCardFormClass получаем нужные связанные объекты и возвращаем на страницу данные этих объектов, влияющие на изменение цвета и шрифта, в js-объект AllBoundReqData.
.NET
Imports NpoComputer.WebAccess
Imports NpoComputer.WebAccess.API
Imports NpoComputer.WebAccess.API.RequisiteDescription
Imports System.Web.UI
Imports NpoComputer
Imports NpoComputer.WebAccess.Components
Imports System.Text
Namespace DIRECTUM.WebAccess.Extensions.MyExt
''' <summary>
''' Класс для работы с карточкой "Все реквизиты".
''' </summary>
''' <remarks></remarks>
Public Class AllReqCardForm
Inherits CardForm
''' <summary>
''' Конструктор класса.
''' </summary>
''' <param name="RefRec">Запись справочника</param>
''' <param name="ViewCode">Представление</param>
''' <remarks></remarks>
Public Sub New(ByVal RefRec As ReferenceRecord, ByVal ViewCode As String)
MyBase.New(RefRec, ViewCode)
End Sub
Protected Overrides Sub RegisterScript()
MyBase.RegisterScript()
' Получить объект, связанный с текущим объектом Me.DataObject,
' потом выгрузить на страницу все его данные,
' касающиеся изменения цвета и шрифта в метках и названиях реквизитов.
Dim ScriptRenderText As New StringBuilder
ScriptRenderText.Append("<script>")
ScriptRenderText.Append(String.Format("AllBoundReqData={0};", New With {
.boundDocSomeData = "test"
}.ToJSON()))
ScriptRenderText.Append("</script>")
Page.ClientScript.RegisterClientScriptBlock(Me.GetType, "AllReqCardForm", ScriptRenderText.ToString)
End Sub
End Class
End Namespace
JS
if (AllBoundReqData.boundDocSomeData == 'test') {
var reqName = "Работник";
$($('#' + WA.CR.form.requisites[reqName].controlsIds[0]).parents('.Card_Element')[0]).prev().css('color', 'red');
// Отобразить красным цветом метку, не относящуюся к реквизиту на форме.
$('div[name="NetAssetsLabel2"]').css({ "color": "red", "font-weight": "bold" });
}
|
В зависимости от информации о текущем пользователе
Под информацией о текущем пользователе подразумеваются его права, вхождение в группы пользователей, нахождение на определенном уровне иерархии в орг. структуре и т.п.
Часть информации о текущем пользователе есть в WA.CR.user. Если этого не достаточно, то нужно делать аналогично связанным объектам.
|