Global

Members

autoEditEventsEnabled

Включены ли обработчики изменения поля в случае изменения поля программно

Source:

events

Обработчики в формате 'event selector': 'handlerName'

Source:
Examples

Обычное поле

events: {
 'field:edit #Name': 'onChangeName'
}

Поле matrix

events: {
 'field:edit #Date__d_Contact_Date_Matrix': 'onChangeDateMatrix'
}

IrisCardController

Родительский "класс" для карточек. На каждую карточку (для каждой записи) должен создаваться отдельный экземпляр контроллера.

Source:

IrisController

Родительский "класс" для карточек, таблиц и фильтров

Source:

IrisGridController

Родительский "класс" для таблиц

Source:

T

Многоязычность

Основная задача класса - перевод интерфейса на различные языки. Большая часть переводов происходит на стороне сервера, для этого служит класс Language на PHP. Класс T работает полностью аналогичным образом, но занимается переводами только тех элементов интерфейса, которые динамически создаются именно на стороне клиента. С помощью этого класса также склонять слова в различных падежах. Переводы хранятся в каталоге language. Основной язык системы - русский, поэтому файл language/ru/ru.php почти пуст, а language/ru/ru.js и вовсе отсутствует.

Файлы с переводами вызывают метод setLanguage и передают в него объект, ключами которого являются фразы для перевода, а значениями - переводы этих фраз на нужный язвк. Ключи сгруппированы в логические группы. Описание групп ключей полностью аналогично описанию в классе Language.

Для примера см. файл language/en/en.js.

Source:

Transport

Обмен данными с сервером

Source:

Methods

bindFields(masterFieldName, dependentFieldName, parentFieldNameopt)

Зависимость полей-справочников

Работает только для lookup-lookup и select-select. В случае select-select может быть немколько зависимых полей для одного master.

TODO: Реализовать также связи для lookup-select, select-lookup

TODO: Реализация с filter_where нецелесообразна

Parameters:
Name Type Attributes Description
masterFieldName

Код основного поля

dependentFieldName

Код поля, значение в котором надо фильтровать

parentFieldName <optional>

Название поля в таблице, по которому надо фильтровать значения.

Source:
Example
onChangeAccountID: function () {
  this.updateName(); 
  // Поле Контакт зависит от поля Компания
  this.bindFields('AccountID', 'ContactID');
},
onOpen: function () {
  this.getField('Number').attr('readonly', 'readonly');
  // Поле Контакт зависит от поля Компания
  this.bindFields('AccountID', 'ContactID');
  this.onChangePaymentTypeID();
}

customGrid(params)

Запрос к серверу для построения пользовательского грида

Parameters:
Name Type Description
params Object

Параметры для передачи на сервер. Допустимые свойства:

  • section - Код раздела, в котором расположен файл с серверной логикой
  • class - Название класса с серверной логикой
  • method - Название серверного обработчика
  • [parameters] - Параметры для передачи на сервер. Эти параметры передаются в серверный обработчик
  • [properties] - Свойства грида
  • onSelect - JS-обработчик выбора записи в гриде, который принимает id выбранной в гриде записи.

Метод, указанный в свойстве method, должен возвращать ассоциативный массив с элементами:

  • Card - HTML карточки с пользовательским гридом
  • GridId - Идентификатор грида
  • Или Error - С текустом ошибки в случае ошибки.

Для примера серверного обработчика см. config/sections/Task/c_task.php

Source:
Example

Выбор следующей цели из карточки дела

selectNextTarget: function() {
 var self = this;
 this.customGrid({
   section: 'Task',
   'class': 'c_Task',
   method: 'renderSelectRecordDialog',
   parameters: {
     taskid: this.parameter('id'),
     projectid: this.fieldValue('ProjectID'),
     targetid: this.fieldValue('TaskTargetID'),
     nexttargetid: this.fieldValue('NextTaskTargetID')
   },
   onSelect: function(record_id) {
     self.fieldValue('NextTaskTargetID', record_id);
   }
 });
},

fieldData(id, property, valueopt, eventopt) → {string|this}

Получить или установить значение атрибута вида data-<атрибут>.

Parameters:
Name Type Attributes Description
id string

Код поля

property string

Название атрибута

value string <optional>

Значение атрибута поля. Если параметр не передан, то метод вернет текущее значение поля.

event Object <optional>

Событие. Его необходимо передавать только для поля matrix. Если метод вызывается для получения значения matrix, то можно аргумент event передавать третьим по счету, вместо value.

Source:
Returns:

Значение атрибута, если метод используется для получения значения. this, если присваивается знаечние.

Type
string | this
Example
// Для поля Name значение атрибута data-mydata = myvalue.
this.fieldData('Name', 'mydata', 'myvalue');

fieldDisplayValue(id, displayValueopt, eventopt) → {string|this}

Получить или установить отображаемое значение поля. Имеет смысл для lookup-полей.

Parameters:
Name Type Attributes Description
id string

Код поля

displayValue string <optional>

Отображаемое значение поля. Если параметр не передан, то метод вернет текущее значение поля.

event Object <optional>

Событие. Его необходимо передавать только для поля matrix. Если метод вызывается для matrix, то можно аргумент event передавать вторым по счету, вместо value.

Source:
Returns:

Отображаемое значение поля, если метод используется для получения значения поля. this, если присваивается знаечние.

Type
string | this
Examples

Для обычного поля

// Поле Name = Иванов Иван
this.fieldDisplayValue('OwnerID', 'Иванов Иван');
// Вывод: Иванов Иван
console.log(this.fieldDisplayValue('OwnerID'));

Для matrix

events: {
 'field:edit #Date__d_Contact_Date_Matrix': 'myEvent'
},
myEvent: function(event) {
 console.log(this.fieldDisplayValue('ProductID', event));
}

fieldProperty(id, property, valueopt, eventopt) → {string|this}

Получить или установить значение атрибута поля.

Некоторые особенности

  • В случае изменения атрибута required (или mandatory), изменяется и css-класс заголовка поля.
  • В случае изменения readonly для lookup-поля, меняется доступ к кнопке "...".
  • В случае установки readonly для select-поля, поле становится disabled.
Parameters:
Name Type Attributes Description
id string

Код поля

property string

Название атрибута

value string <optional>

Значение атрибута поля. Если параметр не передан, то метод вернет текущее значение поля.

event Object <optional>

Событие. Его необходимо передавать только для поля matrix. Если метод вызывается для получения значения matrix, то можно аргумент event передавать третьим по счету, вместо value.

Source:
Returns:

Значение атрибута, если метод используется для получения значения. this, если присваивается знаечние.

Type
string | this
Example
// Делаем поле CreateID недоступным для изменения
this.fieldProperty('CreateID', 'readonly', true);

fieldRemoveProperty(id, property, eventopt)

Удалить атрибут у поля

Parameters:
Name Type Attributes Description
id string

Код поля

property string

Название атрибута

event Object <optional>

Событие. Его необходимо передавать только для поля matrix.

Source:

fieldType(id, eventopt) → {string}

Получить тип поля

Parameters:
Name Type Attributes Description
id string

Код поля

event Object <optional>

Событие. Этот параметр необходимо заполнять только в случае получения поля matrix.

Source:
Returns:

Тип поля (значение атрибута elem_type).

Type
string

fieldValue(id, valueopt, eventopt) → {string|this}

Получить или установить значение поля по названию поля

Parameters:
Name Type Attributes Description
id string

Код поля

value string <optional>

Значение поля. Если параметр не передан, то метод вернет текущее значение поля.

event Object <optional>

Событие. Его необходимо передавать только для поля matrix. Если метод вызывается для matrix, то можно аргумент event передавать вторым по счету, вместо value.

Source:
Returns:

Значение поля, если метод используется для получения значения поля. this, если присваивается знаечние.

Type
string | this
Examples

Для обычного поля

// Поле Name = Иванов Иван
this.fieldValue('Name', 'Иванов Иван');
// Вывод: Иванов Иван
console.log(this.fieldValue('Name'));

Для matrix

events: {
 'field:edit #Date__d_Contact_Date_Matrix': 'myEvent'
},
myEvent: function(event) {
 console.log(this.fieldValue('Date', event));
}

getField(id, eventopt) → {jQuery}

Получить поле по названию поля

Parameters:
Name Type Attributes Description
id string

Код поля

event Object <optional>

Событие. Этот параметр необходимо заполнять только в случае получения поля matrix.

Source:
Returns:

Найденное поле

Type
jQuery
Examples

Обычное поле

var code = this.getField('TaskStateID')
   .find('[value=' + this.fieldValue('TaskStateID') + ']').attr('code');

Поле matrix

irisControllers.classes.c_Contact = IrisCardController.extend({
 events: {
   'field:edit #Date__d_Contact_Date_Matrix': 'myEvent'
 },

 myEvent: function(event) {
   console.log(this.getField('Date', event).val());
 }
});

getFields(detailCode, id) → {Array.<jQuery>}

Получить поля matrix

По коду вкладки и названию поля возвращает массив найденных полей. Количество элементов равно количеству строк в matrix. Поля возвращаются в порядке их следования на форме.

Parameters:
Name Type Description
detailCode string

Код вкладки

id string

Код поля

Source:
Returns:

Поля

Type
Array.<jQuery>
Example
var fields = this.getFields('d_Contact_Date_Matrix', 'Date');
_.each(fields, function(elem) {
  console.log(elem.val());
});

hideField(id)

Скрыть поле

Parameters:
Name Type Description
id string

Код поля

Source:

onChangeEvent(event)

Стандартный обработчик для случая, когда обработкой события изменения поля занимается сервер. Этот обработчик отправляет запрос для вызова серверного onBeforePost<Код поля>(), который должен быть расположен в файле с префиксом s_ для раздела или ds_ для вкладки.

Parameters:
Name Type Description
event Object

Событие

Source:
Examples

Назначение обработчика изменения поля

events: {
 'change #Price, #Count, #UnitID, #Discount': 'onChangeEvent',
 'lookup:changed #ProductID': 'onChangeEvent'
}

Пример обработчика на PHP

public function onBeforePostPrice($parameters) {
   list ($count, $price, $discount) = 
           $this->getActualValue($parameters['old_data'], 
           $parameters['new_data'], array('count', 'price', 'discount'));

   $parameters['new_data'] = FieldValueFormat('Amount', 
           ((100 - $discount) * $count * $price) / 100, null, 
           $parameters['new_data']);

   return $parameters['new_data'];
}

parameter(id, valueopt, eventopt) → {string|this}

Получить или установить значение параметра карточки

Parameters:
Name Type Attributes Description
id string

Код параметра

value string <optional>

Значение параметра. Если не указан, то метод вернет текущее значение параметра.

event Object <optional>

Событие. Его необходимо передавать только для matrix. Если метод вызывается для параметра matrix, то можно аргумент event передавать вторым по счету, вместо value.

Source:
Returns:

Значение параметра, если метод используется для получения значения. this, если присваивается знаечние.

Type
string | this
Example
// Если карточку открыли не в режиме добавления новой записи
if (this.parameter('mode') != 'insert') {
  // ..
}

request(params)

Отправка запроса на сервер

Parameters:
Name Type Description
params Object

Объект с параметрами, который содержит возможные свойства

  • {String} section Раздел, в котором должен отработать метод на сервере
  • {String} class Название объекта, в котором содержится метод
  • {String} method Метод/событие, которое необходимо вызвать на сервере
  • {Object} [parameters] Параметры для передачи на сервер
  • {function} [onSuccess] Обработчик, который должен быть вызван после получения ответа с сервера
  • {function} [skipErrors] Массив кодов ошибок, которые надо пропустить (с которыми допускается вызвать обработчик)
Source:
Example
irisControllers.classes.dc_Account_Link = IrisCardController.extend({
  onAfterSave: function (p_rec_id, p_mode) {
    // После сохранения добавляем ссылку к связанной компании, 
    // если такая связь отсутствует
    Transport.request({
      section: 'Account', 
      'class': 'dc_Account_Link', 
      method: 'checkReverseLink', 
      parameters: {
        id: p_rec_id
      }
    });
  }
});

serverEvent(eventName, fieldNameopt)

Вызвать событие на сервере (в файле с s_ для раздела или ds_ для вкладки).

Будет выполнена попытка вызова серверного обработчика, название которого образовано формулой eventName + fieldName

Parameters:
Name Type Attributes Description
eventName string

вызываемое событие

fieldName string <optional>

Изменяемое поле

Source:

setLanguage(language)

Сменить язык

При смене языка интерфейс не перерисовывается. Этот метод используется ядром для выбора языка сразу после входа в систему.

Parameters:
Name Type Description
language Object

Объект с переводами

Source:

setPhoneFieldValue(field, value) → {this}

Присвоить значение полю с телефонным номером. При присваивании выполняется форматирование номера к формату "xx xxx xxx-xx-xx". Если присваивается значение полю с дополнительным номером, формат номера будет "xxxx".

Parameters:
Name Type Description
field jQuery

Поле

value string

Телефонный номер

Source:
Returns:
Type
this
Example
// Поле Phone1 = 7 925 555-55-55
this.setPhoneFieldValue(this.getField('Phone1'), '+79255555555');

showField(id, showopt)

Показать/скрыть поле

Parameters:
Name Type Attributes Default Description
id string

Код поля

show bool <optional>
true

Показать или скрыть поле

Source:

showTotal(windowIdopt)

Отображает итоги внизу таблицы

Parameters:
Name Type Attributes Default Description
windowId string <optional>
$(this.el.id)

Id таблицы.

Source:

t(message, sectionopt, typeopt, section_typeopt) → {string}

Выполнить перевод фразы на текущий язык

Parameters:
Name Type Attributes Default Description
message string

Сообщение, которое необходимо перевести

section string <optional>
null

Код раздела или справочника, в котором необходмио выполнить перевод. Если перевод для этого раздела не найден, то будет выполнен поиск фразы среди общих переводов. Регистр важен. Примеры: 'Account', 'Contact', 'Task'

type string <optional>
null

Уточнение, где именно искать перевод. Регистр важен. Примеры: 'Card', 'Filter', 'Domain'

section_type int <optional>
1

Куда указывает section

  • 1 - искать перевод для раздела.
  • 2 - для справочника.
Source:
Returns:

Переведенная строка. Если перевод не был найден, то возвращается исходная строка.

Type
string
Example

Примеры выполнения перевода

var message = T.t('Текст сообщения');
var caption = T.t('Название') + '&hellip;';

triggerAutoEditEvents(field)

Вызвать событие изменения поля, если это разрешено

Parameters:
Name Type Description
field jQuery

Поле, которое изменилось программно

Source: