Дата последнего изменения: 21.12.2023
Зарегистрируйте тип поля.
Создайте пользовательское поле вручную, либо через API. Например, для Лидов CRM используется crm.lead.userfield.add.
Когда открывается форма, допустим, карточка лида в CRM, в которой выводится поле нашего пользовательского типа, то в карточке, фактически, выводится фрейм с приложением. В этот фрейм передаются все данные о поле, значении и режиме работы. Для приложения все выглядит так, как если бы оно было открыто в месте встройки с идентификатором USERFIELD_TYPE.
Вот пример POST-данных, пришедших в фрейм:
Array ( [DOMAIN] => sometestportal.bitrix24.com [PROTOCOL] => 1 [LANG] => ru [APP_SID] => 14d2c95b446cb049375e4a045dc2a177 [AUTH_ID] => xomlj71xez3p4q8bqsb5icqjcgjetf0p [AUTH_EXPIRES] => 3600 [REFRESH_ID] => 51556ja184k22cqot442w0lp1quxg0p2 [member_id] => 6f61b5484aff6f8aa3fef768153d0226 [status] => L [PLACEMENT] => USERFIELD_TYPE [PLACEMENT_OPTIONS] => {"MODE":"view","ENTITY_ID":"CRM_LEAD","FIELD_NAME":"UF_CRM_1511508634350","ENTITY_VALUE_ID":"2","VALUE":["\u0435\u0445\u0430\u043b \u0433\u0440\u0435\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u043a\u0443","\u0432\u0438\u0434\u0438\u0442 \u0433\u0440\u0435\u043a\u0430 \u0432 \u0440\u0435\u043a\u0435 \u0440\u0430\u043a","c\u0443\u043d\u0443\u043b \u0433\u0440\u0435\u043a\u0430 \u0440\u0443\u043a\u0443 \u0432 \u0440\u0435\u043a\u0443","\u0440\u0430\u043a \u0437\u0430 \u0440\u0443\u043a\u0443 \u0433\u0440\u0435\u043a\u0430 \u0446\u0430\u043f"],"MULTIPLE":"Y","MANDATORY":"N","XML_ID":null} )
Детально разберём json-строку PLACEMENT_OPTIONS:
Array ( [MODE] => view [ENTITY_ID] => CRM_LEAD [FIELD_NAME] => UF_CRM_1511508634350 [ENTITY_VALUE_ID] => 2 [VALUE] => Array ( [0] => ехал грека через реку [1] => видит грека в реке рак [2] => cунул грека руку в реку [3] => рак за руку грека цап ) [MULTIPLE] => Y [MANDATORY] => N [XML_ID] => )
Ключи:
|
Для поля также доступен js-интерфейс получения и установки значения:
Вызов метода:
BX24.placement.call('getValue', function(value){console.log(value)});
Результат выполнения метода:
["ехал грека через реку", "видит грека в реке рак", "cунул грека руку в реку", "рак за руку греку цап"]
Вызов метода:
BX24.placement.call('setValue', ["ехал грека через реку", "видит грека в реке рак", "cунул грека руку в реку", "рак за руку греку цап"], function(){console.log('value set')});
Результат выполнения метода:
value set
Нужно учитывать, что js-интерфейс служит исключительно для передачи данных в форму. Пока форма тем или иным способом не будет сохранена пользователем, значение в базу не попадет.
Демо-приложение, которое регистрирует обычное текстовое поле со своим интерфейсом ввода и вывода. Скачать