линия

Главная

вторник, 7 февраля 2017 г.

amoCRM пишем простой виджет

Система amoCRM – удобная web программа для анализа продаж, доступная в режиме online из любой точки мира! И пришлось мне однажды писать виджет для данного продукта. Отмечу, что пишется виджет очень легко, если конечно вы хорошо владеете JavaScript, ибо на нем в пишется. Для примера возьмем вот такую задачу, которую недавно пришлось делать: Скрыть элемент от всех менеджеров кроме администратора системы.


Сперва читаем документацию, 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 перед загрузкой виджета. Отмечу, что код виджета не всегда сразу обновляется что очень раздражает.


2 комментария:

  1. Спасибо за статью, но что-то у меня не пашет.
    Использовал шаблон из документации.
    Секретный ключ в манифесте поставил.
    Код сделал равным названию интеграции.
    Загружаю - результата ноль. Пробовал другие примеры виджетов, тоже не работают. Что я мог сделать не так? В разделе "Собственные интеграции" пишет, что виджет установлен.

    ОтветитьУдалить
  2. Хотелось бы еще узнать как работать с полями сделки, например..

    ОтветитьУдалить