Пользовательский компонент *Кнопка* ----------------------------------- Рассмотрим пример создания пользовательского компонента в виде кнопки, надпись которой будет получена из значения справочника, а по клику по кнопке будет меняться значение другого компонента на форме. В HTML код следует вводить код, отвечающий за отображение копмонента на форме. В нашем случае HTML код будет содержать следующее: .. code-block:: xml Здесь указана кнопка со стилями ``greenButton ui-btn``, которые описываются в блоке ```` В JAVASCRIPT код вводится код, отвечающий за логику компонента. В нашем примере это будет: .. code-block:: js // находим кнопку с innerId make_deal var button = jQuery(view.container).children("[innerId='make_deal']"); var locale = AS.OPTIONS.locale; //переменная, значение которой будет присвоено компоненту crm_form_lead_deals_status, по клику по кнопке var statusValue; // из кэша справочников получаем значения справочника Статусы с кодом crm_dict_leadStatus и устанавливаем надпись кнопки // по значению поля crm_dict_leadStatus_end = 1 model.playerModel.dictionaryCache.getDictionary('crm_dict_leadStatus', AS.OPTIONS.locale, function(dictionary) { if(dictionary !== null) { dictionary.forEach(function(data, index){ //финальный статус в справочнике статусов if (data['crm_dict_leadStatus_end'] === '1') { statusValue = data['crm_dict_leadStatus_value']; button.text(data['crm_dict_leadStatus_buttonName']); } }); } }); //по клику по кнопку устанавливаем значение компонента crm_form_lead_deals_status button.click(function(){ model.playerModel.getModelWithId('crm_form_lead_deals_status').setValue(statusValue + ''); }); Также необходимо отметить чекбокс *Использовать в формах*. .. figure:: ../../_static/img/forms/cmp/deal_button.png :scale: 50% Пользовательский компонент crm_component_deal_button Дальше этот компонент можно использовать на форме. Для этого создадим форму с компонентом выпадающий список с ид crm_form_lead_deals_status и значениями справочника Статусы лида. Справочник *Статусы лида* имеет структуру: .. figure:: ../../_static/img/forms/cmp/dict_desc.png :scale: 100% Справочник *Статусы лида* Значения справочника *Статусы лида*: .. figure:: ../../_static/img/forms/cmp/dict_values.png :scale: 50% Также добавим пользовательский компонент и укажем в диалоге настроек компонент crm_component_deal_button. .. figure:: ../../_static/img/forms/cmp/form_prop.png :scale: 50% Пользовательский компонент crm_component_deal_button на форме Переключим конструктор в режим редактирования, будет отображена кнопка с надписью *Конвертировать в сделку* .. figure:: ../../_static/img/forms/cmp/form_edit.png :scale: 50% Форма с пользовательским копмонентом crm_component_deal_button Кликом по кнопке *Конвертировать в сделку* выпадающий список примет значение *В сделку* .. figure:: ../../_static/img/forms/cmp/form_after_click.png :scale: 50% Форма после клика по кнопке *Конвертировать в сделку*