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



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