Функция openCard()

Версии: 2.3.0+

Описание

openCard()

Открывает карточку записи раздела или справочника*. Функция может принимать различные наборы параметров

Вариант 1:

openCard(p_parent_type, p_source_name, p_rec_id[, p_parent_id, p_replace_window_id, p_card_params, p_ondestroy, p_detail_name, p_detail_column_value])

Параметры

  • p_parent_type — Тип источника описания карточки. Доступные значения: grid, dict.

  • p_source_name — Имя источника описания карточки (имя раздела или справочника).

  • p_rec_id — ID записи, карточку которой необходимо открыть, если передана пустая строка, то будет открыта карточка новой записи.

  • p_parent_id — id родительской таблицы записей, из которой открsnf карточка. После сохранения карточки, происходит перерисовка таблицы записей с id = p_parent_id, при условии, что данная таблица записей существует и она отображает данные того же раздела, что и карточка. Еслив качестве параметра указать пустую строку, то параметру будет присвоено случайное значение.

  • p_replace_window_id — Служебный параметр, использующийся для навигации по вкладкам карточки. Если значение отлично от p_replace_window_id, то карточка нарисуется в существующем окне с id =p_replace_window_id.

  • p_card_params* — Строка (предпочтительно в формате JSON), содержащая параметры, которые необходимо передать карточке. Данные параметры доступны в серверной логике карточке ($params['card_params']) и в клиентсокй логике (поле _params формы карточки).

  • p_ondestroy** — Функция, которая будет вызвана после закрытия карточки.

  • p_detail_name*** — Имя вкладки. Используется, если нужно открыть вкладку какого-либо раздела.

  • p_detail_column_value*** — Значение ID связующего поля вкладки. Используется, если задан параметр p_detail_name.

Вариант 2:

openCard(p_params_object)*

Параметры

  • p_params_object.source_type — см. p_parent_type. Значение по умолчанию: grid.

  • p_params_object.source_name — см. p_source_name.

  • p_params_object.rec_id — см. p_rec_id. Значение по умолчанию: пустая строка.

  • p_params_object.parent_id — см. p_parent_id. Значение по умолчанию: grid.

  • p_params_object.replace_window_id — см. p_replace_window_id. Значение по умолчанию: undefined.

  • p_params_object.card_params — см. p_card_params. Значение по умолчанию: пустая строка.

  • p_params_object.ondestroy — см. p_ondestroy. Значение по умолчанию: пусто.

  • p_params_object.ondestroy — см. p_detail_name. Значение по умолчанию: пусто.

  • p_params_object.ondestroy — см. p_detail_column_value. Значение по умолчанию: пусто.

Результат

Функция не возвращает результата

Примеры

1. Передача параметров старым способом

Раздел сообщения, кнопка "Ответить". При ее нажатии открывается карточка сообщения, которой в поле parent_id передан id текущего сообщения. При открытии карточки, из parent_id выделяется id переданной записи
function replyMessage(p_grid_id) {
  ...
 
  // открытие карточки, которой в качестве родителя данные в специальном формате
  openCard('grid', 'Message', '', '#'+rec_id+'#grid');
}

2. Передача параметров новым способом

Карточка письма. При нажатии на кнопку "Создать инцидент", открывается карточка инцидента, которой передаются параметры в JSON формате. В северной логике карточки инцидента проверяется, передан ли карточке параметр и в зависимости от результата производятся нужные действия
// создание инцидента из письма
function c_email_createIncident(p_this) {
	var form = $(get_window_id(p_this)).getElementsByTagName("form")[0];
	var params = {mode: 'incident_from_email', emailid: form._id.value};
 
	form._hash.value = 'close';
	CloseCardWindow(p_this);
 
	openCard({
		source_name: 'Incident', 
		card_params: Object.toJSON(params)
	});
}
//********************************************************************
// Серверная логика карточки инцидента
//********************************************************************
include_once GetPath().'/config/common/Lib/lib.php';
 
// Функция вызывается перед открытием карточки
function incident_onprepare($params) {
  if ($params['card_params'] != '') {
    $card_params = json_decode($params['card_params'], true);
    if ($card_params['mode'] == 'incident_from_email') {
      ...
    }
    ...
}

*Доступно, начиная с версии 3.0.06
**Доступно, начиная с версии 3.2.03
***Доступно, начиная с версии 3.3.01

Навигация