Битрикс24 API Свои действия для списка элементов

20.10.2020

В битрикс24 создали единый интерфейс вывода таблиц - списков для разных разделов. Например те же списки и бизнес-процессы, или списки сделок, контактов ,компаний. Все выводится компонентом main.ui.grid, Просто надо подготовить ему данные. Например, чтобы добавить кнопку для работы с несколькими элементами, достаточно найти в компоненте, вызывающем main.ui.grid, какой массив отправляется в параметр ACTION_PANEL, и добавить туда свою кнопку, в виде массива:

$arResult["ACTION_PANEL"]["GROUPS"][0]["ITEMS"][]= array(
          "TYPE"=>           "BUTTON",
          "ID"=>           "grid_имя кнопки _button",
          "NAME"=>          "",
          "CLASS"=>           "icon имя кнопки ",
          "TEXT"=>          "имя кнопки ",
          "TITLE"=>          "описание действия кнопки",
          "ONCHANGE"=>
          array(            
            array(
              "ACTION"=> "CALLBACK",            
              "DATA"=>
              array(               
                array(
                  "JS"=>  "Grid. имя кнопки Selected()"
                )
              )
             
            )
     )
);
Шаблон компонента main.ui.grid потребуется скопировать в ваш шаблон сайта ,чтобы в Script.js добавить вашу функцию "Grid.имя кнопки Selected()". Эта функция будет вызывать аяксовый обработчик, который вы разместите в классе в файле Ajax.php компонента вашего списка.
BX.Lists.ajax({
			method: 'POST',
			dataType: 'json',
			url: BX.Lists.addToLinkParam(this.ajaxUrl, 'action', 'имя вашего обработчика'),
			data: {				
				iblockTypeId: this.iblockTypeId,
				elementId: this.elementId,
				iblockId: this.iblockId,
				socnetGroupId: this.socnetGroupId,
				sectionId: this.sectionId,
				action: "имя кнопки"
			},
			onsuccess: BX.delegate(function (result)
			{
				if(result.status == 'success')
				{
					BX.Lists.showModalWithStatusAction({
						status: 'success',
						message: result.message
					});
					setTimeout(BX.delegate(function() {
						document.location.href = this.urlTabBp
					}, this), 1000);
				}
				else
				{
					result.errors = result.errors || [{}];
					BX.Lists.showModalWithStatusAction({
						status: 'error',
						message: result.errors.pop().message
					})
				}
			}, this)
		});

Возврат к списку


Материалы по теме: