Копировать ссылку на страницу Перейти в предыдущий раздел Перейти в следующий раздел

Рассматривается пример выбора записи справочника в строковом реквизите. В десктоп-клиенте создается кнопка для открытия модального окна.

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
.navbar > a:hover { background: #FFD73B; }