8 (800) 302-62-68
+7 (499) 348-29-58
sale@rbs-crm.ru

Документация разработчика

Форма списка

“Форма списка” используется для вывода списка объектов модуля (например, список “Счетов”). Добавляется в “Конфигураторе”, для этого нужно нажать кнопку “Добавить форму” и выбрать тип “Форма списка”. Например, добавим форму списка в модуль “Счета” (documents.orders).

Например, добавим форму списка в модуль “Счета” (documents.orders).

  • “Вложена в” — Выбирается другая форма, если нужна привязка к какому-либо другому модулю системы, например в “Контрагента” (выбираем основную форму редактирования модуля “Контрагенты” — /companies/edit). Созданная форма будет доступна по адресу /companies/$companyId/orders/. Если в поле “Вложена в” выбрать другую форму, например /companies_base/edit, то созданная форма в модуле Счет будет доступна по ссылке /companies_base/$companyId/orders/

В шаблоне формы необходимо вывести таблицу для вывода объектов:

[[table | name: form]]
    [[column | table: form | name: number | width: 4% | header: № | type: link | path: /orders | tags: nowrap center]]
    [[column | table: form | name: date | width: 8% | tags: nowrap center]]
    [[column | table: form | name: owner | width: 35% | type: link | path: /companies | align: left | tags: nowrap]]
    [[column | table: form | name: total | width: 8% | tags: nowrap right]]
    [[column | table: form | name: payment | width: 9% | header: Оплачено | tags: nowrap right | th: no-sort | lock: true]]
    [[column | table: form | name: profit | width: 9% | tags: nowrap right]]
    [[column | table: form | name: responsible | width: 17% | align: center]]
    [[column | table: form | name: pay | width: 5% | header: | align: center | lock: true]]
    [[edit | table: form | path: /orders]]
    [[delete | table: form]]
    [[restore | table: form]]
    [[wipe | table: form]]
[[table_end]]

Где:

  • table | name: form и column table: form должны быть одинаковыми
  • name — название поля, которое нужно вывести. Если указать поле, которое существует в объекте, то можно не указывать его в PHP методе PrintDataTable. Но название можно задать любое (пример в описании метода PrintDataTable)
  • width — ширина поля, как правило указывается в процентах
  • header — заголовок колонки таблицы. По умолчанию берется от названия поля, но можно переопределить его, задав любое название
  • type — тип поля таблицы. Используется для вывода ссылок на объекты
  • path — путь для открытия объекта. Используется вместе с параметром type. При указании пути не надо передать id нужного объекте. ID подставляется в ядре и передается через PHP метод PrintDataTable
  • tags — для указания тегов для колонки
  • params — используется для указания параметром колонки
  • блок кнопок — отвечает за вывод управляющих кнопок в конце таблицы (редактирование объекта, удаление, восстановление, стирание). Если убрать какой-то из элементов, то кнопка пропадет в таблице. Также на доступность кнопок влияет уровень доступа пользователя к Объекту.
    [[edit | table: form | path: /orders]]
    [[delete | table: form]] 
    [[restore | table: form]] 
    [[wipe | table: form]]

    Вывод:

В сценарии PHP объявить вывод таблицы, первый параметр form = Названию таблицы в шаблоне (name: form)

$this->printDataTable("form",
    [
        "number" => ["id", "name" => "number", "owner" => "owner.id"],
        "owner" => ["id" => "owner.id", "date", "name" => "owner.name"],
        "total" => function($obj)
        {
            return String::money($obj->total);
        },
        "profit"=> function($obj) { return String::money($obj->profit); },
        "organization" => "organization.name",
        "edit" => ["id", "owner" => "owner"]
    ], [‘date’, DESC]);

Метод printDataTable() используется для вывода таблицы в формах списка и выбора.

  • Первым параметр — название таблицы (из шаблона) для которой будет вывод данных
  • Вторым параметром  — идет массив полей
  • Третий параметр — сортировка данных в формате массива: название поля и тип сортировки.

Вывод комбинированного поля в таблице

Например, выведем в списке «Счетов» в поле «Контрагент» комбинированное значение: «Имя контрагента» и «Город контрагента».

PHP-сценарий:

"owner" => function($obj) {
    return $obj->owner->name . ' ' . $obj->owner->city;
}

Где:

  • owner — название поля из шаблона (column | name: company)
  • $obj — ссылка на объект модуля, из которого выводятся данные

Шаблон:

[[column | table: form | name: owner | width: 30%]]

Также можно задать виртуальное комбинирование поле, которое не существует в структуре Объекта.

PHP-сценарий:

"companyData" => function($obj) {
    return $obj->owner->name . ' ' . $obj->owner->region->name . ' Статус:  ' . $obj->owner->status->name;
}

Шаблон:

[[column | table: form | name: companyData]]

Где:

  • companyData — название поля в шаблоне. Такого поля физически нет в модуле “Счета”. Название данного поля может быть любое.

Вывод в поле ссылки на объект (URL)

Для вывода ссылок необходимо передать массив данных в формате «ключ» => «значение», где:

  • Ключ — название переменной из шаблона
  • Значение — название поля из объекта.

Если названия ключа и значения совпадают, то ключ можно опустить.

Пример: Вывод ссылки на поле номер счета

PHP-сценарий:

'number' => ['id', 'name' => 'number']

Где:

  • number — название поля из шаблона
  • id — ключ опущен, так как он совпадает со значением. Необходимо передать значение id счета. подставится в поле path. В итоге ссылка получится /orders/2
  • name — зарезервированный ключ в системе, указывает на то значение, которое будет вставлено в таблицу на выводе
  • number — название поля, значение которого будет вставлено в шаблон.

Шаблон:

[[column | table: form | name: number | type: link | path: /orders | width: 30%]]

Обязательно использование type: link при передаче массива из PHP и указание path (пути). 

В результате Система выведет в столбце number ссылку на счет c номером «8», с id счета «10»:

<a href="/order/10">8</a>

 

Пример: Вывод ссылки на «Контрагента» в списке «Счетов»

PHP-сценарий:

"owner" => ["id" => "owner.id", "name" => "owner.name"]

Где:

  • id — ключ для id объекта
  • owner.id — id из поля owner (Контрагент). Так как в данной задаче нужна ссылка на контрагента, то ее  передаем. В итоге получится ссылка: /companies/44
  • name — зарезервированный ключ в системе, указывает на то значение, которое будет вставлено в таблицу на выводе
  • owner.name — название «Контрагента»

Шаблон:

[[column | table: form | name: owner | width: 35% | type: link | path: /companies]]

Обязательно использование type: link при передаче массива из PHP и указание path (пути). 

Результат:

<td leftnowrap="" lock="0" link-click-td="/companies/1/" row-name="owner">
     <a nowrap="" href="/companies/1/">РосБизнесСофт CRM</a>
</td>

Использование анононимных функций

Для любого ключа поля также можно задать анонимную функцию.

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

PHP-сценарий:

"total" => function($obj)
{
     return Text::money($obj->total);
},

Шаблон:

[[column | table: form | name: total | width: 8% | tags: nowrap right]]

Результат:

<td row-name="total" nowrap="" right="" lock="0">54'807.00</td>