Для работы с аккаунтом на клиенте доступен глобальный объект APP, через который можно получить некоторые данные в зависимости от интерфейса, в котором находится пользователь.
У объекта APP есть побратим AMOCRM, он признан устаревшим.
APP.getBaseEntity()
Метод вернет строку с указанием сущности, в которой мы сейчас находимся (например, leads для сделок или customers для покупателей и тд).
APP.isCard()
Метод вернет булевое значение (true/false), находимся ли мы в данный момент в карточке.
APP.getWidgetsArea()
Метод вернет код текущей страницы.
Area | Описание |
---|---|
dashboard | Рабочий стол |
leads | Список сделок |
leads-trash | Список удаленных сделок |
leads-pipeline | Воронка сделок |
customers | Список покупателей |
contacts | Список контактов |
customers-pipeline | Воронка покупателей |
customers-trash | Список удаленных покупателей |
contacts-trash | Список удаленных контактов |
companies | Список компаний |
Страницы раздела "Почта" | |
todo | Список задач |
todo-trash | Список удаленных задач |
todo-line | Задачи в формате канбана |
todo-calendar | Задачи в формате календаря |
events | Страница "Список событий" раздела "Аналитика" |
authlog | Страница "Лог авторизаций" раздела "Настройки" |
stats | Страницы "Анализ продаж", "Сводный отчет", "Отчет по покупателям" и "Цели" раздела "Аналитика" |
stats-human | Страница "Отчет по сотрудникам" раздела "Аналитика" |
statsCalls | Страница "Звонки" раздела "Аналитика" |
widget-page:{{code}} | Страница виджета, добавляемая в левое меню |
settings | Страницы "Профиль", "Счет и оплата" и "Общие настройки" раздела "Настройки" |
advanced-settings:{{code}} | Расширенные настройки виджета |
widgetsSettings | Страница "Интеграции" раздела "Настройки" |
settings-users | Страница "Пользователи" раздела "Настройки" |
settings-communications | Страница "Коммуникации" раздела "Настройки" |
catalogs | Страница каталога |
leads_card | Карточка сделки |
contacts_card | Карточка контакта |
companies_card | Карточка компании |
customers_card | Карточка покупателя |
У метода есть побратим APP.getV3WidgetsArea(), он признан устаревшим.
APP.lang_id
В свойстве хранится буквенный код языка, установленного в профиле пользователя.
Код | Описание |
---|---|
ru | Русский язык |
en | Английский язык |
es | Испанский язык |
pt | Португальский язык |
APP.constant(key, [value])
Метод вернет значение константы, переданной в key (если значение value не было передано) или установит в значение константы value. Обратите внимание, требования к публичным интеграциям запрещают переназначать системные константы.
Key | Описание |
---|---|
user | информация по текущему пользователю |
user_rights | данные о правах текущего пользователя |
account | информация по аккаунту |
managers | пользователи аккаунта |
groups | группы аккаунта |
task_types | собственные типы задач |
Системные константы, не входящие в список выше могут измениться или вообще исчезнуть.
Основная часть системы реализована на фреймворке Backbone.js, поэтому для работы с переменными окружения можно почитать документацию данного фреймворка.
В любом интерфейсе системы (кроме карточек) есть объект APP.data.current_view, который хранит корневой DOM-элемент текущего интерфейса, в котором находится пользователь (APP.data.current_view.$el).
Если пользователь находится в любом интерфейсе списков (сделки, контакты/компании, покупатели, задачи) в объекте APP есть свойство APP.data.current_list это коллекция текущих элементов списка с данными из выведенных колонок. Среди этих данных всегда есть id и name (название сущности), также свойство checked (отвечает за то выделен элемент в списке или нет).
Если пользователь находится в любой карточке, то можно обращаться к свойству APP.data.current_card, через него можно получить данные по текущей карточке, в которой находится пользователь. При доступе к этому свойствунужно обязательно проверять его наличие, так как если пользователь находится не в карточке, то в свойсте будет false и при прямом доступе к какому-то дочернему значению вы получите ошибку.
Через APP.data.current_card можно получить следующие данные:
При выкатке обновлений в amoCRM есть механизм обновления страницы, если у вашего виджета есть потребность временно остановить данное поведение, например, для телефонии такое нужно, когда пользователь находится в звонке, чтобы не прервать таким обновлением звонок пользователю, то можно воспользоваться следующим методом:
APP.sdk.setCallingStatus(true/false);
Если виджету необходимо проверить находится ли пользователь аккаунта онлайн, то можно воспользоваться методом showUserStatus:
APP.sdk.showUserStatus();
В ответ метод возвращает объект вида:
{
"281868": {
"id": "281868",
"online": true
},
"3732339": {
"id": "3732339",
"online": false
},
"5789550": {
"id": "5789550",
"online": false
}
}