Система amoCRM – удобная web программа для анализа продаж, доступная в режиме online из любой точки мира! И пришлось мне однажды писать виджет для данного продукта. Отмечу, что пишется виджет очень легко, если конечно вы хорошо владеете JavaScript, ибо на нем в пишется. Для примера возьмем вот такую задачу, которую недавно пришлось делать: Скрыть элемент от всех менеджеров кроме администратора системы.
Сперва читаем документацию, https://developers.amocrm.ru/widgets/ , регистрируем,получаем ключ и тд. Скачиваем пример виджета. Структура папок и файлов очень простая:
Открываем manifest.json, тут указываем наш ключ (secret_key) , пишем название, версию, на какой странице должен работать виджет (locations). Нет смысла описывать то что уже в документации хорошо написано.
Для примера спрячем кнопку "Открепить" для всех менеджеров кроме админа.
Сперва читаем документацию, https://developers.amocrm.ru/widgets/ , регистрируем,получаем ключ и тд. Скачиваем пример виджета. Структура папок и файлов очень простая:
Открываем manifest.json, тут указываем наш ключ (secret_key) , пишем название, версию, на какой странице должен работать виджет (locations). Нет смысла описывать то что уже в документации хорошо написано.
Для примера спрячем кнопку "Открепить" для всех менеджеров кроме админа.
Пишем данный код:
define(['jquery'], function($){ var CustomWidget = function () { var self = this; this.callbacks = { render: function(){ console.log('render'); return true; }, init: function(){ console.log('init2'); return true; }, bind_actions: function(){ console.log('bind_actions 30'); //у админа ID = 460839 var userid = $("input[name$='contact\\[MAIN_USER_ID\\]']").val(); if ( userid != 460839){ //Нопка имеет класс js-linked-entity-unlink // можем спрятать, можем удалить (remove()) $('.js-linked-entity-unlink').css('opacity',0).hide(); } return true; }, settings: function(){ return true; }, onSave: function(){ alert('click'); return true; }, destroy: function(){ }, contacts: { //select contacts in list and clicked on widget name selected: function(){ console.log('contacts'); } }, leads: { //select leads in list and clicked on widget name selected: function(){ console.log('leads'); } }, tasks: { //select taks in list and clicked on widget name selected: function(){ console.log('tasks'); } } }; return this; }; return CustomWidget; });
Тут все ясно. Простая работа с JQuery.
И еще, каждый раз увеличиваем версию в manifest.json перед загрузкой виджета. Отмечу, что код виджета не всегда сразу обновляется что очень раздражает.
Спасибо за статью, но что-то у меня не пашет.
ОтветитьУдалитьИспользовал шаблон из документации.
Секретный ключ в манифесте поставил.
Код сделал равным названию интеграции.
Загружаю - результата ноль. Пробовал другие примеры виджетов, тоже не работают. Что я мог сделать не так? В разделе "Собственные интеграции" пишет, что виджет установлен.
Хотелось бы еще узнать как работать с полями сделки, например..
ОтветитьУдалить