Рассматривается пример выбора записи справочника в строковом реквизите. В десктоп-клиенте создается кнопка для открытия модального окна.
XML
<!-- Настраиваем, что строковый реквизит имеет пользовательский выбор -->
<Cards>
<Card type="ReferenceRecord" refcode="РКК">
...
<CustomRequisites>
<CustomSelect name="Строка2Т"/>
</CustomRequisites>
</Card>
JS
// Найти контрол для реквизита Строка2Т.
var element = WA.CR.form.requisites['Строка2Т'].controls[0];
// Проверить, что реквизит не только для чтения.
if (element.attr('readonly') != 'readonly') {
var elementParentDiv = element.parent().parent().parent();
// Найти кнопку .
var button = elementParentDiv.find('.Req_Icon');
// Переопределить нажатие на кнопку.
button.unbind('click').bind("click", function () {
WorkWithTextRequisite('NAME', 'TITLE', '', false);
});
}
var WorkWithTextRequisite = window.WorkWithTextRequisite = function (requisiteName, title, msgTitle, isReadonly) {
// Получить текущий реквизит.
var req = WA.CR.form.requisites[requisiteName];
var isReadonly = !!isReadonly;
var textAreaId = format("#newtextrequisitevalue{0}", requisiteName);
// Создать диалог и указать значения параметров.
var dialog = new WebAccess.components.dialogs.BaseDialog();
dialog.width = 600;
// Сгенерировать HTML для диалога.
dialog.setHtml(format("<textarea id='newtextrequisitevalue{2}' style='width: 100%; height: 98%;' {3}>{0}{1}</textarea>", msgTitle, req.getDisplayValue(), requisiteName, (isReadonly ? "readonly='readonly' class='Req_Disabled input'" : "")));
// Указать заголовок.
dialog.title = typeof title != 'undefined' ? title : "Установить значение реквизита " + requisiteName;
// Указать текст на кнопке «ОК».
dialog.okText = L("SAVE");
// Указать текст на кнопке «Отмена».
dialog.cancelText = L("CANCEL");
// Определить функцию на кнопке «ОК».
dialog.ok = function () {
if (!isReadonly) {
var tmpValue = $(textAreaId).val();
// Записать в значение реквизита.
WA.CR.form.requisites[requisiteName].setValue(tmpValue);
}
};
// Определить функцию на кнопке «Отмена».
dialog.cancel = function () {
if (!isReadonly) {
$(textAreaId).remove();
}
};
// Задать возможность растягивания диалога.
dialog.resizable = true;
// Переопределить событие показа диалога.
dialog.bind("onShow", function () {
$(textAreaId).parent().css({ 'height': '300px' });
});
// Вызвать метод показа диалога.
dialog.show();
};
© Компания DIRECTUM, 2018 | Сообщество пользователей DIRECTUM |