Обработчики в Iris CRM

March 2, 2014

Версии: 4.0.12+

В таблицах

Обработчики описаны в порядке их вызова.

PHP (файл [d]s_*.php). onPrepareGrid($parameters)

Вызывается перед чтением данных для таблицы. Используется для подмены источника таблицы.

Параметры: $parameters - ассоциативный массив с ключами

grid_type - Тип таблицы. Доступны значения: 
  grid (реестр записей), 
  window (окно лупы), 
  detail (закладка).
source_type - Откуда открыта таблица. Указывается, если тип таблицы - window. Доступные значения: 
  dict (справочник), 
  grid (реестр записей раздела, который используется в данном случае как справочник).
source_name - Имя источника описания grid
  Если тип таблицы - grid, то указывается xml объект того раздела меню, для которого нужно нарисовать grid.
  Если тип таблицы - window, то указывается либо xml объект раздела меню, либо xml объект описания справочника.
  Если тип таблицы - detail, то указывается xml объект того раздела меню, для которого нужно закладку.
detail_name - Имя закладки, которую нужно нарисовать.
detail_parent_record_id - ID родительской записи.
sql_parameters - Параметры для SQL запроса.

Возвращаемое значение: модифицированный $parameters. В $paramaters может быть добавлен атрибут parameters, содержащий параметры для SQL запроса таблицы, которые не надо смешивать с sql_parameters. Только эти параметры будут переданы в запрос для извлечения данных карточки записи.

PHP (файл [d]s_*.php). onReplaceGrid()

Вызывается перед чтением данных для таблицы. Используется для полной замены содержимого, например, для отрисовки нестандартного раздела.

Параметры: нет.

Возвращаемое значение: html текст.

PHP (файл [d]s_*.php). onPrepare($parameters)

Перед редактированием/вставкой новой записи.

Параметры: $parameters - ассоциативный массив с ключами

parent_type - тип таблицы (grid, dict, window, detail), 
source_name - Имя источника описания карточки, 
detail_name - Код вкладки, 
mode - режим редактирования (insert, update),
detail_column_value - Для типа родителя detail. Значение id записи родительской таблицы.

Возвращаемое значение: значения по умолчанию в ключе FieldValues.

Пример

<?php
public function onPrepare($params) 
{
    $result = GetDictionaryValues(
        array (
            array ('Dict' => 'IssueState', 'Code' => 'Plan')
        ), $this->connection);

    //Ответственный    
    $result = GetDefaultOwner(GetUserName(), $this->connection, $result);

    //Даты
    $Date = GetCurrentDBDate($this->connection);
    $result = FieldValueFormat('StartDate', $Date, null, $result);
    $result = FieldValueFormat('PlanStartDate', $Date, null, $result);
    
    return $result;
}

Javascript (файл [d]g_*.js). onOpen()

Параметры: нет.

Возвращаемое значение: нет.

Пример

  onOpen: function () {
    // Кнопка печать...
    g_InsertUserButtons(this.el.id, [
      {
        name: T.t('Печать') + '&hellip;', 
        buttons: [
          {
            name: T.t('История'), 
            onclick: "irisControllers.objects.g_Account" + this.el.id +
              ".onPrint('" + this.el.id + "', 'r_AccountHistory');"
          }
        ]
      }
    ], 'iris_Account');
  }

PHP (файл [d]s_*.php). onBeforePost($parameters)

Параметры: $parameters - ассоциативный массив с ключами

card_params - параметры с которыми была открыта карточка (4.0.37+),
old_data - Старые значения,
new_data - Новые значения.

Возвращаемое значение:
пусто (если ничего не требуется менять),
модифицированные Новые значения,
в случае ошибки - текст ошибки в ассоциативном массиве с ключом Error.

Пример

<?php
public function onBeforePost($parameters)
{
    $name = $this->getActualValue(null, $parameters['new_data'], 'name');
    if (iris_strpos($name, '"') !== false) {
        return array('Error' => 'В коротком названии не допускаются кавычки');
    }
    $fields = FieldValueFormat('Description', 'Test onBeforePost()');
    return $this->mergeFields($parameters['new_data'], $fields);
}

PHP (файл [d]s_*.php). onAfterPost($tableName, $recordId, $oldData, $newData)

Параметры:
$tableName - Название таблицы,
$recordId - Id записи,
$oldData - Старые значения,
$newData - Новые значения.

Возвращаемое значение: нет.

Пример

<?php
public function onAfterPost($table, $id, $old_data, $new_data) {
    $parent_id = $this->getActualValue($old_data, $new_data, 
            strtolower($this->_parent) . 'id');
    if (!$parent_id) {
        return;
    }

    // Расчёт суммы документа
    $this->updateParentAmount($parent_id);

    // Перенумеруем продукты при необходимости
    $this->renumberProducts($old_data, $new_data, $id);
}

Javascript (файл [d]g_*.js). onAfterFieldSave(recordId, fieldName)

Для редактируемой таблицы.

Параметры:
recordId - Id записи
fieldName - название колонки

Возвращаемое значение: нет.

Javascript (файл [d]g_*.js). onAfterDelete()

Параметры: нет.

Возвращаемое значение: нет.

В карточках

Обработчики описаны в порядке их вызова.

PHP (файл [d]s_*.php). onPrepare($parameters)

После чтения данных карточки, перед подготовкой данных для отображения карточки.

Параметры:
$parameters - ассоциативный массив с ключами

parent_type - тип родителя (grid, dict, window, detail), 
parent_id - Id родительской таблицы, 
source_type - Указывается, если тип родителя window. Где хранится описание данной карточки (grid или dict),
source_name - Имя источника описания карточки, 
detail_name - Код вкладки, 
mode - режим редактирования (insert, update), 
rec_id - Id записи (для режима редактирования update), 
detail_column_value - Для типа родителя detail. Значение id записи родительской таблицы
card_params - Параметры карточки,

Возвращаемое значение: значения по умолчанию в ключе FieldValues.

Javascript (файл [d]c_*.js). onOpen()

Параметры: нет.

Возвращаемое значение: нет.

Пример

  onOpen: function() {
    this.getField('Number').attr('readonly', 'readonly');
  }

PHP (файл [d]s_*.php). onBeforePost($parameters)

До сохранения значений карточки.

Параметры:

$parameters - ассоциативный массив с ключами

old_data - $old_values, 
new_data - $table_values_inserting,

Возвращаемое значение: значения по умолчанию в ключе FieldValues или ошибка в ключе Error.

PHP (файл [d]s_*.php). onAfterPost($tableName, $recordId, $oldData, $newData)

После сохранения значений карточки.

Параметры:
$tableName - Название таблицы,
$recordId - Id записи,
$oldData - Старые значения,
$newData - Новые значения.

Возвращаемое значение: Error в случае ошибки.

Javascript (файл [d]c_*.js). onAfterSave(recordId, mode)

Параметры:
recordId - Id записи
mode - режим редактирования (insert, update)

Возвращаемое значение: нет.

В отчётах

Javascript. onOpen()

Вызывается после открытия отчета.

Параметры: нет.

Возвращаемое значение: нет.