Глава 3. Состав типовой конфигурации

Ревизия VCS: 8044

Дата сборки документа: 2017.04.05 14:15:52

Содержание

Встроенные объекты конфигурации
Группы
Счетчики
Счетчик каталога товаров и услуг
Шаблоны номеров
Номер товара в каталоге
Формы
Маркетинговое мероприятие
Лид
Сделка
Аккаунт
Контакт
% комиссии лидогенерации
% комиссия продаж
Тема сотрудничества
Товар (услуга)
Формы шаблонов документов
Договор поставки (единовременная оплата)
Договор поставки (оплата частями)
Акт приема-передачи товара
Коммерческое предложение
Счет-фактура
Ответственный за сделки
План продаж
Нормативы продолжительности статусов сделки
Пользовательские компоненты
crm_component_canban
crm_component_canban_deal
crm_component_deals_dashboard
crm_component_deals_os_dashboard
crm_component_deals_productivity
crm_component_deal_button
crm_component_funnel
crm_component_funnel_deal
crm_component_group_button
crm_component_group_button_deal
crm_component_leads_dashboard
crm_component_notifications
crm_component_registry_chooser
crm_component_social_links_accounts
crm_component_social_links_contacts
Реестры
Маркетинговые мероприятия
Лиды
Сделки
Аккаунты
Контакты
% комиссии лидогенерации
% комиссия продаж
Темы сотрудничества
Каталог товаров и услуг
Реестры шаблонов документов
Договоры поставки (единовременная оплата)
Договоры поставки (оплата частями)
Акты приема-передачи товара
Коммерческое предложение
Счет-фактуры
Ответственный за сделки
План продаж
Нормативы продолжительности статусов сделки
Группы реестров
Каталог товаров и услуг
Шаблоны документов
Настройки маркетинга и управления продаж
Справочники
Статусы лида
Статусы сделки
Статусы аккаунта
Статусы контакта
Типы мероприятий
Типы мероприятий
Телефон
Адрес
Почта
Социальные сети
Действия напоминаний
Города Казахстана
Условия оплаты
Способы отправления
Месяцы
Создание документов
Запись аккаунта
Запись контакта
Запись лида
Запись мероприятия
Запись сделки
Шаблоны документов
Акт приема-передачи
Договор поставки (единовременная оплата)
Договор поставки (оплата частями)
Коммерческое предложение
Внешние модули
Маркетинг
Управление продажами
Управление продажами (для ОП)
Пользовательские компоненты на форме
Модифицированный компонент выбора записи реестра
Сопоставление полей реестров
Кнопка создания новой записи реестра «Сделка»
Динамическая таблица активностей
Пользовательский компонент связи из интерфейса
Динамическая таблица плана продаж
Внешние модули-компоненты
Напоминания
Дашборды (аналитика)
Используемые шаблоны индексов
Боковая панель фильтрации
Управление маркетингом
Управление продажами
Продуктивность
Продуктивность (сотрудники)

Для обеспечения базового учета основных сущностей конфигурация Synergy CRM содержит набор предустановленных сущностей и внешний модуль «Маркетинг».

Встроенные объекты конфигурации

Конфигурация Synergy CRM включает в себя преднастроенные элементы:

Группы

Группы пользователей с такими кодами:

  • Все маркетологи - crm_groups_all_marketing_specialists:

    • Маркетологи-менеджеры - crm_groups_marketing_managers:

      • «Маркетологи-менеджеры по Алматы» - crm_groups_marketing_managers_Almaty

      • «Маркетологи-менеджеры по Астане» - crm_groups_marketing_managers_Astana

    • Маркетологи-специалисты - crm_groups_marketing_specialists:

      • «Маркетологи-специалисты по Алматы» - crm_groups_marketing_specialists_Almaty

      • «Маркетологи-специалисты по Астане» - crm_groups_marketing_specialists_Astana

    • «Руководитель отдела маркетинга» - crm_groups_marketing_head

  • Все специалисты по продажам - crm_groups_all_sales_specialists:

    • Менеджеры по продажам - crm_groups_sales_managers:

      • «Менеджеры по продажам Алматы» - crm_groups_sales_managers_Almaty

      • «Менеджеры по продажам Астана» - crm_groups_sales_managers_Astana

    • Специалисты по продажам - crm_groups_sales_specialists:

      • «Специалисты по продажам Алматы» - crm_groups_sales_specialists_Almaty

      • «Специалисты по продажам Астана» - crm_groups_sales_specialists_Astana

    • «Руководитель отдела продаж» - crm_groups_sales_head

  • «Центральный аппарат» - crm_groups_head

Счетчики

Счетчик каталога товаров и услуг

Свойства счетчика:

Свойство Значение

Код

crm_counter_catalog

Начальное значение

1

Следующее значение

1

Период сброса

Никогда

Шаблоны номеров

Номер товара в каталоге

Свойства шаблона номера:

Свойство Значение

Название

Номер товара в каталоге

Формула

{crm_counter_catalog}

Код

crm_number_catalog

Формы

Маркетинговое мероприятие

Код формы: crm_form_event.

Форма содержит следующие компоненты:

Поле Тип компонента Имя компонента

Тип мероприятия

выпадающий список (справочник crm_dict_eventType)

crm_form_event_main_type

Наименование мероприятия

однострочное поле

crm_form_event_main_name

Стоимость

числовое поле

crm_form_event_main_cost

Мероприятие

ссылка на портфель / проект

crm_form_event_main_event

Комментарий

многострочное поле

crm_form_event_main_comment

Целевой отклик

числовое поле

crm_form_event_main_target_response

Текущий отклик

числовое поле

crm_form_event_main_current_response

Оценка эффективности

числовое поле

crm_form_event_main_rating

Ответственный менеджер

выбор пользователя

crm_form_event_responsibleManager_responsible

Владелец

выбор подразделения

crm_owner

Для кого

выбор подразделения

crm_has_access

Доступно

выбор подразделения

crm_all_accessible

Поле «Владелец» заполняется автоматически подразделением создающего пользователя. Поле обязательно для заполнения, мультивыбор недоступен.

В поле «Для кого» доступен мультивыбор подразделений.

Поле «Доступно» автоматически заполняется:

  1. подразделением, указанным в поле «Владелец», и всеми его родительскими подразделеними, включая корневое подразделение оргструктуры;

  2. подразделениями, указанными в поле «Для кого», и всеми дочерними подразделениями каждого из них.

Поле «Текущий отклик»:

  • Флаг «Заблокировать от изменений пользователем» включен.

  • Значение поля - количество всех лидов, связанных с данным мероприятием.

  • Если для данного мероприятия не имеется лидов, поле содержит значение 0.

  • При добавлении, изменении или удалении лида, связанного с данным мероприятием, значение поля «Текущий отклик» обновляется в режиме реального времени.

Поле «Оценка эффективности»:

  • Флаг «Заблокировать от изменений пользователем» включен.

  • Флаг «Ограничение десятичных знаков» включен. Значение поля - 3.

  • Значение поля рассчитывается автоматически по формуле:

    %значение_поля_"Текущий_отклик"% / %значение_поля_"Целевой_отклик"%

  • Поле «Оценка эффективности» не может быть пустым.

  • Поле «Оценка эффективности» заполнено значением 0 по умолчанию, а также в случае:

    • поле «Целевой отклик» не заполнено либо содержит значение 0

    • поле «Текущий отклик» содержит значение 0

  • При изменении значений полей «Текущий отклик» и «Целевой отклик» значение поля «Оценка эффективности» пересчитывается в режиме реального времени.

Лид

Код формы: crm_form_lead.

Форма содержит следующие компоненты:

Поле Тип компонента Имя компонента

Мероприятие

ссылка на реестр «Маркетингоое мероприятие»

crm_form_lead_main_action

Источник лида

ссылка на реестр «Контакт»

crm_form_lead_main_leadSource

Сделка

ссылка на реестр «Сделка»

crm_form_lead_main_deal

Контакт

пользовательский компонент на реестр «Контакт»

crm_form_lead_main_contact

Связь с контактом из интерфейса

пользовательский компонент функции связи с контактом

crm_form_lead_main_contactConnection

Аккаунт

пользовательский компонент на реестр «Аккаунт»

crm_form_lead_main_account

Связь с контактом из интерфейса

пользовательский компонент функции связи с аккаунтом

crm_form_lead_main_accountConnection

Наименование аккаунта

однострочное поле

crm_form_lead_main_account_name

Сотрудничество

динамическая таблица

crm_form_lead_deals

Тема сотрудничества

ссылка на реестр «Темы сотрудничества»

crm_form_lead_deals_theme

Потенциальный бюджет

числовое поле

crm_form_lead_deals_budget

Статус

выпадающий список (справочник «crm_dict_dealStatus»)

crm_form_lead_deals_status

%кнопка_создания_сделки%

пользовательский компонент

crm_form_lead_deals_newDeal

Ответственный менеджер

выбор пользователя

crm_form_lead_responsibleManager_responsible

Активность

пользовательская динамическая таблица

crm_form_lead_activity_table

Пиктограмма типа активности

изображение (из справочника «crm_dict_activityType»)

crm_form_lead_activity_icon

Тип активности

выпадающий список (справочника «crm_dict_activityType»)

crm_form_lead_activity_type

Комментарий

однострочное поле

crm_form_lead_activity_comment

Дата

дата

crm_form_lead_activity_date

Владелец

выбор подразделения

crm_owner

Доступно

выбор подразделения

crm_all_accessible

Поле «Владелец» заполняется автоматически подразделением создающего пользователя. Поле обязательно для заполнения, мультивыбор недоступен.

Поле «Доступно» автоматически заполняется подразделением, указанным в поле «Владелец», и всеми его родительскими подразделеними, включая корневое подразделение оргструктуры. Доступен мультивыбор подразделений, поле скрыто.

Поле «Сделка»:

  • Флаг «Заблокировать от изменений пользователем» включен.

  • По умолчанию поле пустое.

%кнопка_создания_сделки%:

  • Кнопка не отображается, если в выпадающем списке «Статус» выбрана запись справочника crm_dict_leadStatus, у которой crm_dict_leadStatus_end=1.

Поле «Пиктограмма типа активности»:

  • текущее изображение зависит от выбранного значения в выпадающем списке «Тип активности» согласно полю crm_dict_activityType_icon справочника crm_dict_activityType.

Поле «Дата»:

  • Флаг «Заполнять текущей датой/временем» включен.

Поле «Наимменованеи аккаунта»:

  • Компонент является скрытым.

  • Компонент может содержать пустое значение.

  • При создании либо выборе аккаунта в модифицированном пользовательском компоненте «Аккаунт» (crm_form_lead_main_account) новый компонент заполняется значением соответствующего поля «Наименование».

  • При изменении значения аккаунта обновляется и значение нового компонента.

  • При создании записи реестра «Сделка» путем смены статуса или нажатием на кнопку поле crm_form_deal_responsibleManager_responsible по умолчанию заполняется пользователем, указанным в первой записи реестра «Ответственный за сделки».

Сделка

Код формы: crm_form_deal.

Форма содержит следующие компоненты:

Поле Тип компонента Имя компонента

Лид

ссылка на реестр «Лид»

crm_form_deal_main1_lead

Аккаунт

пользовательский компонент на реестр «Аккаунты»

crm_form_deal_main_account

Контакты аккаунта

пользовательский компонент функции связи с аккаунтом

crm_form_deal_main_accountConnection

Контакт

пользовательский компонент на реестр «Контакты»

crm_form_deal_main_contact

Контакты контакта

пользовательский компонент функции связи с контактом

crm_form_deal_main_contactConnection

Тема

ссылка на реестр «Темы сотрудничества»

crm_form_deal_main2_theme

Описание

многострочное поле

crm_form_deal_main2_info

Заказ

динамическая таблица

crm_form_deal_order

однострочное поле

crm_form_deal_order_number

Наименование товара

ссылка на реестр «Каталог товаров и услуг»

crm_form_deal_order_orderList

Ед.изм.

однострочное поле

crm_form_deal_order_unit

Количество

числовое поле

crm_form_deal_order_amount

Цена за ед.

числовое поле

crm_form_deal_order_price

Сумма, тенге

числовое поле

crm_form_deal_order_total

Бюджет

числовое поле

crm_form_deal_main3_budget

Статус

выпадающий список (справочник «crm_dict_dealStatus»)

crm_form_deal_main3_status

Причина отказа

многострочное поле

crm_form_deal_main3_rejection

Задачи

динамическая таблица

crm_form_deal_tasks

Проект

ссылка на проект

crm_form_deal_tasks_project

Документы

динамическая таблица

crm_form_deal_files

Файл

файл

crm_form_deal_files_file

Ответственный менеджер

выбор пользователя

crm_form_deal_responsibleManager_responsible

Владелец

выбор подразделения

crm_owner

Доступно

выбор подразделения

crm_all_accessible

Активность

пользовательская динамическая таблица

crm_form_deal_activity_table

Пиктограмма типа активности

изображение (из справочника «crm_dict_activityType»)

crm_form_deal_activity_icon

Тип активности

выпадающий список (справочника «crm_dict_activityType»)

crm_form_deal_activity_type

Комментарий

однострочное поле

crm_form_deal_activity_comment

Дата

дата

crm_form_deal_activity_date

Предыдущий статус

выпадающий список (справочник «crm_dict_dealStatus»)

crm_form_deal_previous_status

Время нахождения в статусе

числовое поле

crm_form_deal_previous_status_duration

Просроченность

числовое поле

crm_form_deal_expired

Переход в негативный статус

числовое поле

crm_form_deal_refused

Год

числовое поле

crm_form_deal_order_sales_year

Месяц

выпадающий список (справочник «crm_dict_months»)

crm_form_deal_order_sales_month

Отделение

компонент выбора подразделений

crm_form_deal_sales_pk1

Конечный положительный статус

числовое поле

crm_form_deal_end

isUser

выбор вариантов

isUser

Поле «Лид»:

  • Флаг «Заблокировать от изменений пользователем» включен.

Поле «Бюджет»:

  • Флаг «Заблокировать от изменений пользователем» включен.

  • Значение поля - сумма значений всех полей «Сумма».

Поле «Причина отказа»:

  • Поле отображается только в случае, если поле «Статус» имеет значение «Отказ».

Поле «Пиктограмма типа активности»:

  • текущее изображение зависит от выбранного значения в выпадающем списке «Тип активности» согласно полю crm_dict_activityType_icon справочника crm_dict_activityType.

Поле «Дата»:

  • Флаг «Заполнять текущей датой/временем» включен.

Поле «Владелец»:

  • Настроена связь с компонентом «Ответственный менеджер» crm_form_deal_responsibleManager_responsible.

  • Поле скрыто.

Поле «Доступно»:

  • Автоматически заполняется подразделением, указанным в поле «Владелец», и всеми его родительскими подразделеними, включая корневое подразделение оргструктуры.

  • Доступен мультивыбор подразделений, поле скрыто.

Поле «Отделение»:

  • Настроена связь с компонентом «Ответственный менеджер» crm_form_deal_responsibleManager_responsible.

Поле «Предыдущий статус»:

  • Значение поля - предыдущее значение поля «Статус» (crm_form_deal_main3_status).

  • Если статус сделки ранее не изменялся - поле содежит текущее значение поля «Статус» (crm_form_deal_main3_status).

  • Значение компонента актуализируется в 00:00:00.

  • Компонент скрыт.

Поле «Время нахождения в статусе»:

  • Значение поля рассчитывается как:

    дата и время сохранения текущего статуса - дата и время сохранения предыдущего статуса

  • Если статус сделки ранее не изменялся - поле содержит значение «0».

  • Значение компонента актуализируется в 00:00:00.

  • Компонент скрыт.

Поле «Просроченность»:

  • Поле не может быть пустым.

  • Просроченность для сделки со статусом, имеющим значение crm_dict_dealStatus_end=1 или crm_dict_dealStatus_quality=0, не рассчитывается, поле содержит значение «0».

  • Значение поля определется условиями:

    • фактическое время нахождения в статусе больше либо равно значению поля «Продолжительность (в днях)» (crm_form_deal_flow_standart_duration) соответствующего статуса.

    • суммарное время нахождения в неконечных статусах больше либо равно сумме значений полей «Продолжительность (в днях)» (crm_form_deal_flow_standart_duration) всех неконечных статусов.

      Примечание:

      • Для предрасчетов просроченности используется первая запись реестра «Нормативы продолжительности статусов сделки».

      • Если документ по форме имеет несколько значений «Продолжительность (в днях)» для одного статуса, в предрасчет идет последнее.

      • Если для статуса не указано значение «Продолжительность (в днях)» в предрасчет идет значение поля «Продолжительность по умолчанию (в днях)» (crm_form_deal_flow_standard_default_duration).

      • При смене статуса на предыдущий (согласно полю crm_dict_dealStatus_value справочника Статусы сделки) все продолжительности статусов аннулируются до того статуса, который будет являться предыдущим относительного нового.

  • Если выполняется хотя бы одно условие, описанное выше, то поле «Просроченность» содержит значение «1».

  • Если не выполняется ни одно условие, описанное выше, то поле «Просроченность» содержит значение «0».

  • Значение компонента актуализируется в 00:00:00.

  • Компонент скрыт.

Поле «isUser»:

  • Поле имеет два варианта: 1 и 0.

  • По умолчанию выбраны оба варианта.

  • Поле скрыто.

При выборе записи реестра в поле crm_form_deal_order_orderList динамической таблицы crm_form_deal_order заполняются поля в той же строке таблицы:

  • «Единица измерения» crm_form_deal_order_unit - из поля crm_form_item_unit выбранной записи;

  • «Цена за ед.» crm_form_deal_order_price - из поля crm_form_item_price;

  • «Сумма, тенге» crm_form_deal_order_total - значение crm_form_deal_order_price * crm_form_deal_order_amount;

Поле «Бюджет» crm_form_deal_main3_budget равно сумме всех значений поля «Сумма, тенге» crm_form_deal_order_total в таблице.

При конвертации лида в сделку (как с помощью кнопки на форме «Лид», так и при перемещении лида на Канбан-доске) открывается форма «Сделка», где компоненты заполнены автоматически:

  • crm_form_deal_main_account - из компонента crm_form_lead_main_account;

  • crm_form_lead_main_accountConnection;

  • crm_form_deal_main_contact - из компонента crm_form_lead_main_contact;

  • crm_form_deal_main_contactConnection - из компонента crm_form_lead_main_contactConnection.

Поле «Переход в негативный статус»:

  • Поле не может быть пустым.

  • Значение поля определется текущим статусом:

    • Если выпадающий список «Статус сделки» имеет значение записи справочника Статусы сделки crm_dict_dealStatus_quality=0, поле «Переход в негативный статус» содержит значение 1.

    • Если выпадающий список «Статус сделки» имеет значение записи справочника Статусы сделки crm_dict_dealStatus_quality=1, поле «Переход в негативный статус» содержит значение 0.

  • Значение компонента актуализируется в 00:00:00.

  • Компонент скрыт.

Поле «Год»:

  • Поле скрыто.

  • Значение поля - год последнего изменения статуса сделки.

Поле «Месяц»:

  • Поле скрыто.

  • Значение поля - месяц последнего изменения статуса сделки.

Поле «Отделение»:

  • Флаги «Обязательное поле» и «Заполнять департаментом создающего пользователя» включен.

Поле «Конечный положительный статус»:

  • Поле скрыто.

  • Значение поля:

    • 1 - текущий статус сделки имеет значение crm_dict_dealStatus_end=1;

    • 0 - все остальные статусы.

Аккаунт

Код формы: crm_form_account.

Форма содержит следующие компоненты:

Поле Тип компонента Имя компонента

Лид

ссылка на реестр «Лид»

crm_form_account_lead_lead

Логотип

файл

crm_form_account_logo

Наименование

однострочное поле

crm_form_account_main_name

Описание

многострочное поле

crm_form_account_main_info

Вид деятельности

дата

crm_form_account_main_activityCategory

Выручка

числовое поле

crm_form_account_main_revenue

Численность штата

многострочное поле

crm_form_account_main_staffAmount

Статус

выпадающий список (справочник crm_dict_accountStatus)

crm_form_account_main_status

Телефон

динамическая таблица

crm_form_account_phone

Тип номера телефона

выпадающий список (справочник crm_dict_phone)

crm_form_account_phone_phoneCombo

Номер телефона

однострочное поле

crm_form_account_phone_phone

E-mail

динамическая таблица

crm_form_account_email

Тип почтового адреса

выпадающий список (справочник crm_dict_email)

crm_form_account_email_emailCombo

Почтовый адрес

однострочное поле

crm_form_account_email_email

Адрес

динамическая таблица

crm_form_account_address

Тип адреса

выпадающий список (справочник crm_dict_address)

crm_form_account_address_addressCombo

Адрес

многострочное поле

crm_form_account_address_address

Социальные сети

динамическая таблица

crm_form_account_socialNetworks

Тип социальной сети

выпадающий список (справочник crm_dict_socialNetworks)

crm_form_account_socialNetworks_socialNetworksCombo

Социальная сеть

однострочное поле

crm_form_account_socialNetworks_socialNetworks

Материнский аккаунт

ссылка на реестр Аккаунт

crm_form_account_parentAccount_parentAccount

Дочерние аккаунты

динамическая таблица

crm_form_account_childAccount

Аккаунты

ссылка на реестр Аккаунт

crm_form_account_childAccount_account

Ответственный менеджер

выбор пользователя

crm_form_account_responsibleManager_responsible

Владелец

выбор подразделения

crm_owner

Доступно

выбор подразделения

crm_all_accessible

Поле «Владелец» заполняется автоматически подразделением создающего пользователя. Поле обязательно для заполнения, мультивыбор недоступен.

Поле «Доступно» автоматически заполняется подразделением, указанным в поле «Владелец», и всеми его родительскими подразделеними, включая корневое подразделение оргструктуры. Доступен мультивыбор подразделений, поле скрыто.

Контакт

Код формы: crm_form_contact.

Форма содержит следующие компоненты:

Поле Тип компонента Имя компонента

Лид

ссылка на реестр «Лид»

crm_form_contact_lead_lead

Фото

файл

crm_form_contact_photo

Полное имя

однострочное поле

crm_form_contact_main_fullName

Должность

многострочное поле

crm_form_contact_main_position

Дата рождения

дата

crm_form_contact_main_birthDate

Статус

выпадающий список (справочник crm_dict_contactStatus)

crm_form_contact_main_status

Информация

многострочное поле

crm_form_contact_main_info

Телефон

динамическая таблица

crm_form_contact_phone

Тип номера телефона

выпадающий список (справочник crm_dict_phone)

crm_form_contact_phone_phoneCombo

Номер телефона

однострочное поле

crm_form_contact_phone_phone

E-mail

динамическая таблица

crm_form_contact_email

Тип почтового адреса

выпадающий список (справочник crm_dict_email)

crm_form_contact_email_emailCombo

Почтовый адрес

однострочное поле

crm_form_contact_email_email

Адрес

динамическая таблица

crm_form_contact_address

Тип адреса

выпадающий список (справочник crm_dict_address)

crm_form_contact_address_addressCombo

Адрес

многострочное поле

crm_form_contact_address_address

Социальные сети

динамическая таблица

crm_form_contact_socialNetworks

Тип социальной сети

выпадающий список (справочник crm_dict_socialNetworks)

crm_form_contact_socialNetworks_socialNetworksCombo

Социальная сеть

однострочное поле

crm_form_contact_socialNetworks_socialNetworks

Ответственный менеджер

выбор пользователя

crm_form_contact_responsibleManager_responsible

Владелец

выбор подразделения

crm_owner

Доступно

выбор подразделения

crm_all_accessible

Поле «Владелец» заполняется автоматически подразделением создающего пользователя. Поле обязательно для заполнения, мультивыбор недоступен.

Поле «Доступно» автоматически заполняется подразделением, указанным в поле «Владелец», и всеми его родительскими подразделеними, включая корневое подразделение оргструктуры. Доступен мультивыбор подразделений, поле скрыто.

% комиссии лидогенерации

Код формы: crm_form_lead_comission.

Форма содержит следующие компоненты:

Поле Тип компонента Имя компонента

% комссии

динамическая таблица

crm_form_lead_comission_main

Дата начала

дата

crm_form_lead_comission_main_start_date

Дата окончания

дата

crm_form_lead_comission_main_finish_date

% комиссии

числовое поле

crm_form_lead_comission_main_comission

Динамическая таблица «% комиссии»:

  • Форматная строка:

    [Значение ${crm_form_comission_main_deal_comission}% с ${crm_form_lead_comission_main_start_date} по ${crm_form_lead_comission_main_finish_date}]

Поле «Дата начала»:

  • Флаги «Заблокировать от изменений пользователем» и «Заполнять текущей датой/временем» включены.

Поле «Дата окончания»:

  • Флаг «Заблокировать от изменений пользователем» включен.

  • Компонент в последней строке заполняется текущей датой при добавлении новой строки динамической таблицы.

Поле «% комиссии»:

  • Значение поля по умолчанию при создании записи реестра - 5.

% комиссия продаж

Код формы: crm_form_deal_comission.

Форма содержит следующие компоненты:

Поле Тип компонента Имя компонента

% комссии

динамическая таблица

crm_form_deal_comission_main

Дата начала

дата

crm_form_deal_comission_main_start_date

Дата окончания

дата

crm_form_deal_comission_main_finish_date

% комиссии

числовое поле

crm_form_deal_comission_main_comission

Динамическая таблица «% комиссии»:

  • Форматная строка:

    [Значение ${crm_form_comission_main_deal_comission}% с ${crm_form_deal_comission_main_start_date} по ${crm_form_deal_comission_main_finish_date}]

Поле «Дата начала»:

  • Флаги «Заблокировать от изменений пользователем» и «Заполнять текущей датой/временем» включены.

Поле «Дата окончания»:

  • Флаг «Заблокировать от изменений пользователем» включен.

  • Компонент в последней строке заполняется текущей датой при добавлении новой строки динамической таблицы.

Поле «% комиссии»:

  • Значение поля по умолчанию при создании записи реестра - 5.

Тема сотрудничества

Код формы: crm_form_theme.

Форма содержит следующие компоненты:

Поле Тип компонента Имя компонента

Тема сотрудничества

однострочное поле

crm_form_theme_theme

Владелец

выбор подразделения

crm_owner

Для кого

выбор подразделения

crm_has_access

Доступно

выбор подразделения

crm_all_accessible

Поле «Владелец» заполняется автоматически подразделением создающего пользователя. Поле обязательно для заполнения, мультивыбор недоступен.

В поле «Для кого» доступен мультивыбор подразделений.

Поле «Доступно» автоматически заполняется:

  1. подразделением, указанным в поле «Владелец», и всеми его родительскими подразделеними, включая корневое подразделение оргструктуры;

  2. подразделениями, указанными в поле «Для кого», и всеми дочерними подразделениями каждого из них.

  • Доступен мультивыбор подразделений, поле скрыто.

Товар (услуга)

Код формы: crm_form_item.

Форма содержит следующие компоненты:

Поле Тип компонента Имя компонента

ID товара

номер (шаблон номера «Номер товара в каталоге»)

crm_form_item_id

Наименование

однострочное поле

crm_form_item_name

Описание

многострочное поле

crm_form_item_description

Единица измерения

однострочное поле

crm_form_item_unit

Цена

числовое поле

crm_form_item_price

Тема сотрудничества

ссылка на реестр «Темы сотрудничества»

crm_form_item_theme

Владелец

выбор подразделения

crm_owner

Для кого

выбор подразделения

crm_has_access

Доступно

выбор подразделения

crm_all_accessible

Поле «Владелец» заполняется автоматически подразделением создающего пользователя. Поле обязательно для заполнения, мультивыбор недоступен.

В поле «Для кого» доступен мультивыбор подразделений.

Поле «Доступно» автоматически заполняется:

  1. подразделением, указанным в поле «Владелец», и всеми его родительскими подразделеними, включая корневое подразделение оргструктуры;

  2. подразделениями, указанными в поле «Для кого», и всеми дочерними подразделениями каждого из них.

  • Доступен мультивыбор подразделений, поле скрыто.

Формы шаблонов документов

Для всех форм ниже одинаково настроен компонент выбора адресата:

Для выпадающего списка «Источник адреса» настроены следующие значения:

  • Аккаунт - 0

  • Контакт - 1

  • Ручной ввод - 2

При этом:

  • Если в поле choice выбрано значение «Аккаунт», то доступно поле account_link, поле contact_link скрыто.

  • Если в поле choice выбрано значение «Контакт», то доступно поле contact_link, поле account_link скрыто.

  • Если в поле choice выбрано значение «Ручной ввод», то поля account_link и contact_link оба скрыты.

Для компонента «Выбрать аккаунт» настроено сопоставление:

  • crm_form_account_email - crm_form_account_email - EQUAL

Для компонента «Выбрать контакт» настроено сопоставление:

  • crm_form_contact_email - crm_form_contact_email - EQUAL

Таблицы «Адреса аккаунта» и «Адреса контакта» являются служебными и не отображаются пользователю.

Поведение поля choice

Если в поле choice выбрано значение «Аккаунт», то должно быть доступно поле account_link, поле contact_link скрыто.

Если в поле choice выбрано значение «Контакт», то должно быть доступно поле contact_link, поле account_link скрыто.

Если в поле choice выбрано значение «Ручной ввод», то поля account_link и contact_link должны быть скрыты.

Поведение поля email

  1. Для случая, когда заполняется поле account_link, в поле email требуется отображать значение поля crm_form_contact_email.crm_form_contact_email_email. В случае, если таблица crm_form_contact_email для выбранного контакта содержит больше одного элемента, выбирать значение в зависимости от значения поля crm_form_contact_email.crm_form_contact_email_emailCombo по значение с минимальным порядковым номером записи справочника crm_dict_email.

  2. Для случая, когда заполняется поле contact_link, в поле email требуется отображать значение поля crm_form_account_email.crm_form_account_email_email. В случае, если таблица crm_form_account_email для выбранного контакта содержит больше одного элемента, выбирать значение в зависимости от значения поля crm_form_account_email.crm_form_account_email_emailCombo тем же приоритетам, что и для пункта 1.

  3. Для случая, когда в поле choice выбрано значение «Ручной ввод», поле email должно заполняться вручную.

Также для всех форм одинаково настроены поля «Владелец» и «Доступно»:

  • Поле «Владелец» заполняется автоматически подразделением создающего пользователя. Поле обязательно для заполнения, мультивыбор недоступен.

  • Поле «Доступно» автоматически заполняется подразделением, указанным в поле «Владелец», и всеми его родительскими подразделеними, включая корневое подразделение оргструктуры. Доступен мультивыбор подразделений, поле скрыто.

Договор поставки (единовременная оплата)

Код формы: crm_form_contract_delivery_100.

Форма содержит следующие компоненты:

Поле Тип компонента Имя компонента

Номер договора

однострочное поле

crm_form_contract_delivery_100_contract_number

Город

выпадающий список (справочник crm_dict_cities)

crm_form_contract_delivery_100_city_from

Дата договора

выбор даты

crm_form_contract_delivery_100_contract_date

Основание (сделка)

ссылка на реестр «Сделки»

crm_form_contract_delivery_100_deal

Заказчик (аккаунт)

ссылка на реестр «Аккаунты»

crm_form_contract_delivery_100_client_account

Заказчик (контакт)

ссылка на реестр «Контакты»

crm_form_contract_delivery_100_client_client

Основание заказчика

однострочное поле

crm_form_contract_delivery_100_client_reason

Поставщик (организация)

выбор подразделений (всегда выбрана корневая нода)

crm_form_contract_delivery_100_provider

Представитель поставщика

выбор пользователя

crm_form_contract_delivery_100_provider_name

Основание поставщика

однострочное поле

crm_form_contract_delivery_100_provider_base

Товар

однострочное поле (тема сотрудничества из выбранной записи в поле «Основание (сделка))»

crm_form_contract_delivery_100_theme

Срок поставки товара

числовое поле

crm_form_contract_delivery_100_time

Срок поставки (прописью)

однострочное поле

crm_form_contract_delivery_100_time_by_text

Город поставки

выпадающий список (справочник crm_dict_cities)

crm_form_contract_delivery_100_city_to

Адрес

однострочное поле

crm_form_contract_delivery_100_address

Общая сумма договора

числовое поле

crm_form_contract_delivery_100_sum_total

Сумма договора (прописью)

однострочное поле

crm_form_contract_delivery_100_sum_total_by_text

Срок предоставления Акта

числовое поле

crm_form_contract_delivery_100_act_time

Срок действия договора

выбор даты

crm_form_contract_delivery_100_contract_time_to

Юридический адрес Заказчика

многострочное поле

crm_form_contract_delivery_100_client_requisites1

Юридический адрес Поставщика

многострочное поле

crm_form_contract_delivery_100_provider_requisites1

Реквизиты Заказчика

ссылка

crm_form_contract_delivery_100_client_requisites2

Реквизиты Поставщика

многострочное поле

crm_form_contract_delivery_100_provider_requisites2

Номер договора (приложение)

однострочное поле

crm_form_contract_delivery_100_contract_number_appendix

Дата договора (приложение)

выбор даты

crm_form_contract_delivery_100_contract_date_appendix

Перечень закупаемых товаров

динамическая таблица (из группы полей «Заказ» сделки, указанной в поле «Основание (сделка)»)

crm_form_contract_delivery_100_items

однострочное поле

crm_form_deal_order_number

Наименование Товара

ссылка на реестр «Каталог товаров и услуг»

crm_form_deal_order_orderList

Ед.изм.

однострочное поле

crm_form_deal_order_unit

Кол-во

числовое поле

crm_form_deal_order_amount

Цена за ед., тенге

числовое поле

crm_form_deal_order_price

Сумма, тенге

числовое поле

crm_form_deal_order_total

Итого

числовое поле

crm_form_contract_delivery_100_items_total

Подпись заказчика

ссылка на реестр «Контакты»

crm_form_contract_delivery_100_client_account_appendix

Подпись поставщика

выбор пользователя

crm_form_contract_delivery_100_provider_name_appendix

Источник адреса

выпадающий список

choice

Выбрать аккаунт

ссылка на реестр «Аккаунты»

account_link

Выбрать контакт

ссылка на реестр «Контакты»

contact_link

E-mail

однострочное поле

email

Адреса аккаунта

динамическая таблица (из группы полей «E-mail» аккаунта, указанного в поле «Выбрать аккаунт»)

crm_form_account_email

Актуальный адрес аккаунта

однострочное поле

crm_form_account_email_email

Адреса контакта

динамическая таблица (из группы полей «E-mail» контакта, указанного в поле «Выбрать контакт»)

crm_form_contact_email

Актуальный адрес контакта

однострочное поле

crm_form_contact_email_email

Владелец

выбор подразделения

crm_owner

Доступно

выбор подразделения

crm_all_accessible

Компоненты выбора даты:

  • Формат даты всех компонентов выбора дат - "${dd}" ${monthed} ${yyyy}г.

При выборе записи реестра в поле crm_form_deal_order_orderList динамической таблицы crm_form_contract_delivery_100_items заполняются поля в той же строке таблицы:

  • «Ед.изм.» crm_form_deal_order_unit - из поля crm_form_item_unit выбранной записи;

  • «Цена за ед., тенге» crm_form_deal_order_price - из поля crm_form_item_price;

  • «Сумма, тенге» crm_form_deal_order_total - значение crm_form_deal_order_price * crm_form_deal_order_amount;

Поле «Итого» crm_form_contract_delivery_100_items_total равно сумме всех значений поля «Сумма, тенге» crm_form_deal_order_total в таблице.

Договор поставки (оплата частями)

Код формы: crm_form_contract_delivery_part.

Форма содержит следующие компоненты:

Поле Тип компонента Имя компонента

Номер договора

однострочное поле

crm_form_contract_delivery_part_contract_number

Город

выпадающий список (справочник crm_dict_cities)

crm_form_contract_delivery_part_city_from

Дата договора

выбор даты

crm_form_contract_delivery_part_contract_date

Основание (сделка)

ссылка на реестр «Сделки»

crm_form_contract_delivery_part_deal

Заказчик (аккаунт)

ссылка на реестр «Аккаунты»

crm_form_contract_delivery_part_client_account

Заказчик (контакт)

ссылка на реестр «Контакты»

crm_form_contract_delivery_part_client_client

Основание заказчика

однострочное поле

crm_form_contract_delivery_part_client_reason

Поставщик (организация)

выбор подразделений (всегда выбрана корневая нода)

crm_form_contract_delivery_part_provider

Представитель поставщика

выбор пользователя

crm_form_contract_delivery_part_provider_name

Основание поставщика

однострочное поле

crm_form_contract_delivery_part_provider_base

Товар

однострочное поле (тема сотрудничества из выбранной записи в поле «Основание (сделка))»

crm_form_contract_delivery_part_theme

Срок поставки товара

числовое поле

crm_form_contract_delivery_part_time

Срок поставки (прописью)

однострочное поле

crm_form_contract_delivery_part_time_by_text

Город поставки

выпадающий список (справочник crm_dict_cities)

crm_form_contract_delivery_part_city_to

Адрес

однострочное поле

crm_form_contract_delivery_part_address

Общая сумма договора

числовое поле

crm_form_contract_delivery_part_sum_total

Сумма договора (прописью)

однострочное поле

crm_form_contract_delivery_part_sum_total_by_text

Размер аванса

однострочное поле

crm_form_contract_delivery_part_avans

Срок выплаты аванса

однострочное поле

crm_form_contract_delivery_part_avans_time

Размер доплаты

однострочное поле

crm_form_contract_delivery_part_balance

Срок предоставления Акта

числовое поле

crm_form_contract_delivery_part_act_time

Срок действия договора

выбор даты

crm_form_contract_delivery_part_contract_time_to

Юридический адрес Заказчика

многострочное поле

crm_form_contract_delivery_part_client_requisites1

Юридический адрес Поставщика

многострочное поле

crm_form_contract_delivery_part_provider_requisites1

Реквизиты Заказчика

ссылка

crm_form_contract_delivery_part_client_requisites2

Реквизиты Поставщика

многострочное поле

crm_form_contract_delivery_part_provider_requisites2

Номер договора (приложение)

однострочное поле

crm_form_contract_delivery_part_contract_number_appendix

Дата договора (приложение)

выбор даты

crm_form_contract_delivery_part_contract_date_appendix

Перечень закупаемых товаров

динамическая таблица (из группы полей «Заказ» сделки, указанной в поле «Основание (сделка)»)

crm_form_contract_delivery_part_items

однострочное поле

crm_form_deal_order_number

Наименование Товара

ссылка на реестр «Каталог товаров и услуг»

crm_form_deal_order_orderList

Ед.изм.

однострочное поле

crm_form_deal_order_unit

Кол-во

числовое поле

crm_form_deal_order_amount

Цена за ед., тенге

числовое поле

crm_form_deal_order_price

Сумма, тенге

числовое поле

crm_form_deal_order_total

Итого

числовое поле

crm_form_contract_delivery_part_items_total

Подпись заказчика

ссылка на реестр «Контакты»

crm_form_contract_delivery_part_client_account_appendix

Подпись поставщика

выбор пользователя

crm_form_contract_delivery_part_provider_name_appendix

Источник адреса

выпадающий список

choice

Выбрать аккаунт

ссылка на реестр «Аккаунты»

account_link

Выбрать контакт

ссылка на реестр «Контакты»

contact_link

E-mail

однострочное поле

email

Адреса аккаунта

динамическая таблица (из группы полей «E-mail» аккаунта, указанного в поле «Выбрать аккаунт»)

crm_form_account_email

Актуальный адрес аккаунта

однострочное поле

crm_form_account_email_email

Адреса контакта

динамическая таблица (из группы полей «E-mail» контакта, указанного в поле «Выбрать контакт»)

crm_form_contact_email

Актуальный адрес контакта

однострочное поле

crm_form_contact_email_email

Владелец

выбор подразделения

crm_owner

Доступно

выбор подразделения

crm_all_accessible

Компоненты выбора даты:

  • Формат даты всех компонентов выбора дат - "${dd}" ${monthed} ${yyyy}г.

При выборе записи реестра в поле crm_form_deal_order_orderList динамической таблицы crm_form_contract_delivery_part_items заполняются поля в той же строке таблицы:

  • «Ед.изм.» crm_form_deal_order_unit - из поля crm_form_item_unit выбранной записи;

  • «Цена за ед., тенге» crm_form_deal_order_price - из поля crm_form_item_price;

  • «Сумма, тенге» crm_form_deal_order_total - значение crm_form_deal_order_price * crm_form_deal_order_amount;

Поле «Итого» crm_form_contract_delivery_part_items_total равно сумме всех значений поля «Сумма, тенге» crm_form_deal_order_total в таблице.

Акт приема-передачи товара

Код формы: crm_form_certificate.

Форма содержит следующие компоненты:

Поле Тип компонента Имя компонента

Заказчик

ссылка на реестр «Аккаунты»

crm_form_certificate_table1_customer

Поставщик

компонент выбора подразделений

crm_form_certificate_table1_supplier

Город

выпадающий список (справочник crm_dict_cities)

crm_form_certificate_table2_city

Дата

дата

crm_form_certificate_table2_date

Договор

ссылка на реестр «Договоры поставки»

crm_form_certificate_table3_contract

Номер договора

однострочное поле

crm_form_certificate_table4_number

Дата заключения договора

дата

crm_form_certificate_table4_date

Товар

динамическая таблица

crm_form_certificate_table5

П/п

числовое поле

crm_form_certificate_table5_n

Наименование

ссылка на реестр «Каталог товаров и услуг»

crm_form_certificate_table5_goods

Количество

числовое поле

crm_form_certificate_table5_amount

Сумма

числовое поле

crm_form_certificate_table5_summ

Общая стоимость товара

числовое поле

crm_form_certificate_table6_cost

Номер договора

однострочное поле

crm_form_certificate_table7_number

Дата заключения договора

дата

crm_form_certificate_table7_date

Номер договора

однострочное поле

crm_form_certificate_table8_number

Дата заключения договора

дата

crm_form_certificate_table9_date

Аккаунт заказчика

ссылка на реестр «Аккаунт»

crm_form_certificate_table10_account

Контакт заказчика

ссылка на реестр «Контакт»

crm_form_certificate_table10_contact

Договор заказчика

ссылка на реестр «Договоры поставки»

crm_form_certificate_table11_contract

Подразделение исполнителя

компонент выбора подразделений

crm_form_certificate_table12_account

Исполнитель

компонент выбора пользователей

crm_form_certificate_table12_contact

Договор исполнителя

ссылка на реестр «Договоры поставки»

crm_form_certificate_table13_contract

Номер договора

однострочное поле

crm_form_certificate_table14_number

Дата заключения договора

дата

crm_form_certificate_table15_date

Список работ

динамическая таблица

crm_form_certificate_table16

Виды работ

ссылка на реестр «Каталог товаров и услуг»

crm_form_certificate_table16_goods

Сумма

числовое поле

crm_form_certificate_table17_summ1

Сумма (прописью)

однострочное поле

crm_form_certificate_table17_summ2

Дата

дата

crm_form_certificate_table18_date

Передал

ссылка на реестр «Контакт»

crm_form_certificate_table19_supplier

Принял

компонент выбора пользователей

crm_form_certificate_table19_customer

Номер договора

однострочное поле

crm_form_certificate_table20_number

Дата заключения договора

дата

crm_form_certificate_table21_date

Заказчик

ссылка на реестр «Контакт»

crm_form_certificate_table22_customer

ИИН/БИН заказчика

числовое поле

crm_form_certificate_table22_customerID

Исполнитель

компонент выбора пользователей

crm_form_certificate_table22_responder

ИИН/БИН исполнителя

числовое поле

crm_form_certificate_table22_responderID

Договор

ссылка на реестр «Договоры поставки»

crm_form_certificate_table23_contract

Номер договора

однострочное поле

crm_form_certificate_table23_number

Дата заключения договора

дата

crm_form_certificate_table23_date

Выполненные работы

динамическая таблица

crm_form_certificate_table24

Номер

числовое поле

crm_form_certificate_table16_goods

Наименование

ссылка на реестр «Каталог товаров и услуг»

crm_form_certificate_table24_goods

Дата

дата

crm_form_certificate_table24_date

Сведения об отчете

однострочное поле

crm_form_certificate_table24_comment

Единица измерения

однострочное поле

crm_form_certificate_table24_unit

Количество

числовое поле

crm_form_certificate_table24_amount

Цена

числовое поле

crm_form_certificate_table24_price

Стоимость

числовое поле

crm_form_certificate_table24_summ

Итоговое количество

числовое поле

crm_form_certificate_table25_finalAmount

Итоговая стоимость

числовое поле

crm_form_certificate_table25_finalSumm

Наименование запасов

однострочное поле

crm_form_certificate_table26_name

Количество запасов

числовое поле

crm_form_certificate_table26_amount

Стоимость запасов

числовое поле

crm_form_certificate_table26_cost

Количество страниц

числовое поле

crm_form_certificate_table27_amount

Список приложений

однострочное поле

crm_form_certificate_list

Дата подписания

дата

crm_form_certificate_table28_date

Заказчик

ссылка на реестр «Контакт»

crm_form_certificate_table29_customer

Исполнитель

компонент выбора пользователей

crm_form_certificate_table29_responder

Источник адреса

выпадающий список

choice

Выбрать аккаунт

ссылка на реестр «Аккаунты»

account_link

Выбрать контакт

ссылка на реестр «Контакты»

contact_link

E-mail

однострочное поле

email

Адреса аккаунта

динамическая таблица (из группы полей «E-mail» аккаунта, указанного в поле «Выбрать аккаунт»)

crm_form_account_email

Актуальный адрес аккаунта

однострочное поле

crm_form_account_email_email

Адреса контакта

динамическая таблица (из группы полей «E-mail» контакта, указанного в поле «Выбрать контакт»)

crm_form_contact_email

Актуальный адрес контакта

однострочное поле

crm_form_contact_email_email

Владелец

выбор подразделения

crm_owner

Доступно

выбор подразделения

crm_all_accessible

Компоненты выбора даты:

  • Формат даты всех компонентов выбора дат - "${dd}" ${monthed} ${yyyy}г.

Поле «Общая стоимость товара» crm_form_certificate_table6_cos равно сумме всех значений поля «Сумма» crm_form_certificate_table5_summ в таблице «Товар» crm_form_certificate_table5.

При выборе записи реестра в поле crm_form_certificate_table24_goods динамической таблицы crm_form_certificate_table24 заполняются поля в той же строке таблицы:

  • «Единица измерения» crm_form_certificate_table24_unit - из поля crm_form_item_unit выбранной записи;

  • «Цена» crm_form_certificate_table24_price - из поля crm_form_item_price;

  • «Стоимость» crm_form_certificate_table24_summ - значение crm_form_certificate_table24_price * crm_form_certificate_table24_amount;

Поле «Итоговая стоимость» crm_form_certificate_table25_finalSumm равно сумме всех значений поля «Стоимость» crm_form_certificate_table24_summ в таблице «Выполненные работы» crm_form_certificate_table24.

Поле «Итоговое количество» crm_form_certificate_table25_finalAmount равно сумме всех значений поля «Количество» crm_form_certificate_table24_amount в таблице «Выполненные работы» crm_form_certificate_table24.

Коммерческое предложение

Код формы: crm_form_offer.

Форма содержит следующие компоненты:

Поле Тип компонента Имя компонента

Аккаунт

ссылка на реестр «Аккаунты»

crm_form_offer_account

Контакты для шапки справа

ссылка на реестр «Контакты»

crm_form_offer_contact1

Контакты для ИО в центре после Уважаемый

ссылка на реестр «Контакты»

crm_form_offer_contact2

Должность

однострочное поле

crm_form_offer_whom_position

Аккаунт3

однострочное поле

crm_form_offer_whom_account

ФИО

однострочное поле

crm_form_offer_whom_fullname

Уважаемый

однострочное поле

crm_form_offer_address_dear

ИО в обращении

однострочное поле

crm_form_offer_address_fullname

Количество листов

однострочное поле

crm_form_offer_attachment_number

Должность отправителя

выбор должности

crm_form_offer_from_position

ФИО отправителя

выбор пользователя

crm_form_offer_from_user

Организация отправителя

однострочное поле

crm_form_offer_from_organization

Каталог товаров и услуг

динамическая таблица

crm_form_offer_price

Каталог товаров и услуг

ссылка на реестр «Каталог товаров и услуг»

crm_form_offer_price_price

Стоимость реализации проекта

динамическая таблица

crm_form_offer_project_price

Номер

однострочное поле

crm_form_offer_project_price_number

Название товара или услуги

однострочное поле

crm_form_offer_project_price_item_name

Общая стоимость в тенге с учетом НДС

числовое поле

crm_form_offer_project_price_price

Описание

многострочное поле

crm_form_offer_project_price_description

Итого

числовое поле

crm_form_offer_project_summa_summa

Источник адреса

выпадающий список

choice

Выбрать аккаунт

ссылка на реестр «Аккаунты»

account_link

Выбрать контакт

ссылка на реестр «Контакты»

contact_link

E-mail

однострочное поле

email

Адреса аккаунта

динамическая таблица (из группы полей «E-mail» аккаунта, указанного в поле «Выбрать аккаунт»)

crm_form_account_email

Актуальный адрес аккаунта

однострочное поле

crm_form_account_email_email

Адреса контакта

динамическая таблица (из группы полей «E-mail» контакта, указанного в поле «Выбрать контакт»)

crm_form_contact_email

Актуальный адрес контакта

однострочное поле

crm_form_contact_email_email

Владелец

выбор подразделения

crm_owner

Доступно

выбор подразделения

crm_all_accessible

Для компонента «Аккаунт» настроено сопоставление:

  • crm_form_account_main_name - crm_form_offer_whom_account - EQUAL

Для компонента «Контакты для шапки справа» настроено сопоставление:

  • crm_form_contact_main_fullName - crm_form_offer_whom_fullname - EQUAL

  • crm_form_contact_main_position - crm_form_offer_whom_position - EQUAL

Для компонента «Контакты для ИО в центре после Уважаемый» настроено сопоставление:

  • crm_form_contact_main_fullName - crm_form_offer_address_fullname - POSTFIX - !

Для компонента «ФИО отправителя» настроены:

  • связь с компонентом crm_form_offer_from_position

  • включена опция «Изменить формат отображения ФИО в зависимости от языка системы» с форматом ${l} ${f.short}.${p.short.dot}

Для компонента «Каталог товаров и услуг» настроено сопоставление:

  • crm_form_item_theme - crm_form_offer_project_price_item_name - EQUAL

  • crm_form_item_price - crm_form_offer_project_price_price - EQUAL

  • crm_form_item_description - crm_form_offer_project_price_description - EQUAL

Для поля «Описание»:

  • включена опция «Не удалять пробелы в начале строки»

Поле «Итого» crm_form_offer_project_summa_summa равно сумме всех значений поля «Общая стоимость в тенге с учетом НДС» crm_form_offer_project_price_price в таблице «Стоимость реализации проекта» crm_form_offer_project_price.

Счет-фактура

Код формы: crm_form_invoice.

Форма содержит следующие компоненты:

Поле Тип компонента Имя компонента

Номер счета

однострочное поле

crm_form_invoice_number

Дата счета

выбор даты

crm_form_invoice_date

Основание (договор поставки)

группа полей

Единовременная оплата

ссылка на реестр «Договоры поставки (единовременная оплата)»

crm_form_invoice_contract_100

Оплата частями

ссылка на реестр «Договоры поставки (оплата частями)»

crm_form_invoice_contract_part

Сведения о поставщике

группа полей

Наименование

выбор подразделений (всегда выбрана корневая нода)

crm_form_invoice_provider_name

БИН

однострочное поле

crm_form_invoice_provider_bin

Адрес

многострочное поле

crm_form_invoice_provider_address

ИИК

однострочное поле

crm_form_invoice_provider_iik

БИК

однострочное поле

crm_form_invoice_provider_bik

Свидетельство о постановке на регистрационный учет по НДС

группа полей

Серия

однострочное поле

crm_form_invoice_provider_nds_series

Номер

однострочное поле

crm_form_invoice_provider_nds_number

Дата выдачи

числовое поле

crm_form_invoice_provider_nds_date

Номер договора (контракта) на поставку

однострочное поле (номер договора, выбранного в группе полей «Основание (договор поставки)»)

crm_form_invoice_contract_number

Дата договора (контракта) на поставку

однострочное поле (дата договора, выбранного в группе полей «Основание (договор поставки)»)

crm_form_invoice_contract_date

Условия оплаты по договору (контракту)

выпадающий список (справочник crm_dict_paymentMode)

crm_form_invoice_conditions

Адрес: республика

однострочное поле (значение по умолчанию: «Республика Казахстан»)

crm_form_invoice_republic

Адрес: город

выпадающий список (справочник crm_dict_cities) (город поставки из договора, выбранного в поле «Основание (договор поставки)»)

crm_form_invoice_city

Адрес: улица

однострочное поле (адрес поставки из договора, выбранного в поле «Основание (договор поставки)»)

crm_form_invoice_address

Доверенность

однострочное поле (значение по умолчанию: «без доверенности»)

crm_form_invoice_vicarious

Способ отправления

выпадающий список (справочник crm_dict_deliveryMode)

crm_form_invoice_departure

Товарно-транспортная накладная

однострочное поле

crm_form_invoice_ttn

Грузоотправитель

группа полей

БИН

однострочное поле

crm_form_invoice_sender_bin

Наименование

однострочное поле (наименование организации поставщика из договора, выбранного в поле «Основание (договор поставки)»)

crm_form_invoice_sender_name

Адрес

многострочное поле

crm_form_invoice_sender_address

Грузополучатель

группа полей

БИН

однострочное поле

crm_form_invoice_receiver_bin

Наименование

однострочное поле

crm_form_invoice_receiver_name

Адрес

многострочное поле

crm_form_invoice_receiver_address

Получатель

группа полей

Наименование

однострочное поле (наименование организации заказчика из договора, выбранного в поле «Основание (договор поставки)»)

crm_form_invoice_mainreceiver_name

БИН

однострочное поле

crm_form_invoice_mainreceiver_bin

Адрес

многострочное поле

crm_form_invoice_mainreceiver_address

ИИК

однострочное поле

crm_form_invoice_mainreceiver_iik

БИК

однострочное поле

crm_form_invoice_mainreceiver_bik

Перечень закупаемых товаров

динамическая таблица (из группы полей «Перечень закупаемых товаров) договора, указанного в поле»Основание (договор поставки)“)

crm_form_invoice_order

№ п/п

однострочное поле

crm_form_deal_order_number

Наименование товаров (работ, услуг)

ссылка на реестр «Каталог товаров и услуг»

crm_form_deal_order_orderList

Ед. изм.

однострочное поле

crm_form_deal_order_unit

Кол-во (объем)

числовое поле

crm_form_deal_order_amount

Цена (KZT)

числовое поле

crm_form_deal_order_price

Стоимость товаров (работ, услуг) без НДС

числовое поле

crm_form_deal_order_total

Ставка НДС

числовое поле

crm_form_invoice_order_nds

Сумма НДС

числовое поле

crm_form_invoice_order_nds_summ

Всего стоимость реализации

числовое поле

crm_form_invoice_order_summ_by_item

Ставка акциз

числовое поле

crm_form_invoice_order_akciz

Сумма акциз

числовое поле

crm_form_invoice_order_akciz_summ

Всего по счету

группа полей

Стоимость товаров (работ, услуг) без НДС

числовое поле

crm_form_invoice_order_total

Сумма НДС

числовое поле

crm_form_invoice_order_nds_summ_total

Всего стоимость реализации

числовое поле

crm_form_invoice_order_summ_total

Сумма акциз

числовое поле

crm_form_invoice_order_akciz_summ_total

Руководитель

ссылка на реестр «Контакты» (поле «Заказчик (контакт)» договора, выбранного в поле «Основание (договор поставки)»)

crm_form_invoice_client_client

Главный бухгалтер

однострочное поле

crm_form_invoice_booker

Источник адреса

выпадающий список

choice

Выбрать аккаунт

ссылка на реестр «Аккаунты»

account_link

Выбрать контакт

ссылка на реестр «Контакты»

contact_link

E-mail

однострочное поле

email

Адреса аккаунта

динамическая таблица (из группы полей «E-mail» аккаунта, указанного в поле «Выбрать аккаунт»)

crm_form_account_email

Актуальный адрес аккаунта

однострочное поле

crm_form_account_email_email

Адреса контакта

динамическая таблица (из группы полей «E-mail» контакта, указанного в поле «Выбрать контакт»)

crm_form_contact_email

Актуальный адрес контакта

однострочное поле

crm_form_contact_email_email

Владелец

выбор подразделения

crm_owner

Доступно

выбор подразделения

crm_all_accessible

Компоненты выбора даты:

  • Формат даты всех компонентов выбора дат - ${dd}.${mm}.${yyyy} г.

Однострочные поля:

  • Маска ввода всех полей «БИН» - ############

При выборе записи реестра в поле crm_form_deal_order_orderList динамической таблицы crm_form_invoice_order заполняются поля в той же строке таблицы:

  • «Ед. изм.» crm_form_deal_order_unit - из поля crm_form_item_unit выбранной записи;

  • «Цена (KZT)» crm_form_deal_order_price - из поля crm_form_item_price;

  • «Стоимость товаров (работ, услуг) без НДС» crm_form_deal_order_total - значение crm_form_deal_order_price * crm_form_deal_order_amount;

Поле «Стоимость товаров (работ, услуг) без НДС» crm_form_invoice_order_total равно сумме всех значений поля «Стоимость товаров (работ, услуг) без НДС» crm_form_deal_order_total в таблице.

Поле «Всего стоимость реализации» crm_form_invoice_order_summ_total равно сумме всех значений поля «Всего стоимость реализации» crm_form_invoice_order_summ_by_item в таблице.

Поле «Сумма НДС» crm_form_invoice_order_nds_summ_totall равно сумме всех значений поля «Сумма НДС» crm_form_invoice_order_nds_summ в таблице.

Ответственный за сделки

Код формы: crm_form_deal_responsible.

Форма содержит следующие компоненты:

Поле Тип компонента Имя компонента

Ответственный за сделку

компонент выбора пользователей

crm_form_deal_responsible_user

План продаж

Код формы: crm_form_sales.

Форма содержит следующие компоненты:

Поле Тип компонента Имя компонента

Год

числовое поле

crm_form_deal_order_sales_year

Месяц

выпадающий список (справочник «crm_dict_months»)

crm_form_deal_order_sales_month

Создающий пользователь

компонент выбора пользователей

crm_form_deal_owner_user

Подразделение создающего пользователя

компонент выбора подразделений

crm_owner

UUID корневой организации

однострочное поле

crm_all_accessible

План продаж

динамическая таблица

crm_form_deal_main2_theme_sales

Отделение

компонент выбора подразделений

crm_form_deal_sales_pk1

Пользователь

компонент выбора пользователей

crm_form_deal_responsibleManager_responsible

Тема сотрудничества

ссылка на реестра «Тема сотрудничества»

crm_form_deal_main2_theme_c1

Целевое значение

числовое поле

crm_form_deal_main2_goal_pvalue_c1

Стоимость продаж

числовое поле

crm_form_deal_main2_theme_pvalue_c1

Тема сотрудничества

ссылка на реестра «Тема сотрудничества»

crm_form_deal_main2_theme_c2

Целевое значение

числовое поле

crm_form_deal_main2_goal_pvalue_c2

Стоимость продаж

числовое поле

crm_form_deal_main2_theme_pvalue_c2

Тема сотрудничества

ссылка на реестра «Тема сотрудничества»

crm_form_deal_main2_theme_c3

Целевое значение

числовое поле

crm_form_deal_main2_goal_pvalue_c3

Стоимость продаж

числовое поле

crm_form_deal_main2_theme_pvalue_c3

Тема сотрудничества

ссылка на реестра «Тема сотрудничества»

crm_form_deal_main2_theme_c4

Целевое значение

числовое поле

crm_form_deal_main2_goal_pvalue_c4

Стоимость продаж

числовое поле

crm_form_deal_main2_theme_pvalue_c4

Тема сотрудничества

ссылка на реестра «Тема сотрудничества»

crm_form_deal_main2_theme_c5

Целевое значение

числовое поле

crm_form_deal_main2_goal_pvalue_c5

Стоимость продаж

числовое поле

crm_form_deal_main2_theme_pvalue_c5

Тема сотрудничества

ссылка на реестра «Тема сотрудничества»

crm_form_deal_main2_theme_c6

Стоимость продаж

числовое поле

crm_form_deal_main2_theme_pvalue_c6

Тема сотрудничества

ссылка на реестра «Тема сотрудничества»

crm_form_deal_main2_theme_c7

Целевое значение

числовое поле

crm_form_deal_main2_goal_pvalue_c7

Стоимость продаж

числовое поле

crm_form_deal_main2_theme_pvalue_c7

Тема сотрудничества

ссылка на реестра «Тема сотрудничества»

crm_form_deal_main2_theme_c8

Целевое значение

числовое поле

crm_form_deal_main2_goal_pvalue_c8

Стоимость продаж

числовое поле

crm_form_deal_main2_theme_pvalue_c8

Тема сотрудничества

ссылка на реестра «Тема сотрудничества»

crm_form_deal_main2_theme_c9

Целевое значение

числовое поле

crm_form_deal_main2_goal_pvalue_c9

Стоимость продаж

числовое поле

crm_form_deal_main2_theme_pvalue_c9

Тема сотрудничества

ссылка на реестра «Тема сотрудничества»

crm_form_deal_main2_theme_c10

Целевое значение

числовое поле

crm_form_deal_main2_goal_pvalue_c10

Стоимость продаж

числовое поле

crm_form_deal_main2_theme_pvalue_c10

Тема сотрудничества

ссылка на реестра «Тема сотрудничества»

crm_form_deal_main2_theme_c11

Целевое значение

числовое поле

crm_form_deal_main2_goal_pvalue_c11

Стоимость продаж

числовое поле

crm_form_deal_main2_theme_pvalue_c11

Тема сотрудничества

ссылка на реестра «Тема сотрудничества»

crm_form_deal_main2_theme_c12

Целевое значение

числовое поле

crm_form_deal_main2_goal_pvalue_c12

Стоимость продаж

числовое поле

crm_form_deal_main2_theme_pvalue_c12

Тема сотрудничества

ссылка на реестра «Тема сотрудничества»

crm_form_deal_main2_theme_c13

Целевое значение

числовое поле

crm_form_deal_main2_goal_pvalue_c13

Стоимость продаж

числовое поле

crm_form_deal_main2_theme_pvalue_c13

Тема сотрудничества

ссылка на реестра «Тема сотрудничества»

crm_form_deal_main2_theme_c14

Целевое значение

числовое поле

crm_form_deal_main2_goal_pvalue_c14

Стоимость продаж

числовое поле

crm_form_deal_main2_theme_pvalue_c14

Конечный положительный статус

числовое поле

crm_form_deal_end

Поля «Создающий пользователь» и «Подразделение создающего пользователя»:

  • Поля скрыты.

  • Включены флаги «Заполнять создающим пользователем» и «Заполнять департаментом создающего пользователя».

Поле «UUID корневой организации»:

  • Поле скрыто.

  • Поле содержит значение по умолчанию 1.

Динамическая таблица «План продаж»:

  • Флаг «Отобразить границы» включен.

  • Форматная строка:

    [${crm_form_sales_cost_cost} и ${crm_form_sales_cost_value} для ${crm_form_sales_cost_position}]

  • Разделитель свертки - ,

Поле «Отделение»:

  • Флаг «Обязательное поле» включен.

Поле «Тема сотрудничества»:

  • Флаг «Обязательное поле» включен.

Поле «Стоимость продаж»:

  • Значение поля по умолчанию - 0.

Поле «Конечный положительный статус»:

  • Поле скрыто.

  • Значение поля по умолчанию - 1.

    Примечание:

    В случае, если значение поля будет изменено, дашбоард модуля «Продуктивность» будет работать некорректно, и это не будет являться ошибкой Synergy.

Поле «Целевое значение»:

  • Флаг «Заблокировать от изменений пользователем».

  • Поле содержит значение из поля «Стоимость продаж» (crm_form_deal_main2_theme_pvalue_cN), у которых совпадают значения:

    • «Год» (crm_form_deal_order_sales_year);

    • «Месяц» (crm_form_deal_order_sales_month);

    • «Тема сотрудничества» (crm_form_deal_main2_theme_cN);

    • «Отделение» (crm_form_deal_sales_pk1) в таблице текущего документа по форме и «Подразделение создающего пользователя» (crm_owner) другого документа по форме.

  • При отсутствии документа по форме «План продаж», удовлетворяющего перечисленным требованиям поле остается пустым, плейсхолдер не отображается.

  • Если имеется несколько документов, удовлетворяющих требованиям, указывается целевое значение последнего измененного документа.

  • Значения полей актуализируются при каждом открытии документа.

  • Если сумма значений всех полей «Стоимость продаж» хотя бы одной темы сотрудничества меньше, чем значение ее поля «Целевое значение», то при сохранении такого документа отобразится сообщение об ошибке:

    Сумма стоимостей продаж должна быть больше либо равна целевому значению

    Весь столбец соответствующей темы сотрудничества подсвечивается красным.

Рисунок 3.1. Заголовок динамической таблицы

Заголовок динамической таблицы

Поля «Отделение» и «Пользователь»:

  • Один из столбцов всегда скрыт:

    • если подразделение создающего пользователя имеет дочерние подразделения, то скрыт столбец «Пользователь»;

    • если подразделение создающего пользователя не имеет дочерние подразделения, то скрыт столбец «Отделение».

  • Заголовок «Отделение» или «Пользователь» выровнен по вертикали по центру.

Нормативы продолжительности статусов сделки

Код формы: crm_form_deal_flow_standard.

Форма содержит следующие компоненты:

Поле Тип компонента Имя компонента

Нормативы продолжительности статусов сделки

динамическая таблица

crm_form_deal_flow_standard_table

Статус сделки

выпадающий список (справочник «crm_dict_dealStatus»)

crm_form_deal_flow_standard_status

Продолжительность (в днях)

числовое поле

crm_form_deal_flow_standard_duration

Продолжительность по умолчанию (в днях)

числовое поле

crm_form_deal_flow_standard_default_duration

Динамическая таблица «Нормативы продолжительности статусов сделки»:

  • Форматная строка:

    [${crm_form_deal_flow_standard_duration} для ${crm_form_deal_flow_standard_status}]

  • Разделитель свертки - ,

Поле «Продолжительность (в днях)»:

  • Значение поля по умолчанию - 1.

Поле «Продолжительность по умолчанию (в днях)»:

  • Значение поля по умолчанию - 1.

Пользовательские компоненты

crm_component_canban

Свойство Значение

Код

crm_component_canban

Использовать в формах

включен

HTML код:


<div id="redips-drag">

</div>

JAVASCRIPT код:


/*jslint white: true, browser: true, undef: true, nomen: true, eqeqeq: true, plusplus: false, bitwise: true, regexp: true, strict: true, newcap: true, immed: true, maxerr: 14 */
/*global window: false, REDIPS: true */

/* enable strict mode */
"use strict";

// define redips_init variable
var redipsInit;


// redips initialization
redipsInit = function () {
    // reference to the REDIPS.drag library and message line
    var rd = REDIPS.drag;
    // how to display disabled elements
    rd.style.borderDisabled = 'solid';  // border style for disabled element will not be changed (default is dotted)
    rd.style.opacityDisabled = 60;      // disabled elements will have opacity effect
    REDIPS.drag.dropMode = 'multiple';
    // initialization
    rd.init();
    // only "smile" can be placed to the marked cell
    rd.mark.exception.d8 = 'smile';
    // prepare handlers
    rd.event.clicked = function () {
    };
    rd.event.dblClicked = function () {
    };
    rd.event.moved  = function () {
    };
    rd.event.notMoved = function () {
    };
    rd.event.dropped = function () {
        var pos = rd.getPosition();
        console.log($(rd.obj).attr('status'));
        var status = model.currentData[pos[2]];
        if ($(rd.obj).attr('status') === status.status) {
            return;
        }
        AS.SERVICES.showWaitWindow();
        var pFact = jQuery.ajax({
            url: window.location.origin + "/crm/rest/api/funnel/changeLeadStatus?statusID="+(status.status) + "&statusName="+(status.name)+"&leadID=" + rd.obj.id,
            type: "POST",
            beforeSend: AS.FORMS.ApiUtils.addAuthHeader,
            dataType: "text",
            error: function(jqXHR, textStatus, errorThrown){
                model.playerModel.redraw();
                AS.SERVICES.hideWaitWindow();
                try {
                    AS.SERVICES.showErrorMessage(jqXHR.responseText);
                } catch (e) {
                    console.log(e);
                }
            }
        });

        jQuery.when(pFact).then(function (data) {
            model.playerModel.firstShow = false;
            console.log(data);
            model.playerModel.redraw();
            var object = JSON.parse(data);
            if (object.dealObject) {
                var documentID = object.id;
                var hash = '#' + jQuery.param({
                        submodule: 'common',
                        action: 'open_document',
                        document_identifier: documentID});
                window.top.location.hash = hash;
            }
            AS.SERVICES.hideWaitWindow();
        });
    };
    rd.event.switched = function () {
    };
    rd.event.clonedEnd1 = function () {
    };
    rd.event.clonedEnd2 = function () {
    };
    rd.event.notCloned = function () {
    };
    rd.event.deleted = function (cloned) {
        // if cloned element is directly moved to the trash
        if (cloned) {
            // set id of original element (read from redips property)
            // var id_original = rd.obj.redips.id_original;
        }
        else {
        }
    };
    rd.event.undeleted = function () {
    };
    rd.event.cloned = function () {
    };
    rd.event.changed = function () {
        // get target and source position (method returns positions as array)
        var pos = rd.getPosition();
    };
};


// toggles trash_ask parameter defined at the top
function toggleConfirm(chk) {
    if (chk.checked === true) {
        REDIPS.drag.trash.question = 'Are you sure you want to delete DIV element?';
    }
    else {
        REDIPS.drag.trash.question = null;
    }
}


// toggles delete_cloned parameter defined at the top
function toggleDeleteCloned(chk) {
    REDIPS.drag.clone.drop = !chk.checked;
}


// enables / disables dragging
function toggleDragging(chk) {
    REDIPS.drag.enableDrag(chk.checked);
}


// function sets drop_option parameter defined at the top
function setMode(radioButton) {
    REDIPS.drag.dropMode = radioButton.value;
}


view.initDnd = redipsInit;

crm_component_canban_deal

Свойство Значение

Код

crm_component_canban_deal

Использовать в формах

включен

HTML код:


<div id="redips-drag">

</div>

JAVASCRIPT код:


/*jslint white: true, browser: true, undef: true, nomen: true, eqeqeq: true, plusplus: false, bitwise: true, regexp: true, strict: true, newcap: true, immed: true, maxerr: 14 */
/*global window: false, REDIPS: true */

/* enable strict mode */
"use strict";

// define redips_init variable
var redipsInit;


// redips initialization
redipsInit = function () {
    // reference to the REDIPS.drag library and message line
    var rd = REDIPS.drag;
    // how to display disabled elements
    rd.style.borderDisabled = 'solid';  // border style for disabled element will not be changed (default is dotted)
    rd.style.opacityDisabled = 60;      // disabled elements will have opacity effect
    REDIPS.drag.dropMode = 'multiple';
    // initialization
    rd.init();
    // only "smile" can be placed to the marked cell
    rd.mark.exception.d8 = 'smile';
    // prepare handlers
    rd.event.clicked = function () {
    };
    rd.event.dblClicked = function () {
    };
    rd.event.moved  = function () {
    };
    rd.event.notMoved = function () {
    };
    rd.event.dropped = function () {
        var pos = rd.getPosition();
        console.log($(rd.obj).attr('status'));
        var status = model.currentData[pos[2]];
        if ($(rd.obj).attr('status') === status.status) {
            return;
        }
        AS.SERVICES.showWaitWindow();
        var pFact = jQuery.ajax({
            url: window.location.origin + "/crm/rest/api/funnel/changeDealStatus?statusID="+(status.status) + "&statusName="+(status.name)+"&leadID=" + rd.obj.id,
            type: "POST",
            beforeSend: AS.FORMS.ApiUtils.addAuthHeader,
            dataType: "text",
            error: function(jqXHR, textStatus, errorThrown){
                model.playerModel.redraw();
                AS.SERVICES.hideWaitWindow();
                try {
                    AS.SERVICES.showErrorMessage(jqXHR.responseText);
                } catch (e) {
                    console.log(e);
                }
            }
        });

        jQuery.when(pFact).then(function (data) {
            model.playerModel.firstShow = false;
            console.log(data);
            model.playerModel.redraw();
            var object = JSON.parse(data);
            if (object.dealObject) {
                var documentID = object.id;
                var hash = '#' + jQuery.param({
                        submodule: 'common',
                        action: 'open_document',
                        document_identifier: documentID});
                window.top.location.hash = hash;
            }
            AS.SERVICES.hideWaitWindow();
        });
    };
    rd.event.switched = function () {
    };
    rd.event.clonedEnd1 = function () {
    };
    rd.event.clonedEnd2 = function () {
    };
    rd.event.notCloned = function () {
    };
    rd.event.deleted = function (cloned) {
        // if cloned element is directly moved to the trash
        if (cloned) {
            // set id of original element (read from redips property)
            // var id_original = rd.obj.redips.id_original;
        }
        else {
        }
    };
    rd.event.undeleted = function () {
    };
    rd.event.cloned = function () {
    };
    rd.event.changed = function () {
        // get target and source position (method returns positions as array)
        var pos = rd.getPosition();
    };
};


// toggles trash_ask parameter defined at the top
function toggleConfirm(chk) {
    if (chk.checked === true) {
        REDIPS.drag.trash.question = 'Are you sure you want to delete DIV element?';
    }
    else {
        REDIPS.drag.trash.question = null;
    }
}


// toggles delete_cloned parameter defined at the top
function toggleDeleteCloned(chk) {
    REDIPS.drag.clone.drop = !chk.checked;
}


// enables / disables dragging
function toggleDragging(chk) {
    REDIPS.drag.enableDrag(chk.checked);
}


// function sets drop_option parameter defined at the top
function setMode(radioButton) {
    REDIPS.drag.dropMode = radioButton.value;
}


view.initDnd = redipsInit

crm_component_deals_dashboard

Свойство Значение

Код

crm_component_deals_dashboard

Использовать в формах

включен

HTML код:


<iframe src="http://%IP_adress%:5601/app/kibana#/dashboard/%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%BE%D0%B4%D0%B0%D0%B6%D0%B0%D0%BC%D0%B8?embed=true&_g=(refreshInterval%3A('%24%24hashKey'%3A'object%3A36258'%2Cdisplay%3A'30%20seconds'%2Cpause%3A!f%2Csection%3A1%2Cvalue%3A30000)%2Ctime%3A(from%3Anow-15m%2Cmode%3Aquick%2Cto%3Anow))" height="100%" width="100%"></iframe>

crm_component_deals_os_dashboard

Свойство Значение

Код

crm_component_deals_os_dashboard

Использовать в формах

включен

HTML код:


<iframe src="http://%IP_adress%:5601/app/kibana#/dashboard/%D0%9F%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D0%BE%D1%81%D1%82%D1%8C-(%D1%81%D0%BE%D1%82%D1%80%D1%83%D0%B4%D0%BD%D0%B8%D0%BA%D0%B8)?embed=true&_g=(refreshInterval%3A('%24%24hashKey'%3A'object%3A5090'%2Cdisplay%3A'30%20seconds'%2Cpause%3A!f%2Csection%3A1%2Cvalue%3A30000)%2Ctime%3A(from%3Anow-15m%2Cmode%3Aquick%2Cto%3Anow))" height="100%" width="100%"></iframe>

crm_component_deals_productivity

Свойство Значение

Код

crm_component_deals_productivity

Использовать в формах

включен

HTML код:


<iframe src="http://%IP_adress%:5601/app/kibana#/dashboard/%D0%9F%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D0%BE%D1%81%D1%82%D1%8C?embed=true&_g=(refreshInterval%3A('%24%24hashKey'%3A'object%3A700'%2Cdisplay%3A'30%20seconds'%2Cpause%3A!f%2Csection%3A1%2Cvalue%3A30000)%2Ctime%3A(from%3Anow-15m%2Cmode%3Aquick%2Cto%3Anow))" height="100%" width="100%"></iframe>

crm_component_deal_button

Свойство Значение

Код

crm_component_deal_button

Использовать в формах

включен

HTML код:


<button class="ns-approveButton ns-basicChooserApplyButton ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" style="margin: 10px 0; display: block;" innerId='make_deal'>Создать</button>

JAVASCRIPT код:


var button = jQuery(view.container).children("[innerId='make_deal']");
var locale = AS.OPTIONS.locale;
var statusValue;
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']);
            }
        });
    }
});
button.click(function(){
    model.playerModel.getModelWithId('crm_form_lead_deals_status').setValue(statusValue + '');
});

crm_component_funnel

Свойство Значение

Код

crm_component_funnel

Использовать в формах

включен

HTML код:


<style>
.chart {
    margin: 0 auto;
    margin-top: 20px;
    margin-bottom: 20px;
    height: 500px;
    width: 450px;
}
</style
                <!-- Funnel container -->
                <div class="chart" id="funnel"></div>

JAVASCRIPT код:


/* global D3Funnel */

const data = {
normal: [
   ['Первичная регистрация', [0, ''], '#e73a00'],
    ['Квалификация', [0, ''], '#fa6c00'],
    ['Взращивание', [0, ''], '#ffa900'],
    ['Подтверждение интереса', [0, ''], '#ffc500'],
    ['В сделку', [0, ''], '#a6cf00'],
]
};
const options = {

        chart: {
            width: 450,
            height: 500,
            bottomWidth: 1 / 2,
            curve: {
                enabled: false,
            },
        },
        block: {
            dynamicHeight: true,
            highlight: true,
            minHeight: 40,

        },
        label: {
            format: '{l}: {v}n{f}',
        },
        events: {
            click: {
                block: (d) => {
                alert('<' + d.label.raw + '> selected.');
},
},
}
}

const chart = new D3Funnel('#funnel');
const picker = document.getElementById('picker');
chart.draw(data.normal, options);

crm_component_funnel_deal

Свойство Значение

Код

crm_component_funnel_deal

Использовать в формах

включен

HTML код:


<style>
.chart {
    margin: 0 auto;
    margin-top: 20px;
    margin-bottom: 20px;
    height: 500px;
    width: 450px;
}
</style
                <!-- Funnel container -->
                <div class="chart" id="funnel"></div>

JAVASCRIPT код:


/* global D3Funnel */

const data = {
normal: [
   ['Первичная регистрация', [0, ''], '#e73a00'],
    ['Квалификация', [0, ''], '#fa6c00'],
    ['Взращивание', [0, ''], '#ffa900'],
    ['Подтверждение интереса', [0, ''], '#ffc500'],
    ['В сделку', [0, ''], '#a6cf00'],
]
};
const options = {

        chart: {
            width: 450,
            height: 500,
            bottomWidth: 1 / 2,
            curve: {
                enabled: false,
            },
        },
        block: {
            dynamicHeight: false,
            highlight: true,
            minHeight: 40,

        },
        label: {
            format: '{l}: {v}n{f}',
        },
        events: {
            click: {
                block: (d) => {
                alert('<' + d.label.raw + '> selected.');
},
},
}
}

const chart = new D3Funnel('#funnel');
const picker = document.getElementById('picker');
chart.draw(data.normal, options);

crm_component_group_button

Свойство Значение

Код

crm_component_group_button

Использовать в формах

включен

HTML код:



<style>

 .btn_boot-group-lg > .btn_boot, .btn_boot-lg {
     padding: 10px 16px;
     font-size: 18px;
     border-radius: 6px
 }

.btn_boot-group-sm > .btn_boot, .btn_boot-sm {
    padding: 5px 10px;
    font-size: 12px;
    line-height: 1.5;
    border-radius: 3px
}

.btn_boot-group-xs > .btn_boot, .btn_boot-xs {
    padding: 1px 5px;
    font-size: 12px;
    line-height: 1.5;
    border-radius: 3px
}
.btn_boot-group, .btn_boot-group-vertical {
    position: relative;

    vertical-align: middle;
    padding-top: 3px;
}

.btn_boot-group-vertical > .btn_boot, .btn_boot-group > .btn_boot {
    position: relative;
    float: left
}

.btn_boot-group-vertical > .btn_boot.active, .btn_boot-group-vertical > .btn_boot:active, .btn_boot-group-vertical > .btn_boot:focus, .btn_boot-group-vertical > .btn_boot:hover, .btn_boot-group > .btn_boot.active, .btn_boot-group > .btn_boot:active, .btn_boot-group > .btn_boot:focus, .btn_boot-group > .btn_boot:hover {
    z-index: 2
}

.btn_boot-group .btn_boot + .btn_boot, .btn_boot-group .btn_boot + .btn_boot-group, .btn_boot-group .btn_boot-group + .btn_boot, .btn_boot-group .btn_boot-group + .btn_boot-group {
    margin-left: -1px
}

.btn_boot-toolbar {
    margin-left: -5px
}

.btn_boot-toolbar .btn_boot, .btn_boot-toolbar .btn_boot-group, .btn_boot-toolbar .input-group {
    float: left
}

.btn_boot-toolbar > .btn_boot, .btn_boot-toolbar > .btn_boot-group, .btn_boot-toolbar > .input-group {
    margin-left: 5px
}

.btn_boot-group > .btn_boot:not(:first-child):not(:last-child):not(.dropdown-toggle) {
    border-radius: 0
}

.btn_boot-group > .btn_boot:first-child {
    margin-left: 0
}

.btn_boot-group > .btn_boot:first-child:not(:last-child):not(.dropdown-toggle) {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0
}

.btn_boot-group > .btn_boot:last-child:not(:first-child), .btn_boot-group > .dropdown-toggle:not(:first-child) {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0
}

.btn_boot-group > .btn_boot-group {
    float: left
}

.btn_boot-group > .btn_boot-group:not(:first-child):not(:last-child) > .btn_boot {
    border-radius: 0
}

.btn_boot-group > .btn_boot-group:first-child:not(:last-child) > .btn_boot:last-child, .btn_boot-group > .btn_boot-group:first-child:not(:last-child) > .dropdown-toggle {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0
}

.btn_boot-group > .btn_boot-group:last-child:not(:first-child) > .btn_boot:first-child {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0
}

.btn_boot-group .dropdown-toggle:active, .btn_boot-group.open .dropdown-toggle {
    outline: 0
}

.btn_boot-group > .btn_boot + .dropdown-toggle {
    padding-right: 8px;
    padding-left: 8px
}

.btn_boot-group > .btn_boot-lg + .dropdown-toggle {
    padding-right: 12px;
    padding-left: 12px
}

.btn_boot-group.open .dropdown-toggle {
    -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
    box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125)
}

.btn_boot-group.open .dropdown-toggle.btn_boot-link {
    -webkit-box-shadow: none;
    box-shadow: none
}

.btn_boot .caret {
    margin-left: 0
}

.btn_boot-lg .caret {
    border-width: 5px 5px 0;
    border-bottom-width: 0
}

.dropup .btn_boot-lg .caret {
    border-width: 0 5px 5px
}

.btn_boot-group-vertical > .btn_boot, .btn_boot-group-vertical > .btn_boot-group, .btn_boot-group-vertical > .btn_boot-group > .btn_boot {
    display: block;
    float: none;
    width: 100%;
    max-width: 100%
}

.btn_boot-group-vertical > .btn_boot-group > .btn_boot {
    float: none
}

.btn_boot-group-vertical > .btn_boot + .btn_boot, .btn_boot-group-vertical > .btn_boot + .btn_boot-group, .btn_boot-group-vertical > .btn_boot-group + .btn_boot, .btn_boot-group-vertical > .btn_boot-group + .btn_boot-group {
    margin-top: -1px;
    margin-left: 0
}

.btn_boot-group-vertical > .btn_boot:not(:first-child):not(:last-child) {
    border-radius: 0
}

.btn_boot-group-vertical > .btn_boot:first-child:not(:last-child) {
    border-top-left-radius: 4px;
    border-top-right-radius: 4px;
    border-bottom-right-radius: 0;
    border-bottom-left-radius: 0
}

.btn_boot-group-vertical > .btn_boot:last-child:not(:first-child) {
    border-top-left-radius: 0;
    border-top-right-radius: 0;
    border-bottom-right-radius: 4px;
    border-bottom-left-radius: 4px
}

.btn_boot-group-vertical > .btn_boot-group:not(:first-child):not(:last-child) > .btn_boot {
    border-radius: 0
}

.btn_boot-group-vertical > .btn_boot-group:first-child:not(:last-child) > .btn_boot:last-child, .btn_boot-group-vertical > .btn_boot-group:first-child:not(:last-child) > .dropdown-toggle {
    border-bottom-right-radius: 0;
    border-bottom-left-radius: 0
}

.btn_boot-group-vertical > .btn_boot-group:last-child:not(:first-child) > .btn_boot:first-child {
    border-top-left-radius: 0;
    border-top-right-radius: 0
}

.btn_boot-group-justified {
    display: table;
    width: 100%;
    table-layout: fixed;
    border-collapse: separate
}

.btn_boot-group-justified > .btn_boot, .btn_boot-group-justified > .btn_boot-group {
    display: table-cell;
    float: none;
    width: 1%
}

.btn_boot-group-justified > .btn_boot-group .btn_boot {
    width: 100%
}

.btn_boot-group-justified > .btn_boot-group .dropdown-menu {
    left: auto
}

.btn_boot {
    display: inline-block;
    padding: 6px 12px;
    margin-bottom: 0;
    font-size: 14px;
    font-weight: bolder;
    line-height: 0.9;
    text-align: center;
    white-space: nowrap;
    vertical-align: middle;
    -ms-touch-action: manipulation;
    touch-action: manipulation;
    cursor: pointer;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
    background-image: none;
    border: 1px solid transparent;
    border-radius: 4px;
}

.btn_boot.active.focus, .btn_boot.active:focus, .btn_boot.focus, .btn_boot:active.focus, .btn_boot:active:focus, .btn_boot:focus {

}

.btn_boot.focus, .btn_boot:focus, .btn_boot:hover {
    color: #333;
    text-decoration: none
}

.btn_boot.active, .btn_boot:active {
    background-image: none;
    outline: 0;
}

.btn_boot.disabled, .btn_boot[disabled], fieldset[disabled] .btn_boot {
    cursor: not-allowed;
    filter: alpha(opacity=65);
    -webkit-box-shadow: none;
    box-shadow: none;
    opacity: .65
}

a.btn_boot.disabled, fieldset[disabled] a.btn_boot {
    pointer-events: none
}

.btn_boot-default {
    color: #333;
    background-color: #eeeeee;
    border-color: #D5D5D5
}

.btn_boot-default.focus, .btn_boot-default:focus {
    color: #333;
    background-color: #eeeeee;
    border-color: #D5D5D5
}

.btn_boot-default:hover {
    color: #333;
    background-color: #eeeeee;
    border-color: #D5D5D5
}

.btn_boot-default.active, .btn_boot-default:active, .open > .dropdown-toggle.btn_boot-default {
    color: #333;
    background-color: #DDDDDD;
    border-color: #D5D5D5
}

.btn_boot-default.active.focus, .btn_boot-default.active:focus, .btn_boot-default.active:hover, .btn_boot-default:active.focus, .btn_boot-default:active:focus, .btn_boot-default:active:hover, .open > .dropdown-toggle.btn_boot-default.focus, .open > .dropdown-toggle.btn_boot-default:focus, .open > .dropdown-toggle.btn_boot-default:hover {
    color: #333;
    background-color: #DDDDDD;
    border-color: #D5D5D5
}

.btn_boot-default.active, .btn_boot-default:active, .open > .dropdown-toggle.btn_boot-default {
    background-image: none
}

.btn_boot-default.disabled.focus, .btn_boot-default.disabled:focus, .btn_boot-default.disabled:hover, .btn_boot-default[disabled].focus, .btn_boot-default[disabled]:focus, .btn_boot-default[disabled]:hover, fieldset[disabled] .btn_boot-default.focus, fieldset[disabled] .btn_boot-default:focus, fieldset[disabled] .btn_boot-default:hover {
    background-color: #fff;
    border-color: #D5D5D5
}

.btn_boot-default .badge {
    color: #fff;
    background-color: #8c8c8c
}
</style>
  <div class="btn_boot-group" style="
width:275px;
margin: 0 auto;
height: 26px;
align-self: center;
text-align: center;
" innerId="group">
<button type="button" class="btn_boot btn_boot-default" innerId="funnel">Воронка</button>
<button type="button" class="btn_boot btn_boot-default active" innerId="canban">Поток</button>
<button type="button" class="btn_boot btn_boot-default " innerId="dashboard">Аналитика</button>
</div>

JAVASCRIPT код:


$(".btn_boot-group > .btn_boot").click(function(){
    $(this).addClass("active").siblings().removeClass("active");
});

var funnel = jQuery(view.container[0]).children("[innerId='group']").children("[innerId='funnel']");
funnel.text(i18n.tr('Воронка'));
var canban = jQuery(view.container[0]).children("[innerId='group']").children("[innerId='canban']");
canban.text(i18n.tr('Поток'));
var dashboard = jQuery(view.container[0]).children("[innerId='group']").children("[innerId='dashboard']");
dashboard.text(i18n.tr('Аналитика'));
var funnel_cmp = view.playerView.getViewWithId('crm_form_funnel_funnel');
var canban_cmp = view.playerView.getViewWithId('crm_form_funnel_canban');
var bottom_cmp = view.playerView.getViewWithId('crm_form_funnel_bottom_sum');
var dashboard_cmp = view.playerView.getViewWithId('crm_form_funnel_dashboard');
var filterTable = view.playerView.getViewWithId('crm_form_funnel_filter_panel');
model.playerModel.funnelDrawn = false;
model.playerModel.canbanDrawn = false;
funnel.click(function(){
    $('body').css('overflow', 'auto');
    funnel_cmp.setVisible(true);
    bottom_cmp.setVisible(true);
    canban_cmp.setVisible(false);
    dashboard_cmp.setVisible(false);
    model.playerModel.isFunnel = true;
    filterTable.setVisible(true);
    if (!model.playerModel.funnelDrawn) {
        model.playerModel.redraw();
    }
});
canban.click(function(){
    $('body').css('overflow', 'auto');
    funnel_cmp.setVisible(false);
    canban_cmp.setVisible(true);
    bottom_cmp.setVisible(false);
    dashboard_cmp.setVisible(false);
    model.playerModel.isFunnel = false;
    filterTable.setVisible(true);
    if (!model.playerModel.canbanDrawn) {
        model.playerModel.redraw();
    }
});
dashboard.click(function(){
    $('body').css('overflow', 'auto');
    funnel_cmp.setVisible(false);
    bottom_cmp.setVisible(false);
    canban_cmp.setVisible(false);
    dashboard_cmp.setVisible(true);
    dashboard_cmp.calcDim();
    filterTable.setVisible(false);
});

crm_component_group_button_deal

Свойство Значение

Код

crm_component_group_button_deal

Использовать в формах

включен

HTML код:




<style>

    .btn_boot-group-lg > .btn_boot, .btn_boot-lg {
        padding: 10px 16px;
        font-size: 18px;
        border-radius: 6px
    }

    .btn_boot-group-sm > .btn_boot, .btn_boot-sm {
        padding: 5px 10px;
        font-size: 12px;
        line-height: 1.5;
        border-radius: 3px
    }

    .btn_boot-group-xs > .btn_boot, .btn_boot-xs {
        padding: 1px 5px;
        font-size: 12px;
        line-height: 1.5;
        border-radius: 3px
    }
    .btn_boot-group, .btn_boot-group-vertical {
        position: relative;

        vertical-align: middle;
        padding-top: 3px;
    }

    .btn_boot-group-vertical > .btn_boot, .btn_boot-group > .btn_boot {
        position: relative;
        float: left
    }

    .btn_boot-group-vertical > .btn_boot.active, .btn_boot-group-vertical > .btn_boot:active, .btn_boot-group-vertical > .btn_boot:focus, .btn_boot-group-vertical > .btn_boot:hover, .btn_boot-group > .btn_boot.active, .btn_boot-group > .btn_boot:active, .btn_boot-group > .btn_boot:focus, .btn_boot-group > .btn_boot:hover {
        z-index: 2
    }

    .btn_boot-group .btn_boot + .btn_boot, .btn_boot-group .btn_boot + .btn_boot-group, .btn_boot-group .btn_boot-group + .btn_boot, .btn_boot-group .btn_boot-group + .btn_boot-group {
        margin-left: -1px
    }

    .btn_boot-toolbar {
        margin-left: -5px
    }

    .btn_boot-toolbar .btn_boot, .btn_boot-toolbar .btn_boot-group, .btn_boot-toolbar .input-group {
        float: left
    }

    .btn_boot-toolbar > .btn_boot, .btn_boot-toolbar > .btn_boot-group, .btn_boot-toolbar > .input-group {
        margin-left: 5px
    }

    .btn_boot-group > .btn_boot:not(:first-child):not(:last-child):not(.dropdown-toggle) {
        border-radius: 0
    }

    .btn_boot-group > .btn_boot:first-child {
        margin-left: 0
    }

    .btn_boot-group > .btn_boot:first-child:not(:last-child):not(.dropdown-toggle) {
        border-top-right-radius: 0;
        border-bottom-right-radius: 0
    }

    .btn_boot-group > .btn_boot:last-child:not(:first-child), .btn_boot-group > .dropdown-toggle:not(:first-child) {
        border-top-left-radius: 0;
        border-bottom-left-radius: 0
    }

    .btn_boot-group > .btn_boot-group {
        float: left
    }

    .btn_boot-group > .btn_boot-group:not(:first-child):not(:last-child) > .btn_boot {
        border-radius: 0
    }

    .btn_boot-group > .btn_boot-group:first-child:not(:last-child) > .btn_boot:last-child, .btn_boot-group > .btn_boot-group:first-child:not(:last-child) > .dropdown-toggle {
        border-top-right-radius: 0;
        border-bottom-right-radius: 0
    }

    .btn_boot-group > .btn_boot-group:last-child:not(:first-child) > .btn_boot:first-child {
        border-top-left-radius: 0;
        border-bottom-left-radius: 0
    }

    .btn_boot-group .dropdown-toggle:active, .btn_boot-group.open .dropdown-toggle {
        outline: 0
    }

    .btn_boot-group > .btn_boot + .dropdown-toggle {
        padding-right: 8px;
        padding-left: 8px
    }

    .btn_boot-group > .btn_boot-lg + .dropdown-toggle {
        padding-right: 12px;
        padding-left: 12px
    }

    .btn_boot-group.open .dropdown-toggle {
        -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
        box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125)
    }

    .btn_boot-group.open .dropdown-toggle.btn_boot-link {
        -webkit-box-shadow: none;
        box-shadow: none
    }

    .btn_boot .caret {
        margin-left: 0
    }

    .btn_boot-lg .caret {
        border-width: 5px 5px 0;
        border-bottom-width: 0
    }

    .dropup .btn_boot-lg .caret {
        border-width: 0 5px 5px
    }

    .btn_boot-group-vertical > .btn_boot, .btn_boot-group-vertical > .btn_boot-group, .btn_boot-group-vertical > .btn_boot-group > .btn_boot {
        display: block;
        float: none;
        width: 100%;
        max-width: 100%
    }

    .btn_boot-group-vertical > .btn_boot-group > .btn_boot {
        float: none
    }

    .btn_boot-group-vertical > .btn_boot + .btn_boot, .btn_boot-group-vertical > .btn_boot + .btn_boot-group, .btn_boot-group-vertical > .btn_boot-group + .btn_boot, .btn_boot-group-vertical > .btn_boot-group + .btn_boot-group {
        margin-top: -1px;
        margin-left: 0
    }

    .btn_boot-group-vertical > .btn_boot:not(:first-child):not(:last-child) {
        border-radius: 0
    }

    .btn_boot-group-vertical > .btn_boot:first-child:not(:last-child) {
        border-top-left-radius: 4px;
        border-top-right-radius: 4px;
        border-bottom-right-radius: 0;
        border-bottom-left-radius: 0
    }

    .btn_boot-group-vertical > .btn_boot:last-child:not(:first-child) {
        border-top-left-radius: 0;
        border-top-right-radius: 0;
        border-bottom-right-radius: 4px;
        border-bottom-left-radius: 4px
    }

    .btn_boot-group-vertical > .btn_boot-group:not(:first-child):not(:last-child) > .btn_boot {
        border-radius: 0
    }

    .btn_boot-group-vertical > .btn_boot-group:first-child:not(:last-child) > .btn_boot:last-child, .btn_boot-group-vertical > .btn_boot-group:first-child:not(:last-child) > .dropdown-toggle {
        border-bottom-right-radius: 0;
        border-bottom-left-radius: 0
    }

    .btn_boot-group-vertical > .btn_boot-group:last-child:not(:first-child) > .btn_boot:first-child {
        border-top-left-radius: 0;
        border-top-right-radius: 0
    }

    .btn_boot-group-justified {
        display: table;
        width: 100%;
        table-layout: fixed;
        border-collapse: separate
    }

    .btn_boot-group-justified > .btn_boot, .btn_boot-group-justified > .btn_boot-group {
        display: table-cell;
        float: none;
        width: 1%
    }

    .btn_boot-group-justified > .btn_boot-group .btn_boot {
        width: 100%
    }

    .btn_boot-group-justified > .btn_boot-group .dropdown-menu {
        left: auto
    }

    .btn_boot {
        display: inline-block;
        padding: 6px 12px;
        margin-bottom: 0;
        font-size: 14px;
        font-weight: bolder;
        line-height: 0.9;
        text-align: center;
        white-space: nowrap;
        vertical-align: middle;
        -ms-touch-action: manipulation;
        touch-action: manipulation;
        cursor: pointer;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
        background-image: none;
        border: 1px solid transparent;
        border-radius: 4px;
    }

    .btn_boot.active.focus, .btn_boot.active:focus, .btn_boot.focus, .btn_boot:active.focus, .btn_boot:active:focus, .btn_boot:focus {

    }

    .btn_boot.focus, .btn_boot:focus, .btn_boot:hover {
        color: #333;
        text-decoration: none
    }

    .btn_boot.active, .btn_boot:active {
        background-image: none;
        outline: 0;
    }

    .btn_boot.disabled, .btn_boot[disabled], fieldset[disabled] .btn_boot {
        cursor: not-allowed;
        filter: alpha(opacity=65);
        -webkit-box-shadow: none;
        box-shadow: none;
        opacity: .65
    }

    a.btn_boot.disabled, fieldset[disabled] a.btn_boot {
        pointer-events: none
    }

    .btn_boot-default {
        color: #333;
        background-color: #eeeeee;
        border-color: #D5D5D5
    }

    .btn_boot-default.focus, .btn_boot-default:focus {
        color: #333;
        background-color: #eeeeee;
        border-color: #D5D5D5
    }

    .btn_boot-default:hover {
        color: #333;
        background-color: #eeeeee;
        border-color: #D5D5D5
    }

    .btn_boot-default.active, .btn_boot-default:active, .open > .dropdown-toggle.btn_boot-default {
        color: #333;
        background-color: #DDDDDD;
        border-color: #D5D5D5
    }

    .btn_boot-default.active.focus, .btn_boot-default.active:focus, .btn_boot-default.active:hover, .btn_boot-default:active.focus, .btn_boot-default:active:focus, .btn_boot-default:active:hover, .open > .dropdown-toggle.btn_boot-default.focus, .open > .dropdown-toggle.btn_boot-default:focus, .open > .dropdown-toggle.btn_boot-default:hover {
        color: #333;
        background-color: #DDDDDD;
        border-color: #D5D5D5
    }

    .btn_boot-default.active, .btn_boot-default:active, .open > .dropdown-toggle.btn_boot-default {
        background-image: none
    }

    .btn_boot-default.disabled.focus, .btn_boot-default.disabled:focus, .btn_boot-default.disabled:hover, .btn_boot-default[disabled].focus, .btn_boot-default[disabled]:focus, .btn_boot-default[disabled]:hover, fieldset[disabled] .btn_boot-default.focus, fieldset[disabled] .btn_boot-default:focus, fieldset[disabled] .btn_boot-default:hover {
        background-color: #fff;
        border-color: #D5D5D5
    }

    .btn_boot-default .badge {
        color: #fff;
        background-color: #8c8c8c
    }
</style>
<div class="btn_boot-group" style=" width:400px; margin: 0 auto; height: 26px; align-self: center; text-align: center;" innerId="group">
    <button type="button" class="btn_boot btn_boot-default" innerId="funnel">Воронка</button>
    <button type="button" class="btn_boot btn_boot-default active" innerId="canban">Поток</button>
    <button type="button" class="btn_boot btn_boot-default " innerId="dashboard">Аналитика</button>
    <button type="button" class="btn_boot btn_boot-default " innerId="productivity">Продуктивность</button>
</div>

JAVASCRIPT код:


$(".btn_boot-group > .btn_boot").click(function(){
    $(this).addClass("active").siblings().removeClass("active");
});

var funnel = jQuery(view.container[0]).children("[innerId='group']").children("[innerId='funnel']");
funnel.text(i18n.tr('Воронка'));
var canban = jQuery(view.container[0]).children("[innerId='group']").children("[innerId='canban']");
canban.text(i18n.tr('Поток'));
var dashboard = jQuery(view.container[0]).children("[innerId='group']").children("[innerId='dashboard']");
dashboard.text(i18n.tr('Аналитика'));
var productivity = jQuery(view.container[0]).children("[innerId='group']").children("[innerId='productivity']");
productivity.text(i18n.tr('Продуктивность'));
var funnel_cmp = view.playerView.getViewWithId('crm_form_funnel_funnel');
var canban_cmp = view.playerView.getViewWithId('crm_form_funnel_canban');
var bottom_cmp = view.playerView.getViewWithId('crm_form_funnel_bottom_sum');
var dashboard_cmp = view.playerView.getViewWithId('crm_form_funnel_dashboard');
var productivity_cmp = view.playerView.getViewWithId('crm_form_funnel_productivity');
var filterTable = view.playerView.getViewWithId('crm_form_funnel_filter_panel');
model.playerModel.funnelDrawn = false;
model.playerModel.canbanDrawn = false;
funnel.click(function(){
    $('body').css('overflow', 'auto');
    funnel_cmp.setVisible(true);
    bottom_cmp.setVisible(true);
    canban_cmp.setVisible(false);
    productivity_cmp.setVisible(false);
    dashboard_cmp.setVisible(false);
    model.playerModel.isFunnel = true;
    filterTable.setVisible(true);
    if (!model.playerModel.funnelDrawn) {
        model.playerModel.redraw();
    }
});
canban.click(function(){
    $('body').css('overflow', 'auto');
    funnel_cmp.setVisible(false);
    canban_cmp.setVisible(true);
    bottom_cmp.setVisible(false);
    productivity_cmp.setVisible(false);
    dashboard_cmp.setVisible(false);
    model.playerModel.isFunnel = false;
    filterTable.setVisible(true);
    if (!model.playerModel.canbanDrawn) {
        model.playerModel.redraw();
    }
});
dashboard.click(function(){
    $('body').css('overflow', 'auto');
    funnel_cmp.setVisible(false);
    bottom_cmp.setVisible(false);
    canban_cmp.setVisible(false);
    productivity_cmp.setVisible(false);
    dashboard_cmp.setVisible(true);
    dashboard_cmp.calcDim();
    filterTable.setVisible(false);
});

productivity.click(function(){
    $('body').css('overflow', 'auto');
    funnel_cmp.setVisible(false);
    bottom_cmp.setVisible(false);
    canban_cmp.setVisible(false);
    dashboard_cmp.setVisible(false);
    productivity_cmp.setVisible(true);
    productivity_cmp.calcDim();
    filterTable.setVisible(false);
});

crm_component_leads_dashboard

Свойство Значение

Код

crm_component_leads_dashboard

Использовать в формах

включен

HTML код:


<iframe src="http://%IP_adress%:5601/app/kibana#/dashboard/%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BC%D0%B0%D1%80%D0%BA%D0%B5%D1%82%D0%B8%D0%BD%D0%B3%D0%BE%D0%BC?embed=true&_g=(refreshInterval%3A('%24%24hashKey'%3A'object%3A36258'%2Cdisplay%3A'30%20seconds'%2Cpause%3A!f%2Csection%3A1%2Cvalue%3A30000)%2Ctime%3A(from%3Anow-15m%2Cmode%3Aquick%2Cto%3Anow))" height="100%" width="100%"></iframe>

crm_component_notifications

Свойство Значение

Код

crm_component_notifications

Использовать в формах

выключен

HTML код:


<style>
    .save_button_container {
        text-align: center;
        padding-top: 21px;
        padding-bottom: 21px;
    }

    .notification-container {
        width: 300px;
        position: absolute;
        bottom: 40px;
        right: 15px;
    }

    .notification {
        padding: 12px;
        text-overflow: ellipsis;
        white-space: nowrap;
        width: 275px;
        background-color: #ffffff;
        border-radius: 5px;
        box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.75);
        margin-top: 10px;

        color: #606060;
        font-size: 14px;
    }

    .info_block {
        display: flex;
    }

    .link_block {
        padding: 15px 0 15px 0;
        width: 270px;
        text-overflow: ellipsis;
        white-space: nowrap;
        overflow: hidden;
    }

    .button_success {
        display: inline-block;
        background-color: #49b785;
        color: #ffffff;
        height: 32px;
        min-width: 32px;
        padding-left: 30px;
        padding-right: 30px;
        -moz-padding-end: 25px;
        -moz-padding-start: 25px;
        border: none;
        border-radius: 4px;
        -webkit-border-radius: 4px;
        -moz-border-radius: 4px;
        font-size: 14px;
        font-weight: bold;
        margin-left: 25px;
    }

    .button_remain {
        display: inline-block;
        background-color: #ffffff;
        color: #606060;
        height: 32px;
        min-width: 32px;
        padding-left: 30px;
        padding-right: 30px;
        -moz-padding-end: 25px;
        -moz-padding-start: 25px;
        border-radius: 4px;
        -webkit-border-radius: 4px;
        -moz-border-radius: 4px;
        font-size: 14px;
        font-weight: bold;
        border: 1px solid #e2e2e2;
    }

    .notification.more-notifications {
        padding: 6px 9px 6px 15px;
        text-overflow: ellipsis;
        white-space: nowrap;
        overflow: hidden;
    }

    .comment_block {
        width: 250px;
        text-overflow: ellipsis;
        white-space: nowrap;
        overflow: hidden;
        opacity: 0.5;
    }

    .link_block a {
        font-weight: bold;
        color: #606060;
        font-size: 14px;
    }

    .ring_block {
        padding-right: 9px;
    }
</style>

JAVASCRIPT код:


var synergyURL = window.location.protocol + "//" + window.location.host + "/Synergy/";
AS.OPTIONS.coreUrl = synergyURL;

var putItem = setInterval(function () {
    var element = jQuery('.popupMenuBlack.popupMenuItemLeftBlack.createButton table.popupMenuItemBlack > tbody > tr:last');
    var elementLength = jQuery('.popupMenuBlack.popupMenuItemLeftBlack.createButton table.popupMenuItemBlack > tbody').length;
    var el2 = jQuery('.popupMenuBlack.popupMenuItemLeftBlack.createButton table.popupMenuItemBlack > tbody > tr:last [title="Напоминание"]');
    var menuHeight = jQuery('.popupMenuBlack.popupMenuItemLeftBlack.createButton table.popupMenuItemBlack').parent();
    if (elementLength == 1 && el2.length == 0) {
        element.after('<tr><td><table onmouseover="mouseOver(this)" onmouseout="mouseOut(this)" cellpadding="0" cellspacing="0" border="0" style="width: 100%; height: 24px;"><colgroup><col></colgroup><tbody><tr><td width="24px" class=""><img src="images/empty.gif" class="gwt-Image" style="width: 24px; height: 24px;"></td><td title="Напоминание" class="popup-menu-text" onclick="onItemClick()">Напоминание</td></tr></tbody></table></td></tr>')
        menuHeight.height(menuHeight.height() + 30);
    }
}, 100);

var onItemClick = function () {

    var container = jQuery('<div></div>', {id: 'form_player_container'});
    container.append(jQuery('<div></div>', {id: 'form_player_div'}));
    var buttonContainer = jQuery('<div></div>', {class: 'save_button_container'});
    var button = jQuery('<button id="save_button_task" class="button button-success" disabled>' + i18n.tr("Сохранить") + '</button>');
    buttonContainer.append(button);
    container.append(buttonContainer);

    var dialog = container.dialog({
        modal: true,
        width: 600,
        resizable: false,
        close: function (event, ui) {
            dialog.dialog('destroy').remove();
        },
        title: i18n.tr("Создание напоминания")
    });
    button.click(function () {
        var data = getData();
        if(!data){
            return;
        }
        saveTask(data, function (result) {
            notShowed.push({
                taskID: JSON.parse(result).taskID,
                taskObject: getTaskObjectArray(data.task),
                start: data.start,
                finish: data.finish,
                task: data.task
            });
            dialog.dialog('destroy').remove();
        });
    });
    jQuery('.popupMenuItemLeftBlack').hide();
    portal.createPlayer();
};

function getData() {
    var dict = portal.player.model.getModelWithId('dict').getTextValue();
    var task = portal.player.model.getModelWithId('comment').getValue();
    if (!task || task == 'null') {
        task = '';
    }
    var start = portal.player.model.getModelWithId('start').getValue();

    var lead = portal.player.model.getModelWithId('lead');
    var leadId = '';
    var leadName = '';
    if (lead) {
        leadId = lead.getValue();
        leadName = lead.getTextValue();
    }

    var deal = portal.player.model.getModelWithId('deal');
    var dealId = '';
    var dealName = '';
    if (deal) {
        dealId = deal.getValue();
        dealName = deal.getTextValue();
    }

    if(!dealId && !leadId){
        portal.player.view.getViewWithId('lead').markInvalid();
        portal.player.view.getViewWithId('deal').markInvalid();        
        AS.SERVICES.showErrorMessage(i18n.tr("Выберите лида или сделку"));
        return;
    }

    var breakChar = String.fromCharCode(13);

    var result = 'Напоминание!' + breakChar +
            dict + breakChar +
            leadName + breakChar +
            '#submodule=common&action=open_document&document_identifier=' + leadId + breakChar +
            dealName + breakChar +
            '#submodule=common&action=open_document&document_identifier=' + dealId + breakChar +
            breakChar +
            task;

    return {
        task: result,
        start: start,
        finish: start.substr(0, start.indexOf(' ')) + " 23:59:00"
    };
}

var mouseOver = function (element) {
    element.style.backgroundColor = '#E4EEF5';
};

var mouseOut = function (element) {
    element.style.backgroundColor = '';
};

var portal = {
    player: null,
    clearPlayer: function () {
        if (portal.player) {
            portal.player.destroy();
        }
        jQuery("#save_button_task").attr('disabled');
        portal.player = null;
    },
    /**
     * добавить новый проигрыватель форм
     */
    createPlayer: function (dataId) {
        portal.clearPlayer();
        portal.player = AS.FORMS.createPlayer();
        portal.player.model.on(AS.FORMS.EVENT_TYPE.valueChange, function (event, model, view) {
            var start = portal.player.model.getModelWithId('start');
            if (!start) {
                return;
            }

            var startValue = start.getValue();
            if (startValue) {
                jQuery("#save_button_task").removeAttr('disabled', 'disabled');
            } else {
                jQuery("#save_button_task").attr('disabled', 'disabled');
            }
        });

        portal.player.view.setEditable(true);

        AS.SERVICES.showWaitWindow();

        var handler = function (definition, data) {
            portal.player.model.buildModelsDefinition(definition, null);

            AS.SERVICES.hideWaitWindow();

            if (data) {
                portal.player.model.setAsfData(data);
            }
        };

        jQuery.when(loadDefaultAsfData("crm_form_task"))
                .then(function (data) {
                    jQuery.when(loadFormDefinition("crm_form_task", 0), data).then(handler);
                });


        portal.player.view.appendTo($('#form_player_div'));
    }
};

function loadDefaultAsfData(formCode) {
    return AS.FORMS.ApiUtils.simpleAsyncGet('rest/api/asforms/getDefaultContent?formCode=' + formCode);
}

function loadFormDefinition(code, version) {
    if (version) {
        return AS.FORMS.ApiUtils.simpleAsyncGet('rest/api/asforms/form_ext?formCode=' + code + "&version=" + version);
    } else {
        return AS.FORMS.ApiUtils.simpleAsyncGet('rest/api/asforms/form_ext?formCode=' + code);
    }
}

function loadTasks(handler) {
    var currentDate = $.datepicker.formatDate('yy-mm-dd', new Date());
    var finish = new Date();
    finish.setDate(finish.getDate() + 7);
    var finishDate = $.datepicker.formatDate('yy-mm-dd', finish);
    return AS.FORMS.ApiUtils.simpleAsyncGet('rest/api/diary/tasks/' + AS.OPTIONS.currentUser.userId + '/all?start=' + currentDate + '&finish=' + finishDate, handler);
}

function completeTask(taskID) {
    return AS.FORMS.ApiUtils.simpleAsyncGet('rest/api/diary/tasks/complete?taskID=' + taskID);
}

function remainLater(data, handler) {
    return saveTask(data);
}

function saveTask(data, handler) {
    return AS.FORMS.ApiUtils.simpleAsyncPost('rest/api/diary/tasks/' + AS.OPTIONS.currentUser.userId + '/save',
            AS.FORMS.ApiUtils.getHandler(handler, true), "text", data, undefined, function () {
            });
}

function createNotification(taskObject, taskID) {

    var remain = jQuery('<button class="button_remain" taskID="' + taskID + '">' + i18n.tr("Отложить") + '</button>');
    var close = jQuery('<button class="button_success" taskID="' + taskID + '">' + i18n.tr("Закрыть") + '</button>');
    close.click(function (event) {
        var button = jQuery(event.target);
        var taskID = button.attr('taskID');
        completeTask(taskID);
        for (var i = 0; i < showed.length; i++) {
            if (showed[i].taskID === taskID) {
                showed.splice(i, 1);
                break;
            }
        }
        showNotify();
    });

    remain.click(function (event) {
        var button = jQuery(event.target);
        var taskID = button.attr('taskID');
        for (var i = 0; i < showed.length; i++) {
            if (showed[i].taskID === taskID) {
                var element = showed[i];
                var now = new Date();
                now.setMinutes(now.getMinutes() + 15);
                element.start = AS.FORMS.DateUtils.formatDate(now, '${yyyy}-${mm}-${dd} ${HH}:${MM}:${SS}');

                if (new Date(element.finish).getTime() < new Date(element.start).getTime()) {
                    now = new Date(element.finish);
                    now.setMinutes(now.getMinutes() + 15);
                    element.finish = AS.FORMS.DateUtils.formatDate(now, '${yyyy}-${mm}-${dd} ${HH}:${MM}:${SS}');
                }
                remainLater(element);
                notShowed.push(element);
                showed.splice(i, 1);
                break;
            }
        }
        showNotify();
    });

    var buttonBlock = jQuery('<div></div>', {class: 'button_block'});
    buttonBlock.append(remain);
    buttonBlock.append(close);

    var infoBlock = jQuery('<div></div>', {class: 'info_block'});
    var ring = jQuery('<div class="ring_block"><img src="data:image/jpeg;base64, ' + ringBase64 + '"/></div>');
    infoBlock.append(ring);

    var textInfo = jQuery('<div></div>', {class: 'text_info'});
    var dictValue = jQuery('<div title="' + _.escape(taskObject[1]) + '" class="dict_block">' + taskObject[1] + '</div>');
    textInfo.append(dictValue);
    var comment = jQuery('<div title="' + _.escape(taskObject[7]) + '" class="comment_block">' + taskObject[7] + '</div>');
    textInfo.append(comment);
    infoBlock.append(textInfo);

    var linkBlock = jQuery('<div class="link_block"><a title="' + _.escape(taskObject[2]) + '" href="' + taskObject[3] + '">' + taskObject[2] + '</a></div>');
    var linkDealBlock = jQuery('<div class="link_block"><a title="' + _.escape(taskObject[4]) + '" href="' + taskObject[5] + '">' + taskObject[4] + '</a></div>');

    var element = jQuery("<div class='notification'></div>");

    element.append(infoBlock);
    if (taskObject[2]) {
        element.append(linkBlock);
    }
    if (taskObject[4]) {
        element.append(linkDealBlock);
    }
    element.append(buttonBlock);
    return element;
}

/**
 * Проверка не наступило ли время уведомления
 */
function checkTimeInArray() {
    setInterval(function () {
        var tmp = [];
        var addedNotify = false;
        notShowed.forEach(function (task) {
            var object = {
                taskID: task.taskID,
                taskObject: task.taskObject,
                start: task.start,
                task: task.task,
                finish: task.finish
            };
            if (isTimeToShow(task.start)) {
                showed.push(object);
                addedNotify = true;
            } else {
                tmp.push(object);
            }
        });
        notShowed = tmp;
        if (addedNotify) {
            showNotify();
        }
    }, 1000);
}

/**
 * Отображение уведомлений, берет массив уведомлений которые необходимо показать и отображает их
 */
function showNotify() {
    clearAllNotifications();
    var tmp = 0;
    var more = 0;
    for (var i = showed.length - 1; i >= 0; i--) {
        var task = showed[i];
        if (tmp < 3) {
            notificationPanel.append(createNotification(task.taskObject, task.taskID));
        } else {
            more++;
        }
        tmp++;
    }
    if (more > 0) {
        notificationPanel.append(jQuery('<div class="notification more-notifications">' + i18n.tr("Еще напоминаний:") + ' ' + more + '</div>'));
    }
}

/**
 * Наступило ли время для показа уведомления
 */
function isTimeToShow(start) {
    return new Date().getTime() > new Date(start).getTime();
}

/**
 * Отчистка всех уведомлений
 */
function clearAllNotifications() {
    jQuery('.notification').remove();
}

/**
 * Создана ли заметка через нужную форму
 */
function isValidTask(taskObject) {
    return taskObject[0] == 'Напоминание!' && taskObject.length == 8;
}

/**
 * Получение массива объектов (разделены переносами)
 */
function getTaskObjectArray(task) {
    return task.split(String.fromCharCode(13));
}
/**
 * Вставка панели уведомлений
 */
jQuery(document).ready(function () {
    var checkExist = setInterval(function () {
        if (AS.OPTIONS.login && AS.OPTIONS.login != '') {
            addPanel();
            clearInterval(checkExist);
        }
    }, 100);
});

var notificationPanel = jQuery("<div class='notification-container'></div>");
var showed = [];
var notShowed = [];
var loaded = false;
function addPanel() {
    if (!loaded) {
        loaded = true;
        jQuery("body").append(notificationPanel);
        notificationPanel.show(function () {
            loadTasks(function (data) {
                clearAllNotifications();
                data.forEach(function (task) {
                    var taskObject = getTaskObjectArray(task.task);
                    if (isValidTask(taskObject)) {
                        var object = {
                            taskID: task.taskID,
                            taskObject: taskObject,
                            start: task.start,
                            task: task.task,
                            finish: task.finish
                        };
                        if (isTimeToShow(task.start)) {
                            showed.push(object);
                        } else {
                            notShowed.push(object);
                        }
                    }
                });
                checkTimeInArray();
                showNotify();
            });
        });
    }
}

//Иконка колокольчика
var ringBase64 = 'iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAADBSURBVHjazJSxDoIwEIa/Etkc9AEclAchrizMbMaEnTegr2GcfQPiyovgZgLv4FAXlQo9hRATb2rv7rvr31yrDOPMG5nP7LnY2l5FBJyx2pcfO0QUFERDj+QRAxC7on1XQkUKQEpFImp4WMoB9dqtOTHn+CbP2KJXXPA7JW5suEqis146+GSyhtB5Z6EMBE4gkIGFE1hOGo0/B7SYpV2AJheBvEXa0fjy9ErVHT41RXSNwVAPB/Y0NOxcIfXzX+M+ACEjIJk9xFSpAAAAAElFTkSuQmCC';

crm_component_registry_chooser

Свойство Значение

Код

crm_component_registry_chooser

Использовать в формах

включен

HTML код:


<style>
.edit {
    border: 1px solid black;
    float: right;
    background: url('light/images/buttons/dark.gray/edit.png') 50%;
    width: 30px;
    height: 22px;
    background-repeat: no-repeat;
    border-radius: 5px;
    border-color: gray;
}
.edited{
    background-color: #efefef;
}
</style>

<div innerId="textView" style="text-decoration:underline; cursor:pointer;width:calc(100% ); color:#06f; margin-bottom:2px"></div>
<input type="text" class="asf-textBox" innerId="name" style="width:calc(100% )"/>
<div style="color:#606060; text-decoration:underline" class="asf-InlineBlock asf-cursorPointer" innerId="add">+Создать</div>
<div style="color:#606060; margin-left:10px; text-decoration:underline" class="asf-InlineBlock asf-cursorPointer" innerId="browse">Выбрать из реестра</div>
<div style="color:#606060; margin-left:10px; text-decoration:underline" class="asf-InlineBlock asf-cursorPointer" innerId="delete">&#10005; Удалить</div>

JAVASCRIPT код:


/**
 * обновить текстовое представление записи реестра
 */
model.updateTextView = function () {
    if (!model.getValue()) {
        model.textValue = "";
        model.asfDataId = null;
        model.trigger(AS.FORMS.EVENT_TYPE.dataLoad, [model]);
        return;
    }
    AS.FORMS.ApiUtils.getAsfDataUUID(model.getValue(), function (newAsfDataId) {
        model.asfDataId = newAsfDataId;
        AS.FORMS.ApiUtils.getDocMeaningContent(registry.registryID, newAsfDataId, function (text) {
            if (text === null || text === '') {
                model.textValue = i18n.tr('Документ');
            } else {
                model.textValue = text;
            }
            model.trigger(AS.FORMS.EVENT_TYPE.dataLoad, [model]);
        });
    });
};

/**
 * получить тесктовое представление записи реестра
 * @returns {string|string|*}
 */
model.getTextValue = function () {
    return model.textValue;
};

// подписываемся на событие модели об изменении содержания, чтобы подгрузить дополнительные данные
model.on(AS.FORMS.EVENT_TYPE.valueChange, function () {
    model.updateTextView();
});

/**
 * метод реализовывает вставку asfData
 * @param asfData
 */
model.setAsfData = function (asfData) {
    model.setValue(asfData.key);
};

/**
 * метод реализовывает получение данных компонента для сохранения
 * @param blockNumber
 * @returns {*}
 */
model.getAsfData = function (blockNumber) {
    return AS.FORMS.ASFDataUtils.getBaseAsfData(model.asfProperty, blockNumber, model.textValue, model.value);
};


/* инициализация отображения */


/**
 * реестр
 * @type {object}
 */
var registry = null;
/**
 * видимые колонки реестра
 * @type {Array}
 */
var registryColumns = [];


/**
 * поле ввода для поиска записей реестра
 * @type {XMLList|*}
 */
var input = jQuery(view.container).children("[innerId='name']");
/**
 * поле для отображения выбранной записи реестра
 * @type {XMLList|*}
 */
var textView = jQuery(view.container).children("[innerId='textView']");
/**
 * кнопка добавления записи
 * @type {XMLList|*}
 */
var addIcon = jQuery(view.container).children("[innerId='add']");
/**
 * кнопка выбора записи из реестра
 * @type {XMLList|*}
 */
var browseIcon = jQuery(view.container).children("[innerId='browse']");
/**
 * кнопка удаления текущей выбранной записи
 * @type {XMLList|*}
 */
var deleteIcon = jQuery(view.container).children("[innerId='delete']");

// кнопку удаления текущей выбраннйо записи скрываем
deleteIcon.hide();

// по нажатию на кнопку "выбрать из реестра" открываем стандартный диалог выбра записи реестра
browseIcon.click(function () {
    AS.SERVICES.showRegisterLinkDialog(registry, function (documentId) {
        model.setValue(documentId);
    });
});

// по нажатию на кнопку "создать" открываем форму создания записи реестра
addIcon.click(function () {
    if (!registry.rr_create) {
        alert("У вас нет прав на создание записей данного реестра");
        return;
    }

    var createPlayerDiv = jQuery("<div>");
    createPlayerDiv.css("width", "1000px");
    createPlayerDiv.css("height", "700px");

    createPlayerDiv.css("border", "1px solid #afafaf");

    var saveButton = jQuery("<button>", {class: "ns-approveButton ns-basicChooserApplyButton"});
    saveButton.button();
    saveButton.html(i18n.tr("Создать"));
    saveButton.css("margin", "auto");
    saveButton.css("display", "block");
    saveButton.css("margin-top", "10px");
    saveButton.css("margin-bottom", "10px");

    var player = AS.FORMS.createPlayer();

    player.view.setEditable(true);
    player.showFormData(registry.formId);
    player.view.appendTo(createPlayerDiv);

    player.model.on(AS.FORMS.EVENT_TYPE.dataLoad, function () {
        console.log(player.model);
        var registryModel = null;
        if (player.model.formCode === 'crm_form_contact') {
            registryModel = player.model.getModelWithId('crm_form_contact_lead_lead', 'crm_form_contact_lead');
        }
        if (player.model.formCode === 'crm_form_account') {
            registryModel = player.model.getModelWithId('crm_form_account_lead_lead', 'crm_form_account_lead');
        }
        if (player.model.formCode === 'crm_form_dealActivity') {
            registryModel = player.model.getModelWithId('crm_form_dealActivity_main_deal');
        }
        if (player.model.formCode === 'crm_form_leadActivity') {
            registryModel = player.model.getModelWithId('crm_form_leadActivity_main_lead');
        }
        if (registryModel != null) {
            registryModel.setValue(AS.SERVICES.getParameterByName("document_identifier", window.location.href));
        }
    });

    createPlayerDiv.append(saveButton);


    createPlayerDiv.dialog({
        width: 1000,
        height: 700,
        modal: true
    });


    saveButton.click(function () {
        var valid = player.model.isValid();
        if (!valid) {
            alert(i18n.tr("Введите все обязательные поля"));
            return;
        }

        AS.SERVICES.showWaitWindow();
        AS.FORMS.ApiUtils.simpleAsyncGet("rest/api/registry/create_doc?registryID=" + registry.registryID, function (result) {
            if (result.errorCode != 0) {
                AS.SERVICES.hideWaitWindow();
                alert(i18n.tr("Во время сохранения данных по форме произошли ошибки. Обратитесь к администратору"));
                return;
            }
            player.model.asfDataId = result.dataUUID;
            player.saveFormData(function (result) {
                AS.SERVICES.hideWaitWindow();
                if (_.isUndefined(result)) {
                    alert(i18n.tr("Во время сохранения данных по форме произошли ошибки. Обратитесь к администратору"));
                    return;
                };


                createPlayerDiv.dialog("destroy");

                AS.FORMS.ApiUtils.getDocumentIdentifier(result, function (documentID) {
                    model.setValue(documentID);
                });

            });
        });

    });


});


// по нажатию на кнопку удалить  - удаляем выбранное значение
deleteIcon.click(function(){
    model.setValue(null);
});


// по нажатию на текстовое отображение  - открываем запись реестра на просмотр
textView.click(function () {
    var createPlayerDiv = jQuery("<div>");
    createPlayerDiv.css("width", "1000px");
    createPlayerDiv.css("height", "700px");

    var editButton = jQuery('<div class="edit"></div>');

    var saveButton = jQuery("<button>", {class: "ns-approveButton ns-basicChooserApplyButton"});
    saveButton.button();
    saveButton.html(i18n.tr("Сохранить"));
    saveButton.css("margin", "auto");
    saveButton.css("display", "block");
    saveButton.css("margin-top", "10px");
    saveButton.css("margin-bottom", "10px");

    if (registry.code == 'crm_registry_leadActivities' || registry.code == 'crm_registry_dealActivities') {
        createPlayerDiv.append(editButton);

        editButton.click(function () {
            if (player.view.editable) {
                player.view.setEditable(false);
                editButton.removeClass('edited');
                saveButton.hide();
            } else {
                player.view.setEditable(true);
                editButton.addClass('edited');
                saveButton.show();
            }
        });
    }

    createPlayerDiv.css("border", "1px solid #afafaf");

    var player = AS.FORMS.createPlayer();

    player.view.setEditable(false);
    player.showFormData(null, null, model.asfDataId, 0);
    player.view.appendTo(createPlayerDiv);
    createPlayerDiv.append(saveButton);
    saveButton.hide();

    createPlayerDiv.dialog({
        width: 1000,
        height: 700,
        modal: true
    });

    saveButton.click(function () {
        var valid = player.model.isValid();
        if (!valid) {
            alert(i18n.tr("Введите все обязательные поля"));
            return;
        }


        AS.SERVICES.showWaitWindow();
        player.saveFormData(function (result) {
            AS.SERVICES.hideWaitWindow();
            if (_.isUndefined(result)) {
                alert(i18n.tr("Во время сохранения данных по форме произошли ошибки. Обратитесь к администратору"));
                return;
            }
            ;


            createPlayerDiv.dialog("destroy");

            AS.FORMS.ApiUtils.getDocumentIdentifier(result, function (documentID) {
                model.setValue(documentID);
            });

        });

    });
});

// скрываем или отображаем поля ввода в зависимости от того режим чтения это или редактирования
if (editable) {
    //textView.hide();
} else {
    input.hide();
    addIcon.hide();
    browseIcon.hide();
    deleteIcon.hide();
}
addIcon.text('+' + i18n.tr('Создать'));
browseIcon.text(i18n.tr('Выбрать из реестра'));
deleteIcon.html('<div style="color:#606060; margin-left:10px; text-decoration:underline" class="asf-InlineBlock asf-cursorPointer" innerId="delete">&#10005;' + i18n.tr('Удалить') + '</div>');

// реализовываем метод обновления отображения согласно изменившимся данным модели
view.updateValueFromModel = function () {
    input.val("");
    if (model.getValue()) {
        textView.css("display", "");
        input.hide();
        textView.html(model.getTextValue());
        input.hide();
        if (editable) {
            deleteIcon.css("display", "");
        } else {
            input.hide();
            addIcon.hide();
            browseIcon.hide();
            deleteIcon.hide();
        }
    } else {

        if (editable) {
            input.css("display", "");
        } else {
            input.hide();
            addIcon.hide();
            browseIcon.hide();
            deleteIcon.hide();
        }

        textView.html("");
        input.text("");
        deleteIcon.hide();
    }
};

// подписываем на событие подгрузки дополнительных данных значения
model.on(AS.FORMS.EVENT_TYPE.dataLoad, function () {
    view.updateValueFromModel();
});


/**
 * если нет прав создания записи реестра, то кнопки создать не должно быть видно
 */
function validateIconsState() {
    addIcon.hide();
    if (registry.rr_create && editable) {
        addIcon.css("display", "");
    }
}

/**
 * инициализируем компонент (получаем реестр, колонки)
 */
function initComponent() {
    AS.FORMS.ApiUtils.simpleAsyncGet('rest/api/registry/info?code=' + model.code, function (reg) {
        registry = reg;

        registry.registryID = reg.registryID;

        registryColumns = [];
        registry.columns.forEach(function (col) {
            if (col.visible != 1) {
                return;
            }
            registryColumns.push(col);
        });

        registryColumns = registryColumns.sort(function (item1, item2) {
            var number1 = item1.order;
            var number2 = item2.order;
            if (number1 === number2) {
                if (item1.name < item2.name) {
                    return -1;
                } else if (item1.name > item2.name) {
                    return 1;
                }
            } else {
                if (number1 === 0) {
                    return 1;
                } else if (number2 === 0) {
                    return -1;
                } else if (number1 < number2) {
                    return -1;
                } else {
                    return 1;
                }
            }
            return 0;
        });
        model.updateTextView();
        view.updateValueFromModel();
        validateIconsState();
    });

}

// при вводе пользователя отображаем первые 10 результатов поиска
input.on("input", function () {
    var search = input.val();
    if (search.length === 0 || !registry) {
        AS.SERVICES.showDropDown([]);
        return;
    }

    AS.FORMS.ApiUtils.getRegistryData(registry.registryID, 0, 10, search, null, null, function (foundData) {
        var values = [];
        foundData.result.forEach(function (record) {
            var value = {value: record.documentID};
            var label = "";

            registryColumns.forEach(function (column) {
                if (record.fieldValue[column.columnID] !== undefined) {
                    label += record.fieldValue[column.columnID] + " - ";
                }
            });

            value.title = label;
            values.push(value);
        });

        AS.SERVICES.showDropDown(values, input, null, function (selectedValue) {
            model.setValue(selectedValue);
            view.updateValueFromModel();
        });

    });

});


setTimeout(function () {
    initComponent();
}, 0);


AS.SERVICES.getParameterByName = function(name, url) {
    if (!url) {
        url = window.location.href;
    }
    name = name.replace(/[[]]/g, "\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/+/g, " "));
};

crm_component_social_links_accounts

Свойство Значение

Код

crm_component_social_links_accounts

Использовать в формах

включен

HTML код:


<div class='social_link_account'>
    <div class='social_element'></div>
</div>

JAVASCRIPT код:


var longIlond = model.playerModel.getModelWithId('crm_form_lead_main_account');

var checkExist = setInterval(function () {
    if (longIlond.asfDataId) {
        doAny(longIlond.asfDataId);
        clearInterval(checkExist);
    }
}, 100);

longIlond.on(AS.FORMS.EVENT_TYPE.valueChange, function (event, model) {
    var currentDataId = model.asfDataId;
    var checkExist = setInterval(function () {
        if (longIlond.asfDataId != currentDataId) {
            doAny(longIlond.asfDataId);
            clearInterval(checkExist);
        }
    }, 100);
    doAny(model.asfDataId);
});

function doAny(dataId) {
    var parent = jQuery('.social_link_account');
    jQuery.when(AS.FORMS.ApiUtils.loadAsfData(dataId, 0)).then(function (data) {
        parent.empty();
        var list = getSocial('crm_form_account_socialNetworks', 'crm_form_account_socialNetworks_socialNetworks-b', 'crm_form_account_socialNetworks_socialNetworksCombo-b', data);
        list.forEach(function (item) {
            if (item.key == 'Facebook Messenger') {
                createFacebookLink(item.value, parent);
            }
            if (item.key == 'Skype') {
                createSkypeLink(item.value, parent);
            }
        })
        list = getSocial('crm_form_account_phone', 'crm_form_account_phone_phone-b', 'crm_form_account_phone_phoneCombo-b', data);
        list.forEach(function (item) {
            if (item.key == 'Viber') {
                createViberLink(item.value, parent);
            }else if (item.key == 'Telegram') {
                createTelegramLink(item.value, parent);
            }else {
                createTelephoneLink(item.value, parent);
            }
        })
        list = getSocial('crm_form_account_email', 'crm_form_account_email_email-b', 'crm_form_account_email_emailCombo-b', data);
        list.forEach(function (item) {
           createMailLink(item.value, parent);
        });
    });
}

function createMailLink(value, parent){
    if(value){
        parent.append(jQuery('<div class="social_element mail"><a target="_blank" href="mailto:'+value+'">' + value + '</a></div>'));
    }
}

function createViberLink(value, parent){
    if(value){
        parent.append(jQuery('<div class="social_element viber"><a target="_blank" href="viber://add?number='+value+'">' + value + '</a></div>'));
    }
}

function createTelegramLink(value, parent){
    if(value){
        parent.append(jQuery('<div class="social_element telegram"><a target="_blank" href="https://telegram.me/'+value+'">' + value + '</a></div>'));
    }
}

function createTelephoneLink(value, parent){
    if(value){
        parent.append(jQuery('<div class="social_element tel"><a target="_blank" href="tel:'+value+'">' + value + '</a></div>'));
    }
}

function getSocial(idTable, valId, keyId, data) {
    var found = data.data.filter(function (item) {
        return item.id === idTable;
    });

    var list = [];
    found[0].data.forEach(function (item) {
        var id = item.id;
        if (id.indexOf(valId) !== -1) {
            var i = id.substring(id.indexOf(valId) + valId.length);
            if (!list[i]) {
                list[i] = {'value': item.value}
            } else {
                list[i].value = item.value;
            }
        }

        if (id.indexOf(keyId) !== -1) {
            var i = id.substring(id.indexOf(keyId) + keyId.length);
            if (!list[i]) {
                list[i] = {'key': item.value}
            } else {
                list[i].key = item.value;
            }
        }
    });
    return list;
}

function createFacebookLink(value, parent) {
    var id;
    if (value.indexOf("profile.php?id=") !== -1) {
        id = value.substring(value.indexOf('profile.php?id=') + 'profile.php?id='.length);
    } else {
        id = value.substring(value.indexOf('facebook.com/') + 'facebook.com/'.length);
    }
    if (id) {
        parent.append(jQuery('<div class="social_element facebook"><a target="_blank" href="http://m.me/' + id + '">' + value + '</a></div>'))
    }
}

function createSkypeLink(value, parent) {
    if(value){
        parent.append(jQuery('<div class="social_element skype"><a target="_blank" href="skype:' + value + '?call">' + i18n.tr("Позвонить") + ' ' + value + '</a></div>'))
        parent.append(jQuery('<div class="social_element skype"><a target="_blank" href="skype:' + value + '?chat">' + i18n.tr("Написать") + ' ' + value + '</a></div>'))
    }
}

crm_component_social_links_contacts

Свойство Значение

Код

crm_component_social_links_contacts

Использовать в формах

включен

HTML код:


<style>
    .social_element{
    padding-left: 20px;
    padding-bottom: 5px;
}
.skype{
    background: url('data:image/png;base64,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');
    background-repeat: no-repeat;
}
.viber{
    background: url('data:image/png;base64,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');
    background-repeat: no-repeat;
}
.facebook{
    background: url('data:image/png;base64,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');
    background-repeat: no-repeat;
}
.telegram{
    background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAV1JREFUeNqM0ztLXVEQBeDvHk4KkWBhwATsfGEXAwpGSyFFGv0BCiKa2EQECwnmJ5jGRnyk0MZ0F1JaWGlEERN/gJ1oZdLcxnczBzaHy8UFp9gza9beZ2ZNpXX9jxIGMY4hvI7YFfaxjd8puZIINGMZ08jUxwPWsIAa5ElxFSMaI8NndGIUteKm788ohlvcB3e5UByIZzfCX3xDH/YiNoOBHFOo1Cn6j1/YwD9c4BrtRf8wlUW3UxziC7oxgQ58jAZ2xbnAUB6jesAKfuAskj3YwSkWcYcPeJEItGXJc6AJL/EVx9iNkd1Fvr/8n3mYpBVz8VXxFvPYLPHflc5XWTgsxTB+RnFzEm9Bb4l7kAXxMQm+wnk07gSTEW9HW8J7xGaOo7DnpyS5FEJN0dg+3JTGvYajYheea+UCuxhLrVwLb6/GSDVYptWiOF2mQmQWW7HO7/Emcpc4qLfOTwMAifBMsFBgC4cAAAAASUVORK5CYII=');
    background-repeat: no-repeat;
}
.tel{
    background: url('data:image/png;base64,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');
    background-repeat: no-repeat;
}
.mail{
    background: url('data:image/png;base64,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');
    background-repeat: no-repeat;
}
</style>
<div class='social_link_contact'>
    <div class='social_element'></div>
</div>

JAVASCRIPT код:


var longIlond = model.playerModel.getModelWithId('crm_form_lead_main_contact');

var checkExist = setInterval(function () {
    if (longIlond.asfDataId) {
        doAny(longIlond.asfDataId);
        clearInterval(checkExist);
    }
}, 100);

longIlond.on(AS.FORMS.EVENT_TYPE.valueChange, function (event, model) {
    var currentDataId = model.asfDataId;
    var checkExist = setInterval(function () {
        if (longIlond.asfDataId != currentDataId) {
            doAny(longIlond.asfDataId);
            clearInterval(checkExist);
        }
    }, 100);
    doAny(model.asfDataId);
});

function doAny(dataId) {
    var parent = jQuery('.social_link_contact');
    jQuery.when(AS.FORMS.ApiUtils.loadAsfData(dataId, 0)).then(function (data) {
        parent.empty();
        var list = getSocial('crm_form_contact_socialNetworks', 'crm_form_contact_socialNetworks_socialNetworks-b', 'crm_form_contact_socialNetworks_socialNetworksCombo-b', data);
        list.forEach(function (item) {
            if (item.key == 'Facebook Messenger') {
                createFacebookLink(item.value, parent);
            }
            if (item.key == 'Skype') {
                createSkypeLink(item.value, parent);
            }
        })
        list = getSocial('crm_form_contact_phone', 'crm_form_contact_phone_phone-b', 'crm_form_contact_phone_phoneCombo-b', data);
        list.forEach(function (item) {
            if (item.key == 'Viber') {
                createViberLink(item.value, parent);
            }else if (item.key == 'Telegram') {
                createTelegramLink(item.value, parent);
            }else {
                createTelephoneLink(item.value, parent);
            }
        })
        list = getSocial('crm_form_contact_email', 'crm_form_contact_email_email-b', 'crm_form_contact_email_emailCombo-b', data);
        list.forEach(function (item) {
           createMailLink(item.value, parent);
        });
    });
}

function createMailLink(value, parent){
    if(value){
        parent.append(jQuery('<div class="social_element mail"><a target="_blank" href="mailto:'+value+'">' + value + '</a></div>'));
    }
}

function createViberLink(value, parent){
    if(value){
        parent.append(jQuery('<div class="social_element viber"><a target="_blank" href="viber://add?number='+value+'">' + value + '</a></div>'));
    }
}

function createTelegramLink(value, parent){
    if(value){
        parent.append(jQuery('<div class="social_element telegram"><a target="_blank" href="https://telegram.me/'+value+'">' + value + '</a></div>'));
    }
}

function createTelephoneLink(value, parent){
    if(value){
        parent.append(jQuery('<div class="social_element tel"><a target="_blank" href="tel:'+value+'">' + value + '</a></div>'));
    }
}

function getSocial(idTable, valId, keyId, data) {
    var found = data.data.filter(function (item) {
        return item.id === idTable;
    });

    var list = [];
    found[0].data.forEach(function (item) {
        var id = item.id;
        if (id.indexOf(valId) !== -1) {
            var i = id.substring(id.indexOf(valId) + valId.length);
            if (!list[i]) {
                list[i] = {'value': item.value}
            } else {
                list[i].value = item.value;
            }
        }

        if (id.indexOf(keyId) !== -1) {
            var i = id.substring(id.indexOf(keyId) + keyId.length);
            if (!list[i]) {
                list[i] = {'key': item.value}
            } else {
                list[i].key = item.value;
            }
        }
    });
    return list;
}

function createFacebookLink(value, parent) {
    var id;
    if (value.indexOf("profile.php?id=") !== -1) {
        id = value.substring(value.indexOf('profile.php?id=') + 'profile.php?id='.length);
    } else {
        id = value.substring(value.indexOf('facebook.com/') + 'facebook.com/'.length);
    }
    if (id) {
        parent.append(jQuery('<div class="social_element facebook"><a target="_blank" href="http://m.me/' + id + '">' + value + '</a></div>'))
    }
}

function createSkypeLink(value, parent) {
    if(value){
        parent.append(jQuery('<div class="social_element skype"><a target="_blank" href="skype:' + value + '?call">' + i18n.tr("Позвонить") + ' ' + value + '</a></div>'))
        parent.append(jQuery('<div class="social_element skype"><a target="_blank" href="skype:' + value + '?chat">' + i18n.tr("Написать") + ' ' + value + '</a></div>'))
    }
}

Реестры

Примечание:

В реестрах, для которых настроены централизованные фильтры, при импорте конфигурации эталонное значение для условия на поле crm_all_accessible пусто. Таким образом, условие всегда ложно, и все фильтры не содержат записей. Для настройки фильтров необходимо после импорта конфигурации каждому условию в фильтре в качестве эталонного значения установить подразделение, указанное в названии фильтра (например, в фильтре «Отдел маркетинга Астана» в качестве эталонного значения должно быть указано подразделение «Отдел маркетинга Астана»).

Маркетинговые мероприятия

Свойства реестра:

Свойство Значение

Код

crm_registry_events

Форма документа

crm_form_event

Сортировка

по дате создания

Направление сортировки

по убыванию

Права на реестр:

Группа Права

Маркетологи-менеджеры

Создание

Менеджеры по продажам

Создание

Руководитель отдела маркетинга

Создание

Руководитель отдела продаж

Создание

Центральный аппарат

Все

Фильтры:

1. «Отдел маркетинга Алматы»

Код: crm_filters_marketing_Almaty

Условие: crm_all_accessible содержит «Отдел маркетинга Алматы»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Алматы

Просмотр списка, просмотр данных

Маркетологи-специалисты по Алматы

Просмотр списка, просмотр данных

Руководитель отдела маркетинга

Все

2. «Отдел маркетинга Астана»

Код: crm_filters_marketing_Astana

Условие: crm_all_accessible содержит «Отдел маркетинга Астана»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Астане

Просмотр списка, просмотр данных

Маркетологи-специалисты по Астане

Просмотр списка, просмотр данных

Руководитель отдела маркетинга

Все

3. «Отдел продаж Алматы»

Код: crm_filters_sales_Almaty

Условие: crm_all_accessible содержит «Отдел продаж Алматы»

Права на фильтр:

Группа Права

Менеджеры по продажам Алматы

Просмотр списка, просмотр данных

Специалисты по продажам Алматы

Просмотр списка, просмотр данных

Руководитель отдела продаж

Все

4. «Отдел продаж Астана»

Код: crm_filters_sales_Astana

Условие: crm_all_accessible содержит «Отдел продаж Астана»

Права на фильтр:

Группа Права

Менеджеры по продажам Астана

Просмотр списка, просмотр данных

Специалисты по продажам Астана

Просмотр списка, просмотр данных

Руководитель отдела продаж

Все

Отображаемые поля формы:

Идентификатор колонки Название поля Номер Значащее содержимое

crm_form_event_main_name

Наименование

1

да

crm_form_event_main_cost

Стоимость

2

да

crm_form_event_main_event

Мероприятие

3

нет

crm_form_event_responsibleManager_responsible

Ответственный менеджер

4

нет

Лиды

Свойства реестра:

Свойство Значение

Код

crm_registry_lead

Форма документа

crm_form_lead

Сортировка

по полю crm_form_lead_deals_budget

Направление сортировки

по убыванию

Права на реестр:

Группа Права

Маркетологи-менеджеры

Создание

Маркетологи-специалисты

Создание

Центральный аппарат

Просмотр списка, просмотр данных

Фильтры реестров:

1. «Отдел маркетинга Алматы»

Код: crm_filters_marketing_Almaty

Условие: crm_all_accessible содержит «Отдел маркетинга Алматы»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Алматы

Все

Маркетологи-специалисты по Алматы

Все

Руководитель отдела маркетинга

Просмотр списка, просмотр данных

2. «Отдел маркетинга Астана»

Код: crm_filters_marketing_Astana

Условие: crm_all_accessible содержит «Отдел маркетинга Астана»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Астане

Все

Маркетологи-специалисты по Астане

Все

Руководитель отдела маркетинга

Просмотр списка, просмотр данных

3. «Отдел продаж Алматы»

Код: crm_filters_sales_Almaty

Условие: crm_all_accessible содержит «Отдел продаж Алматы»

Права на фильтр:

Группа Права

Менеджеры по продажам Алматы

Все

Специалисты по продажам Алматы

Все

Руководитель отдела продаж

Просмотр списка, просмотр данных

4. «Отдел продаж Астана»

Код: crm_filters_sales_Astana

Условие: crm_all_accessible содержит «Отдел продаж Астана»

Права на фильтр:

Группа Права

Менеджеры по продажам Астана

Все

Специалисты по продажам Астана

Все

Руководитель отдела продаж

Просмотр списка, просмотр данных

Отображаемые поля формы:

Идентификатор колонки Название поля Номер Значащее содержимое

crm_form_lead_main_account_name

Аккаунт

1

нет

crm_form_lead_deals_theme

Тема сотрудничества

2

да

crm_form_lead_deals_budget

Потенциальный бюджет

3

да

crm_form_lead_deals_status

Статус

4

нет

crm_form_lead_responsibleManager_responsible

Ответственный менеджер

5

нет

Сделки

Свойства реестра:

Свойство Значение

Код

crm_registry_deals

Форма документа

crm_form_deals

Сортировка

по полю ccrm_form_deal_main3_budget

Направление сортировки

по убыванию

Права на реестр:

Группа Права

Маркетологи-менеджеры

Создание

Маркетологи-специалисты

Создание

Менеджеры по продажам

Создание

Специалисты по продажам

Создание

Центральный аппарат

Просмотр списка, просмотр данных

Фильтры реестра:

1. «Отдел маркетинга Алматы»

Код: crm_filters_marketing_Almaty

Условие: crm_all_accessible содержит «Отдел маркетинга Алматы»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Алматы

Все

Маркетологи-специалисты по Алматы

Все

Руководитель отдела маркетинга

Просмотр списка, просмотр данных

2. «Отдел маркетинга Астана»

Код: crm_filters_marketing_Astana

Условие: crm_all_accessible содержит «Отдел маркетинга Астана»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Астане

Все

Маркетологи-специалисты по Астане

Все

Руководитель отдела маркетинга

Просмотр списка, просмотр данных

3. «Отдел продаж Алматы»

Код: crm_filters_sales_Almaty

Условие: crm_all_accessible содержит «Отдел продаж Алматы»

Права на фильтр:

Группа Права

Менеджеры по продажам Алматы

Все

Специалисты по продажам Алматы

Все

Руководитель отдела продаж

Просмотр списка, просмотр данных

4. «Отдел продаж Астана»

Код: crm_filters_sales_Astana

Условие: crm_all_accessible содержит «Отдел продаж Астана»

Права на фильтр:

Группа Права

Менеджеры по продажам Астана

Все

Специалисты по продажам Астана

Все

Руководитель отдела продаж

Просмотр списка, просмотр данных

Отображаемые поля формы:

Идентификатор колонки Название поля Номер Значащее содержимое

crm_form_deal_main1_lead

Лид

1

нет

crm_form_deal_main2_theme

Тема сотрудничества

2

да

crm_form_deal_main3_budget

Бюджет

3

да

crm_form_deal_responsibleManager_responsible

Ответственный менеджер

4

нет

Аккаунты

Свойства реестра:

Свойство Значение

Код

crm_registry_accounts

Форма документа

crm_form_accounts

Сортировка

по дате создания

Направление сортировки

по убыванию

Права на реестр:

Группа Права

Маркетологи-менеджеры

Создание

Маркетологи-специалисты

Создание

Менеджеры по продажам

Создание

Специалисты по продажам

Создание

Центральный аппарат

Просмотр списка, просмотр данных

Фильтры реестра:

1. «Отдел маркетинга Алматы»

Код: crm_filters_marketing_Almaty

Условие: crm_all_accessible содержит «Отдел маркетинга Алматы»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Алматы

Все

Маркетологи-специалисты по Алматы

Все

Руководитель отдела маркетинга

Просмотр списка, просмотр данных

2. «Отдел маркетинга Астана»

Код: crm_filters_marketing_Astana

Условие: crm_all_accessible содержит «Отдел маркетинга Астана»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Астане

Все

Маркетологи-специалисты по Астане

Все

Руководитель отдела маркетинга

Просмотр списка, просмотр данных

3. «Отдел продаж Алматы»

Код: crm_filters_sales_Almaty

Условие: crm_all_accessible содержит «Отдел продаж Алматы»

Права на фильтр:

Группа Права

Менеджеры по продажам Алматы

Все

Специалисты по продажам Алматы

Все

Руководитель отдела продаж

Просмотр списка, просмотр данных

4. «Отдел продаж Астана»

Код: crm_filters_sales_Astana

Условие: crm_all_accessible содержит «Отдел продаж Астана»

Права на фильтр:

Группа Права

Менеджеры по продажам Астана

Все

Специалисты по продажам Астана

Все

Руководитель отдела продаж

Просмотр списка, просмотр данных

Отображаемые поля формы:

Идентификатор колонки Название поля Номер Значащее содержимое

crm_form_account_main_name

Наименование

1

да

crm_form_account_main_info

Описание

2

нет

crm_form_account_responsibleManager_responsible

Ответственный менеджер

3

нет

Контакты

Свойства реестра:

Свойство Значение

Код

crm_registry_contacts

Форма документа

crm_form_contacts

Сортировка

по дате создания

Направление сортировки

по убыванию

Права на реестр:

Группа Права

Маркетологи-менеджеры

Создание

Маркетологи-специалисты

Создание

Менеджеры по продажам

Создание

Специалисты по продажам

Создание

Центральный аппарат

Просмотр списка, просмотр данных

Фильтры реестра:

1. «Отдел маркетинга Алматы»

Код: crm_filters_marketing_Almaty

Условие: crm_all_accessible содержит «Отдел маркетинга Алматы»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Алматы

Все

Маркетологи-специалисты по Алматы

Все

Руководитель отдела маркетинга

Просмотр списка, просмотр данных

2. «Отдел маркетинга Астана»

Код: crm_filters_marketing_Astana

Условие: crm_all_accessible содержит «Отдел маркетинга Астана»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Астане

Все

Маркетологи-специалисты по Астане

Все

Руководитель отдела маркетинга

Просмотр списка, просмотр данных

3. «Отдел продаж Алматы»

Код: crm_filters_sales_Almaty

Условие: crm_all_accessible содержит «Отдел продаж Алматы»

Права на фильтр:

Группа Права

Менеджеры по продажам Алматы

Все

Специалисты по продажам Алматы

Все

Руководитель отдела продаж

Просмотр списка, просмотр данных

4. «Отдел продаж Астана»

Код: crm_filters_sales_Astana

Условие: crm_all_accessible содержит «Отдел продаж Астана»

Права на фильтр:

Группа Права

Менеджеры по продажам Астана

Все

Специалисты по продажам Астана

Все

Руководитель отдела продаж

Просмотр списка, просмотр данных

Отображаемые поля формы:

Идентификатор колонки Название поля Номер Значащее содержимое

crm_form_contact_main_fullName

Полное имя

1

да

crm_form_contact_main_position

Должность

2

нет

crm_form_contact_responsibleManager

Ответственный менеджер

3

нет

% комиссии лидогенерации

Свойства реестра:

Свойство Значение

Код

crm_registry_deal_comission

Форма документа

crm_form_deal_comission

Группа

менеджеры по продажам

Права

Просмотр списка, Просмотр данных, Изменение, Редактирование

Сортировка

по дате создания

Направление сортировки

по убыванию

Отображаемые поля формы:

Идентификатор колонки Название поля Номер Значащее содержимое

crm_form_deal_comission_main

% комиссии

нет

% комиссия продаж

Свойства реестра:

Свойство Значение

Код

crm_registry_lead_comission

Форма документа

crm_form_lead_comission

Группа

менеджеры по продажам

Права

Просмотр списка, Просмотр данных, Изменение, Редактирование

Сортировка

по дате создания

Направление сортировки

по убыванию

Отображаемые поля формы:

Идентификатор колонки Название поля Номер Значащее содержимое

crm_form_deal_comission_main

% комиссии

нет

Темы сотрудничества

Свойства реестра:

Свойство Значение

Код

crm_registry_themes

Форма документа

crm_form_theme

Сортировка

по полю crm_form_theme_theme

Направление сортировки

по возрастанию

Права на реестр:

Группа Права

Руководитель отдела маркетинга

Создание

Руководитель отдела продаж

Создание

Центральный аппарат

Все

Фильтры:

1. «Отдел маркетинга Алматы»

Код: crm_filters_marketing_Almaty

Условие: crm_all_accessible содержит «Отдел маркетинга Алматы»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Алматы

Просмотр списка, просмотр данных

Маркетологи-специалисты по Алматы

Просмотр списка, просмотр данных

Руководитель отдела маркетинга

Все

2. «Отдел маркетинга Астана»

Код: crm_filters_marketing_Astana

Условие: crm_all_accessible содержит «Отдел маркетинга Астана»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Астане

Просмотр списка, просмотр данных

Маркетологи-специалисты по Астане

Просмотр списка, просмотр данных

Руководитель отдела маркетинга

Все

3. «Отдел продаж Алматы»

Код: crm_filters_sales_Almaty

Условие: crm_all_accessible содержит «Отдел продаж Алматы»

Права на фильтр:

Группа Права

Менеджеры по продажам Алматы

Просмотр списка, просмотр данных

Специалисты по продажам Алматы

Просмотр списка, просмотр данных

Руководитель отдела продаж

Все

4. «Отдел продаж Астана»

Код: crm_filters_sales_Astana

Условие: crm_all_accessible содержит «Отдел продаж Астана»

Права на фильтр:

Группа Права

Менеджеры по продажам Астана

Просмотр списка, просмотр данных

Специалисты по продажам Астана

Просмотр списка, просмотр данных

Руководитель отдела продаж

Все

Отображаемые поля формы:

Идентификатор колонки Название поля Номер Значащее содержимое

crm_form_theme_theme

Тема сотрудничества

1

да

Каталог товаров и услуг

Свойства реестра:

Свойство Значение

Код

crm_registry_items

Форма документа

crm_form_item

Сортировка

по полю реестра crm_form_item_name

Направление сортировки

по возрастанию

Права на реестр:

Группа Права

Руководитель отдела маркетинга

Создание

Руководитель отдела продаж

Создание

Центральный аппарат

Все

Фильтры:

1. «Отдел маркетинга Алматы»

Код: crm_filters_marketing_Almaty

Условие: crm_all_accessible содержит «Отдел маркетинга Алматы»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Алматы

Просмотр списка, просмотр данных

Маркетологи-специалисты по Алматы

Просмотр списка, просмотр данных

Руководитель отдела маркетинга

Все

2. «Отдел маркетинга Астана»

Код: crm_filters_marketing_Astana

Условие: crm_all_accessible содержит «Отдел маркетинга Астана»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Астане

Просмотр списка, просмотр данных

Маркетологи-специалисты по Астане

Просмотр списка, просмотр данных

Руководитель отдела маркетинга

Все

3. «Отдел продаж Алматы»

Код: crm_filters_sales_Almaty

Условие: crm_all_accessible содержит «Отдел продаж Алматы»

Права на фильтр:

Группа Права

Менеджеры по продажам Алматы

Просмотр списка, просмотр данных

Специалисты по продажам Алматы

Просмотр списка, просмотр данных

Руководитель отдела продаж

Все

4. «Отдел продаж Астана»

Код: crm_filters_sales_Astana

Условие: crm_all_accessible содержит «Отдел продаж Астана»

Права на фильтр:

Группа Права

Менеджеры по продажам Астана

Просмотр списка, просмотр данных

Специалисты по продажам Астана

Просмотр списка, просмотр данных

Руководитель отдела продаж

Все

Отображаемые поля формы:

Идентификатор колонки Название поля Номер Значащее содержимое

crm_form_item_name

Наименование товара

1

да

crm_form_item_price

Цена

2

нет

crm_form_item_theme

Тема сотрудничества

3

нет

Реестры шаблонов документов

Для всех реестров ниже настроено событие активации:

Маршрут активации - Действия:

  • Тип действия - Отправка документа по форме

  • Название - Отправка документа по форме

  • Адресат - email

Договоры поставки (единовременная оплата)

Свойства реестра:

Свойство Значение

Код

crm_registry_contracts_delivery_100

Форма документа

crm_form_contract_delivery_100

Сортировка

по дате создания

Направление сортировки

по убыванию

Права на реестр:

Группа Права

Маркетологи-менеджеры

Создание

Маркетологи-специалисты

Создание

Менеджеры по продажам

Создание

Специалисты по продажам

Создание

Центральный аппарат

Просмотр списка, просмотр данных

Фильтры реестра:

1. «Отдел маркетинга Алматы»

Код: crm_filters_marketing_Almaty

Условие: crm_all_accessible содержит «Отдел маркетинга Алматы»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Алматы

Все

Маркетологи-специалисты по Алматы

Все

Руководитель отдела маркетинга

Просмотр списка, просмотр данных

2. «Отдел маркетинга Астана»

Код: crm_filters_marketing_Astana

Условие: crm_all_accessible содержит «Отдел маркетинга Астана»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Астане

Все

Маркетологи-специалисты по Астане

Все

Руководитель отдела маркетинга

Просмотр списка, просмотр данных

3. «Отдел продаж Алматы»

Код: crm_filters_sales_Almaty

Условие: crm_all_accessible содержит «Отдел продаж Алматы»

Права на фильтр:

Группа Права

Менеджеры по продажам Алматы

Все

Специалисты по продажам Алматы

Все

Руководитель отдела продаж

Просмотр списка, просмотр данных

4. «Отдел продаж Астана»

Код: crm_filters_sales_Astana

Условие: crm_all_accessible содержит «Отдел продаж Астана»

Права на фильтр:

Группа Права

Менеджеры по продажам Астана

Все

Специалисты по продажам Астана

Все

Руководитель отдела продаж

Просмотр списка, просмотр данных

Отображаемые поля формы:

Идентификатор колонки Название поля Номер Значащее содержимое

crm_form_contract_delivery_100_contract_number

Номер договора

1

да

crm_form_contract_delivery_100_contract_date

Дата договора

2

нет

crm_form_contract_delivery_100_theme

Тема договора

3

да

crm_form_contract_delivery_100_client_account

Заказчик

4

да

crm_form_contract_delivery_100_sum_total

Сумма договора

5

нет

Договоры поставки (оплата частями)

Свойства реестра:

Свойство Значение

Код

crm_registry_contracts_delivery_part

Форма документа

crm_form_contract_delivery_part

Сортировка

по дате создания

Направление сортировки

по убыванию

Права на реестр:

Группа Права

Маркетологи-менеджеры

Создание

Маркетологи-специалисты

Создание

Менеджеры по продажам

Создание

Специалисты по продажам

Создание

Центральный аппарат

Просмотр списка, просмотр данных

Фильтры реестра:

1. «Отдел маркетинга Алматы»

Код: crm_filters_marketing_Almaty

Условие: crm_all_accessible содержит «Отдел маркетинга Алматы»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Алматы

Все

Маркетологи-специалисты по Алматы

Все

Руководитель отдела маркетинга

Просмотр списка, просмотр данных

2. «Отдел маркетинга Астана»

Код: crm_filters_marketing_Astana

Условие: crm_all_accessible содержит «Отдел маркетинга Астана»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Астане

Все

Маркетологи-специалисты по Астане

Все

Руководитель отдела маркетинга

Просмотр списка, просмотр данных

3. «Отдел продаж Алматы»

Код: crm_filters_sales_Almaty

Условие: crm_all_accessible содержит «Отдел продаж Алматы»

Права на фильтр:

Группа Права

Менеджеры по продажам Алматы

Все

Специалисты по продажам Алматы

Все

Руководитель отдела продаж

Просмотр списка, просмотр данных

4. «Отдел продаж Астана»

Код: crm_filters_sales_Astana

Условие: crm_all_accessible содержит «Отдел продаж Астана»

Права на фильтр:

Группа Права

Менеджеры по продажам Астана

Все

Специалисты по продажам Астана

Все

Руководитель отдела продаж

Просмотр списка, просмотр данных

Отображаемые поля формы:

Идентификатор колонки Название поля Номер Значащее содержимое

crm_form_contract_delivery_part_contract_number

Номер договора

1

да

crm_form_contract_delivery_part_contract_date

Дата договора

2

нет

crm_form_contract_delivery_part_theme

Тема договора

3

да

crm_form_contract_delivery_part_client_account

Заказчик

4

да

crm_form_contract_delivery_part_sum_total

Сумма договора

5

нет

Акты приема-передачи товара

Свойства реестра:

Свойство Значение

Код

crm_registry_certificates

Форма документа

crm_form_certificate

Сортировка

по дате создания

Направление сортировки

по убыванию

Права на реестр:

Группа Права

Маркетологи-менеджеры

Создание

Маркетологи-специалисты

Создание

Менеджеры по продажам

Создание

Специалисты по продажам

Создание

Центральный аппарат

Просмотр списка, просмотр данных

Фильтры реестра:

1. «Отдел маркетинга Алматы»

Код: crm_filters_marketing_Almaty

Условие: crm_all_accessible содержит «Отдел маркетинга Алматы»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Алматы

Все

Маркетологи-специалисты по Алматы

Все

Руководитель отдела маркетинга

Просмотр списка, просмотр данных

2. «Отдел маркетинга Астана»

Код: crm_filters_marketing_Astana

Условие: crm_all_accessible содержит «Отдел маркетинга Астана»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Астане

Все

Маркетологи-специалисты по Астане

Все

Руководитель отдела маркетинга

Просмотр списка, просмотр данных

3. «Отдел продаж Алматы»

Код: crm_filters_sales_Almaty

Условие: crm_all_accessible содержит «Отдел продаж Алматы»

Права на фильтр:

Группа Права

Менеджеры по продажам Алматы

Все

Специалисты по продажам Алматы

Все

Руководитель отдела продаж

Просмотр списка, просмотр данных

4. «Отдел продаж Астана»

Код: crm_filters_sales_Astana

Условие: crm_all_accessible содержит «Отдел продаж Астана»

Права на фильтр:

Группа Права

Менеджеры по продажам Астана

Все

Специалисты по продажам Астана

Все

Руководитель отдела продаж

Просмотр списка, просмотр данных

Отображаемые поля формы:

Идентификатор колонки Название поля Номер Значащее содержимое

crm_form_certificate_table3_contract

Основание договора

1

да

crm_form_certificate_table2_date

Дата акта

2

нет

Коммерческое предложение
Свойство Значение

Код

crm_registry_offer

Форма документа

crm_form_offer

Сортировка

по дате создания

Направление сортировки

по убыванию

Права на реестр:

Группа Права

Маркетологи-менеджеры

Создание

Маркетологи-специалисты

Создание

Менеджеры по продажам

Создание

Специалисты по продажам

Создание

Центральный аппарат

Просмотр списка, просмотр данных

Фильтры реестра:

1. «Отдел маркетинга Алматы»

Код: crm_filters_marketing_Almaty

Условие: crm_all_accessible содержит «Отдел маркетинга Алматы»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Алматы

Все

Маркетологи-специалисты по Алматы

Все

Руководитель отдела маркетинга

Просмотр списка, просмотр данных

2. «Отдел маркетинга Астана»

Код: crm_filters_marketing_Astana

Условие: crm_all_accessible содержит «Отдел маркетинга Астана»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Астане

Все

Маркетологи-специалисты по Астане

Все

Руководитель отдела маркетинга

Просмотр списка, просмотр данных

3. «Отдел продаж Алматы»

Код: crm_filters_sales_Almaty

Условие: crm_all_accessible содержит «Отдел продаж Алматы»

Права на фильтр:

Группа Права

Менеджеры по продажам Алматы

Все

Специалисты по продажам Алматы

Все

Руководитель отдела продаж

Просмотр списка, просмотр данных

4. «Отдел продаж Астана»

Код: crm_filters_sales_Astana

Условие: crm_all_accessible содержит «Отдел продаж Астана»

Права на фильтр:

Группа Права

Менеджеры по продажам Астана

Все

Специалисты по продажам Астана

Все

Руководитель отдела продаж

Просмотр списка, просмотр данных

Отображаемые поля формы:

Идентификатор колонки Название поля Номер Значащее содержимое

crm_form_offer_whom_position

Должность

1

нет

crm_form_offer_whom_account

Аккаунт

2

нет

crm_form_offer_whom_fullname

ФИО

3

нет

crm_form_offer_from_user

От кого

4

нет

Счет-фактуры

Для реестра настроено событие активации:

Маршрут активации - Действия:

  • Тип действия - Отправка документа по форме

  • Название - Отправка документа по форме

  • Адресат - email

Свойства реестра:

Свойство Значение

Код

crm_registry_invoices

Форма документа

crm_form_invoice

Сортировка

по дате создания

Направление сортировки

по убыванию

Права на реестр:

Группа Права

Маркетологи-менеджеры

Создание

Маркетологи-специалисты

Создание

Менеджеры по продажам

Создание

Специалисты по продажам

Создание

Центральный аппарат

Просмотр списка, просмотр данных

Фильтры реестра:

1. «Отдел маркетинга Алматы»

Код: crm_filters_marketing_Almaty

Условие: crm_all_accessible содержит «Отдел маркетинга Алматы»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Алматы

Все

Маркетологи-специалисты по Алматы

Все

Руководитель отдела маркетинга

Просмотр списка, просмотр данных

2. «Отдел маркетинга Астана»

Код: crm_filters_marketing_Astana

Условие: crm_all_accessible содержит «Отдел маркетинга Астана»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Астане

Все

Маркетологи-специалисты по Астане

Все

Руководитель отдела маркетинга

Просмотр списка, просмотр данных

3. «Отдел продаж Алматы»

Код: crm_filters_sales_Almaty

Условие: crm_all_accessible содержит «Отдел продаж Алматы»

Права на фильтр:

Группа Права

Менеджеры по продажам Алматы

Все

Специалисты по продажам Алматы

Все

Руководитель отдела продаж

Просмотр списка, просмотр данных

4. «Отдел продаж Астана»

Код: crm_filters_sales_Astana

Условие: crm_all_accessible содержит «Отдел продаж Астана»

Права на фильтр:

Группа Права

Менеджеры по продажам Астана

Все

Специалисты по продажам Астана

Все

Руководитель отдела продаж

Просмотр списка, просмотр данных

Отображаемые поля формы:

Идентификатор колонки Название поля Номер Значащее содержимое

crm_form_invoice_number

Номер

1

да

crm_form_invoice_date

Дата

2

нет

crm_form_invoice_receiver_name

Грузополучатель

3

нет

crm_form_invoice_mainreceiver_name

Получатель

4

да

crm_form_invoice_order_summ_total

Стоимость реализации

5

да

Ответственный за сделки

Свойства реестра:

Свойство Значение

Код

crm_registry_deal_responsible

Форма документа

crm_form_deal_responsible

Группа

менеджеры-маркетологи, менеджеры по продажам

Права

Просмотр списка, Просмотр данных, Изменение, Редактирование

Сортировка

по дате создания

Направление сортировки

по убыванию

Отображаемые поля формы:

Идентификатор колонки Название поля Номер Значащее содержимое

crm_form_deal_responsible_user

Ответственный менеджер

да

План продаж

Свойства реестра:

Свойство Значение

Код

crm_registry_deals_plans

Форма документа

crm_form_sales

Сортировка

по дате создания

Направление сортировки

по убыванию

Права на реестр:

Группа Права

Руководитель отдела маркетинга

Создание

Руководитель отдела продаж

Создание

Маркетологи-менеджеры

Создание

Менеджеры по продажам

Создание

Центральный аппарат

Все

Фильтры:

1. «Отдел маркетинга»

Код: crm_filters_marketing

Условие: crm_owner содержит «Отдел маркетинга»

Права на фильтр:

Группа Права

Руководитель отдела маркетинга

Все

1. «Отдел маркетинга»

Код: crm_filters_sales

Условие: crm_owner содержит «Отдел продаж»

Права на фильтр:

Группа Права

Руководитель отдела продаж

Все

3. «Отдел маркетинга Алматы»

Код: crm_filters_marketing_Almaty

Условие: crm_owner содержит «Отдел маркетинга Алматы»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Алматы

Все

Руководитель отдела маркетинга

Просмотр списка, просмотр данных

4. «Отдел маркетинга Астана»

Код: crm_filters_marketing_Astana

Условие: crm_owner содержит «Отдел маркетинга Астана»

Права на фильтр:

Группа Права

Маркетологи-менеджеры по Астане

Все

Руководитель отдела маркетинга

Просмотр списка, просмотр данных

5. «Отдел продаж Алматы»

Код: crm_filters_sales_Almaty

Условие: crm_owner содержит «Отдел продаж Алматы»

Права на фильтр:

Группа Права

Менеджеры по продажам Алматы

Все

Руководитель отдела продаж

Просмотр списка, просмотр данных

6. «Отдел продаж Астана»

Код: crm_filters_sales_Astana

Условие: crm_owner содержит «Отдел продаж Астана»

Права на фильтр:

Группа Права

Менеджеры по продажам Астана

Все

Руководитель отдела продаж

Просмотр списка, просмотр данных

Отображаемые поля формы:

Идентификатор колонки Название поля Номер Значащее содержимое

crm_form_deal_order_sales_month

Месяц

да

crm_form_deal_order_sales_year

Год

да

crm_owner

Автор

да

Нормативы продолжительности статусов сделки

Свойства реестра:

Свойство Значение

Код

crm_registry_deal_flow_standard

Форма документа

crm_form_deal_flow_standard

Группа

менеджеры по продажам

Права

Просмотр списка, Просмотр данных, Изменение, Редактирование

Сортировка

по дате создания

Направление сортировки

по убыванию

Отображаемые поля формы:

Идентификатор колонки Название поля Номер Значащее содержимое

crm_form_deal_flow_standard_table

Нормативы продолжительности статусов сделок

нет

Группы реестров

Каталог товаров и услуг

Код группы реестров: crm_registryGroup_catalog

Реестры:

Настройки маркетинга и управления продаж

Код группы реестров: crm_registryGroup_settings

Реестры:

Справочники

Статусы лида

Код справочника: crm_dict_leadStatus.

Поля справочника:

Код Имя Комментарий Переводить

crm_dict_leadStatus_name

Название

Да

crm_dict_leadStatus_value

Порядковый номер пункта в выпадающем списке

Не может иметь значение, равное 0

Нет

crm_dict_leadStatus_quality

Качество

0 - negative

1 - positive

Нет

crm_dict_leadStatus_end

Законченность

Имеет смысл только для crm_dict_leadStatus_quality=1

0 - not end

1 - end

Нет

crm_dict_leadStatus_color

Цвет панели в воронке

Нет

crm_dict_leadStatus_buttonName

Название кнопки

Имеет смысл только для:

crm_dict_leadStatus_quality=1

crm_dict_leadStatus_end=1

Нет

Данные справочника по умолчанию:

Название Порядковый номер пункта в выпадающем списке Качество Законченность Цвет панели в воронке Название кнопки

Первичная регистрация

1

1

0

#de682d

Квалификация

2

1

0

#ee902d

Взращивание

3

1

0

#f3c02d

Подтверждение интереса

4

1

0

#c9d02c

В сделку

5

1

1

#9fcb2c

Конвертировать в сделку

Некачественный лид

6

0

#b82b2b

Если некоторые параметры не были указаны, то им присваиваются значения по умолчанию:

  • не указан crm_dict_leadStatus_quality:

    • crm_dict_leadStatus_quality=1

    • crm_dict_leadStatus_end=0

  • не указан crm_dict_leadStatus_end:

    • crm_dict_leadStatus_end=0

  • не указаны crm_dict_leadStatus_quality и crm_dict_leadStatus_end:

    • crm_dict_leadStatus_quality=1

    • crm_dict_leadStatus_end=0

  • не указан crm_dict_leadStatus_color:

    • crm_dict_leadStatus_color=#f3c02d

Запись с данными crm_dict_leadStatus_quality=1 и crm_dict_leadStatus_end=1 должна быть одна. Если таких записей несколько, то данные значения применяются только для первой созданной записи. Остальным записям из списка присваивается значение crm_dict_leadStatus_end=0.

Список статусов лида, для которых crm_dict_leadStatus_value=0 либо не указан вовсе, сортируются по параметру crm_dict_leadStatus_name в локали С в алфавитном порядке.

Статусы сделки

Код справочника: crm_dict_dealStatus.

Поля справочника:

Код Имя Комментарий Переводить

crm_dict_dealStatus_type

Тип

Да

crm_dict_dealStatus_value

Порядковый номер пункта в выпадающем списке

Не может иметь значение, равное 0

Нет

crm_dict_dealStatus_quality

Качество

0 - negative

1 - positive

Нет

crm_dict_dealStatus_end

Законченность

Имеет смысл только для crm_dict_dealStatus_quality=1

0 - not end

1 - end

Нет

crm_dict_dealStatus_color

Цвет панели в воронке

Нет

Данные справочника по умолчанию:

Тип Порядковый номер пункта в выпадающем списке Качество Законченность Цвет панели в воронке

Уточнение потребности

1

1

0

#ee902d

Подготовка приложения

2

1

0

#f3c02d

Защита предложения

3

1

0

#c9d02c

Закрытие сделки

4

1

1

#9fcb2c

Отказ

5

0

#b82b2b

Если некоторые параметры не были указаны, то им присваиваются значения по умолчанию:

  • не указан crm_dict_dealStatus_quality:

    • crm_dict_dealStatus_quality=1

    • crm_dict_dealStatus_end=0

  • не указан crm_dict_dealStatus_end:

    • crm_dict_dealStatus_end=0

  • не указаны crm_dict_dealStatus_quality и crm_dict_dealStatus_end:

    • crm_dict_dealStatus_quality=1

    • crm_dict_dealStatus_end=0

  • не указан crm_dict_dealStatus_color:

    • crm_dict_dealStatus_color=#f3c02d

Запись с данными crm_dict_dealStatus_quality=1 и crm_dict_dealStatus_end=1 должна быть одна. Если таких записей несколько, то данные значения применяются только для первой созданной записи. Остальным записям из списка присваивается значение crm_dict_dealStatus_end=0.

Список статусов сделок, для которых crm_dict_dealStatus_value=0 либо не указан вовсе, сортируются по параметру crm_dict_dealStatus_type в локали С в алфавитном порядке.

Статусы аккаунта

Код справочника: crm_dict_accountStatus.

Поля справочника:

Код Имя Комментарий Переводить

crm_dict_accountStatus_type

Тип

Да

crm_dict_accountStatus_value

Порядковый номер пункта в выпадающем списке

Нет

Данные справочника по умолчанию:

Тип Порядковый номер пункта в выпадающем списке

Клиент

1

Потенциальный клиент

2

Статусы контакта

Код справочника: crm_dict_contactStatus.

Поля справочника:

Код Имя Комментарий Переводить

crm_dict_contactStatus_type

Тип

Да

crm_dict_contactStatus_value

Порядковый номер пункта в выпадающем списке

Нет

Данные справочника по умолчанию:

Тип Порядковый номер пункта в выпадающем списке

Активен

1

В отпуске

2

Не активен

3

В командировке

4

Типы мероприятий

Код справочника: crm_dict_eventType.

Поля справочника:

Код Имя Комментарий Переводить

crm_dict_eventType_type

Тип

Да

crm_dict_eventType_value

Порядковый номер пункта в выпадающем списке

Нет

Данные справочника по умолчанию:

Тип Порядковый номер пункта в выпадающем списке

Входящий маркетинг

1

Исходящий маркетинг

2

Типы мероприятий

Код справочника: crm_dict_activityType

Поля справочника:

Код Имя Комментарий Переводить

crm_dict_activityType_type

Тип

Да

crm_dict_activityType_value

Порядковый номер пункта в выпадающем списке

Нет

crm_dict_activityType_icon

Пиктограмма

Путь до пиктограммы в папке images/activities

Нет

Данные справочника по умолчанию:

Тип Порядковый номер пункта в выпадающем списке Пиктограмма

Отправил документ

1

images/activities/sendDocument.png

Позвонил

2

images/activities/call.png

Выставил счет

3

images/activities/makeOutInvoice.png

Встретился

4

images/activities/meeting.png

Создал еще один лид

5

images/activities/newLead.png

Поздравил с праздником

6

images/activities/event.png

Телефон

Код справочника: crm_dict_phone.

Поля справочника:

Код Имя Комментарий Переводить

crm_dict_phone_type

Тип

Да

crm_dict_phone_value

Порядковый номер пункта в выпадающем списке

Нет

Данные справочника по умолчанию:

Тип Порядковый номер пункта в выпадающем списке

Рабочий

1

Мобильный

2

Факс

3

Домашний

4

Telegram

5

Viber

6

Другой

7

Адрес

Код справочника: crm_dict_address.

Поля справочника:

Код Имя Комментарий Переводить

crm_dict_address_type

Тип

Да

crm_dict_address_value

Порядковый номер пункта в выпадающем списке

Нет

Данные справочника по умолчанию:

Тип Порядковый номер пункта в выпадающем списке

Основной

1

Рабочий

2

Домашний

3

Другой

4

Почта

Код справочника: crm_dict_email.

Поля справочника:

Код Имя Комментарий Переводить

crm_dict_email_type

Тип

Да

crm_dict_email_value

Порядковый номер пункта в выпадающем списке

Нет

Данные справочника по умолчанию:

Тип Порядковый номер пункта в выпадающем списке

Официальный

1

Рабочий

2

Личный

3

Другой

4

Социальные сети

Код справочника: crm_dict_socialNetworks.

Поля справочника:

Код Имя Комментарий Переводить

crm_dict_socialNetworks_type

Тип

Да

crm_dict_socialNetworks_value

Порядковый номер пункта в выпадающем списке

Нет

Данные справочника по умолчанию:

Тип Порядковый номер пункта в выпадающем списке

Официальный вебсайт

01

Facebook

02

Facebook Messenger

03

Skype

04

Twitter

05

Instagram

06

LinkedIn

07

VK

08

Behance

09

Другой

10

Действия напоминаний

Код справочника: crm_dict_remindActions.

Поля справочника:

Код Имя Комментарий Переводить

crm_dict_remindActions_type

Тип

Да

crm_dict_remindActions_value

Порядковый номер пункта в выпадающем списке

Нет

Данные справочника по умолчанию:

Тип Порядковый номер пункта в выпадающем списке

Напомнить

1

Позвонить

2

Поздравить

3

Отправить письмо

4

Отправить документ

5

Пригласить на мероприятие

6

Назначена встреча

7

Города Казахстана

Код справочника: crm_dict_cities.

Поля справочника:

Код Имя Комментарий Переводить

crm_dict_cities_type

Тип

Да

crm_dict_cities_value

Порядковый номер пункта в выпадающем списке

Нет

Данные справочника по умолчанию:

Тип Порядковый номер пункта в выпадающем списке

г. Астана

01

г. Алматы

02

г. Актау

03

г. Актобе

04

г. Атырау

05

г. Караганда

06

г. Кокшетау

07

г. Костанай

08

г. Кызылорда

09

г. Павлодар

10

г. Петропавловск

11

г. Талдыкорган

12

г. Тараз

13

г. Уральск

14

г. Усть-Каменогорск

15

г. Шымкент

16

Условия оплаты

Код справочника: crm_dict_paymentMode.

Поля справочника:

Код Имя Комментарий Переводить

crm_dict_paymentMode_type

Название

Да

crm_dict_paymentMode_value

Порядковый номер пункта в выпадающем списке

Нет

Данные справочника по умолчанию:

Название Порядковый номер пункта в выпадающем списке

Безналичный расчет

1

Наличный расчет

2

Способы отправления

Код справочника: crm_dict_deliveryMode.

Поля справочника:

Код Имя Комментарий Переводить

crm_dict_deliveryMode_type

Название

Да

crm_dict_deliveryMode_value

Порядковый номер пункта в выпадающем списке

Нет

Данные справочника по умолчанию:

Название Порядковый номер пункта в выпадающем списке

Доставка

1

Самовывоз

2

Прочее

3

Месяцы

Код справочника: crm_dict_months.

Поля справочника:

Код Имя Комментарий Переводить

crm_dict_months_name

Месяц

Да

crm_dict_months_value

Порядковый номер пункта в выпадающем списке

Нет

Данные справочника по умолчанию:

Месяц Порядковый номер пункта в выпадающем списке

Январь

1

Февраль

2

Март

3

Апрель

4

Май

5

Июнь

6

Июль

7

Август

8

Сентябрь

9

Октябрь

10

Ноябрь

11

Декабрь

12

Создание документов

Пункты создания документов представлены следующей структурой:

Запись аккаунта

Свойство Значение

Тип

пункт

Код

crm_menu_addAccount

Реестр

crm_registry_accounts

Добавить в «Избранное» пользователя по умолчанию

включен

Группа

Все маркетологи, Все специалисты по продажам

Запись контакта

Свойство Значение

Тип

пункт

Код

crm_menu_addContact

Реестр

crm_registry_contacts

Добавить в «Избранное» пользователя по умолчанию

включен

Группа

Все маркетологи, Все специалисты по продажам

Запись лида

Свойство Значение

Тип

пункт

Код

crm_menu_addLead

Реестр

crm_registry_leads

Добавить в «Избранное» пользователя по умолчанию

включен

Группа

Все маркетологи

Запись мероприятия

Свойство Значение

Тип

пункт

Код

crm_menu_addEvent

Реестр

crm_registry_events

Добавить в «Избранное» пользователя по умолчанию

включен

Группа

Все маркетологи, Все специалисты по продажам

Запись сделки

Свойство Значение

Тип

пункт

Код

crm_menu_addDeal

Реестр

crm_registry_deals

Добавить в «Избранное» пользователя по умолчанию

включен

Группа

Все специалисты по продажам

Шаблоны документов

Свойство Значение

Тип

группа

Код

crm_menu_addDocuments

Акт приема-передачи

Свойство Значение

Тип

пункт

Код

crm_menu_addCertificate

Реестр

crm_registry_certificates

Добавить в «Избранное» пользователя по умолчанию

включен

Группа

Все маркетологи, Все специалисты по продажам

Договор поставки (единовременная оплата)

Свойство Значение

Тип

пункт

Код

crm_menu_addContract_100

Реестр

crm_registry_contracts_delivery_100

Добавить в «Избранное» пользователя по умолчанию

включен

Группа

Все маркетологи, Все специалисты по продажам

Договор поставки (оплата частями)

Свойство Значение

Тип

пункт

Код

crm_menu_addContract_part

Реестр

crm_registry_contracts_delivery_part

Добавить в «Избранное» пользователя по умолчанию

включен

Группа

Все маркетологи, Все специалисты по продажам

Коммерческое предложение

Свойство Значение

Тип

пункт

Код

crm_menu_addOffer

Реестр

crm_registry_offer

Добавить в «Избранное» пользователя по умолчанию

включен

Группа

Все маркетологи, Все специалисты по продажам

Внешние модули

Маркетинг

Свойство Значение

Код

crm_ext1Lead

Адрес приложения

URL/crm

Управление продажами

Свойство Значение

Код

crm_ext2Deal

Адрес приложения

URL/crm/deal

Управление продажами (для ОП)

Свойство Значение

Код

crm_ext3DealOS

Адрес приложения

URL/crm/dealOS

Пользовательские компоненты на форме

Конфигурация Synergy CRM содержит предустановленные пользовательские компоненты:

Модифицированный компонент выбора записи реестра

Пользовательский компонент на основе компонента «Ссылка на реестр». Компонент имеет возможность сопоставления (в качестве источника и приемника). Список доступных действий:

  • «Выбрать из реестра»

  • «Создать»

  • «Удалить»

Рисунок 3.2. Модифицированный компонент выбора записи реестра

Модифицированный компонент выбора записи реестра

Проигрыватель формы в режиме редактирования

Выбор существующей записи реестра:

Выбор записи осуществляется по нажатию на лейбл «Выбрать из реестра» (доступен всегда). По нажатию на лейбл откроется диалоговое окно, которое содержит таблицу со всеми записями данного реестра. Столбцы таблицы представляют собой отображаемые поля реестра.

Рисунок 3.3. Диалог выбора существующей записи реестра

Диалог выбора существующей записи реестра

Доступна возможность ручного ввода и подбора результатов среди имеющихся записей реестра. При этом поиск производится по всем отображаемым полям реестра.

Значения в выпадающем списке составлены из полей диалога (т.е. отображаемых полей реестра), разделенных тире.

Создание новой записи реестра из текущей формы:

Создание новой записи доступно по нажатию на лейбл «+ Создать» (доступен всегда). По нажатию на лейбл открывается диалоговое окно проигрывателя формы в режиме редактирования.

Рисунок 3.4. Диалог создания новой записи реестра

Диалог создания новой записи реестра

Удаление текущего выбранного значения компонента:

Удаление текущего значения компонента доступно по нажатию на лейбл «х Удалить», который доступен только после выбора какого-либо значения.

По нажатию на лейбл «х Удалить» компонент принимает вид пустого поля ввода.

Проигрыватель формы в режиме чтения

Выбранная запись реестра отображается в виде подчеркнутого лейбла, составленного из значащего содержимого этого реестра. По нажатию на лейбл выбранной записи откроется диалоговое окно проигрывателя формы, который отображает эту запись из реестра в режиме просмотра.

Рисунок 3.5. Компонент выбора записи реестра в режиме чтения

Компонент выбора записи реестра в режиме чтения

Сопоставление полей реестров

Лиды

При сохранении изменений связанные поля заполнятся ссылкой на текущую запись в следующих реестрах:

При выборе существующей записи реестра Аккаунт в динамической таблице (crm_form_account_lead) этой записи добавится строка, которая будет содержать ссылку на текущую запись реестра Лид в поле crm_form_account_lead_lead.

При выборе существующей записи реестра Контакт в динамической таблице (crm_form_contact_lead) этой записи добавится строка, которая будет содержать ссылку на текущую запись реестра Лид в поле crm_form_contact_lead_lead.

При удалении или замене ссылки на запись реестра Аккаунт в динамической таблице (crm_form_account_lead) этой записи будет удалена строка с ссылкой на текущую запись реестра Лид.

При выборе существующей записи реестра Контакт в динамической таблице (crm_form_contact_lead) этой записи добавится строка, которая будет содержать ссылку на текущую запись реестра Лид в поле crm_form_contact_lead_lead.

При удалении или замене ссылки на запись реестра Контакт в динамической таблице (crm_form_contact_lead) этой записи будет удалена строка с ссылкой на текущую запись реестра Лид.

Аккаунты

При сохранении изменений связанные поля заполнятся ссылкой на текущую запись в следующих реестрах:

  • Лид - crm_form_lead_main_account

  • Аккаунт, который указан в поле «Материнский аккаунт» текущей записи - crm_form_account_childAccount_account

  • Аккаунт, который указан в поле «Дочерний аккаунт» текущей записи - crm_form_account_parentAccount_parentAccount

Контакты

При сохранении изменений связанные поля заполнятся ссылкой на текущую запись в реестре Лид - crm_form_lead_main_contact.

Кнопка создания новой записи реестра «Сделка»

Пользовательский компонент в виде кнопки, расположен на форме «Лид». Названием кнопки является значение поля crm_dict_leadStatus_buttonName записи справочника crm_dict_leadStatus со значением параметра crm_dict_leadStatus_end=1 (по умолчанию - «Название кнопки»).

Кнопка в проигрывателе формы активна как в режиме чтения, так и в режиме редактирования.

Рисунок 3.6. Кнопка создания новой записи реестра «Сделка»

Кнопка создания новой записи реестра «Сделка»

По нажатию на кнопку:

  • выпадающий список «Статус» принимает значение записи справочника crm_dict_leadStatus со значением параметра crm_dict_leadStatus_end=1 и становится неактивным;

  • документ пересохраняется с новым значением выпадающего списка «Статус»;

  • создается новая запись реестра Сделка, в которой сопоставлены поля:

    • crm_form_deal_main1_lead заполняется ссылкой на данную запись Лида;

    • crm_form_deal_main2_theme заполняется значением из crm_form_lead_deals_theme.

Выпадающий список «Статус»:

При выборе пункта со значением параметра crm_dict_leadStatus_end=1 в справочнике crm_dict_leadStatus выполняются те же действия, что и по нажатию на кнопку.

Динамическая таблица активностей

Модифицированный компонент представляет собой динамическую таблицу. Блок таблицы содержит в себе компоненты:

  • пиктограмма типа активности

  • выпадающий список «Тип активности»

  • однострочное поле «Комментарий»

  • компонент выбора даты «Дата»

Выпадающий список «Тип активностей» - справочник «crm_dict_activityType». Пиктограмма типа активности определяется значением выбранного значения в списке «Типы активностей».

В настройках компонента «Дата» включен флаг «Заполнять текущей датой / временем».

«Количество отображаемых строк при создании» для таблицы - 1. По умолчанию таблица отображает последний добавленный блок.

При наличии 2 и более блоков под таблицей добавляется кнопка «Загрузить еще» вне зависимости от текущего режима проигрывателя форм. По нажатию на кнопку «Загрузить еще» в таблицу добавляются следующие пять блоков. При смене режима проигрывателя форм документ отображает те же блоки таблицы, как и в предыдущем режиме.

Режим редактирования

В режиме редактирования над таблицей содержится кнопка «Добавить активность». По нажатию на эту кнопку вверх таблицы добавляется новый пустой блок.

Режим чтения

В режиме чтения фон блоков таблицы окрашен в следующие цвета:

  • нечетные блоки - #f1f1f1

  • четные блоки - #ffffff

Рисунок 3.7. Таблица в режиме редактирования

Таблица в режиме редактирования

Рисунок 3.8. Таблица в режиме редактирования

Таблица в режиме редактирования

Рисунок 3.9. Таблица в режиме чтения

Таблица в режиме чтения

Рисунок 3.10. Таблица в режиме чтения

Таблица в режиме чтения

Пользовательский компонент связи из интерфейса

Компонент представлен пиктограммой соответствующего приложения и ссылкой. Анкор таких ссылок:

  • для формы Контакт - crm_form_lead_main_contactConnection

    • телефон - значение поля crm_form_contact_phone_phone

    • социальные сети - значение поля crm_form_contact_socialNetworks_socialNetworks

  • для формы Аккаунт - crm_form_lead_main_accountConnection

    • телефон - значение поля crm_form_account_phone_phone

    • социальные сети - значение поля crm_form_account_socialNetworks_socialNetworks

Для приложения Skype имеются две ссылки - для звонка и сообщения. Их анкор представлен в формате:

  • для звонков - Позвонить %значение_поля%

  • для сообщений - Написать %значение_поля%

При каждом открытии формы значения компонентов актуализируются согласно данным соответствующих записей Контакт и Аккаунт.

По нажатию на ссылку откроется:

  • Telegram - https://telegram.me/%указанный_логин%

    Примечание

    Компонент обрабатывает только логины приложения Telegram, но не номера телефонов.

  • Facebook Messenger - http://m.me/%указанный_логин%

  • Viber - viber://add?number=%указанный_номер_телефона%

  • Skype (позвонить) - skype:%указанный_логин%?call

  • Skype (написать) - skype:%указанный_логин%?chat

  • Почта - mailto:%указанный_электронный_адрес%

  • Телефон - tel:%указанный_номер_телефона%

    Примечание

    Если на компьютере пользователя не установлен Skype, Viber, почтовый или SIP клиенты, то по нажатию а ссылку ничего не произойдет, и это не будет являться ошибкой Synergy.

Рисунок 3.11. Контактные данные клиента для связи

Контактные данные клиента для связи

Динамическая таблица плана продаж

Модифицированный компонент представляет собой динамическую таблицу формы Сделка.

Имеется возможность удалить столбец, содержащий поля «Тема сотрудничества» (crm_form_deal_main2_theme_cN), «Целевое значение» (crm_form_deal_main2_goal_pvalue_cN) и «План продаж» (crm_form_deal_main2_theme_pvalue_cN) по нажатию на кнопку «X» над соответствующим столбцом. При сохранении документа с удаленным столбцом соответствующий документ индекса r-crm_registry_deals_plans_custom будет удален.

Имеется возможность добавить столбец, содержащий поля «Тема сотрудничества» (crm_form_deal_main2_theme_cN) и «План продаж» (crm_form_deal_main2_theme_pvalue_cN) по нажатию на лейбл «+ Добавить столбец». Идентификаторы компонентов нового столбца:

  • «Тема сотрудничества» - crm_form_deal_main2_theme_c%N+1%

  • «План продаж» - crm_form_deal_main2_theme_pvalue_c%N+1%

  • «Целевое значение» - crm_form_deal_main2_goal_pvalue_c%N+1%

    где %N+1% - наибольший порядковый номер компонентов текущего документа + 1.

При сохранении документа с новым столбцом создается новый документ индекса r-crm_registry_deals_plans_custom.

В режиме чтения кнопки удаления («Х») и добавления («+ Добавить столбец») столбцов не отображаются.

При создании новой записи реестра «План продаж» таблица имеет 14 столбцов, содержащих поля «Тема сотрудничества» (crm_form_deal_main2_theme_cN), «Целевое значение» (crm_form_deal_main2_goal_pvalue_cN) и «План продаж» (crm_form_deal_main2_theme_pvalue_cN).

Максимально допустимое количество столбцов, содержащих поля «Тема сотрудничества» (crm_form_deal_main2_theme_cN) и «План продаж» (crm_form_deal_main2_theme_pvalue_cN) в документе по форме - 50. Если таблица имеет 50 столбцов, содержащих поля «Тема сотрудничества» (crm_form_deal_main2_theme_cN) и «План продаж» (crm_form_deal_main2_theme_pvalue_cN), по нажатию на лейбл «+ Добавить столбец» отобразится сообщение об ошибке:

`Превышено максимальное количество столбцов`

Рисунок 3.12. Модифицированная динамическая таблица

Модифицированная динамическая таблица

Поле «Целевое значение»:

  • Поле содержит значение из поля «Стоимость продаж» (crm_form_deal_main2_theme_pvalue_cN), у которых совпадают значения:

    • «Год» (crm_form_deal_order_sales_year);

    • «Месяц» (crm_form_deal_order_sales_month);

    • «Тема сотрудничества» (crm_form_deal_main2_theme_cN);

    • «Отделение» (crm_form_deal_sales_pk1) в таблице текущего документа по форме и «Подразделение создающего пользователя» (crm_owner) другого документа по форме.

  • При отсутствии документа по форме «План продаж», удовлетворяющего перечисленным требованиям поле остается пустым, плейсхолдер не отображается.

  • Если имеется несколько документов, удовлетворяющих требованиям, указывается целевое значение последнего измененного документа.

  • Значения полей актуализируются при каждом открытии документа.

  • Если сумма значений всех полей «Стоимость продаж» хотя бы одной темы сотрудничества меньше, чем значение ее поля «Целевое значение», то при сохранении такого документа отобразится сообщение об ошибке:

    Сумма стоимостей продаж должна быть больше либо равна целевому значению

    Весь столбец соответствующей темы сотрудничества подсвечивается красным.

Рисунок 3.13. Заголовок динамической таблицы

Заголовок динамической таблицы

Внешние модули-компоненты

Напоминания

Всплывающие в указанное время записи ежедневника, отображаемые поверх любого активного модуля ARTA Synergy. В конфигурации Synergy CRM содержатся в модуле «Внешние модули-компоненты»:

Название

crm_notifications

Место размещения

Depricated

Название пользовательского компонента

crm_component_notifications

Тип вставки

ADD

Создание напоминания:

Для создания нового напоминания нужно нажать на кнопку «Создать» и выбрать пункт «Напоминание». Откроется окно создания напоминания:

Рисунок 3.14. Добавление нового напоминания

Добавление нового напоминания

Окно содержит поля:

  • Комментарий - многострочное поле

  • Дата и время - установка времени напоминания

  • Действие - выпадающий список (справочник crm_dict_remindActions)

  • Лид - ссылка на записи реестра Лид

  • Сделка - ссылка на записи реестра Сделка

Одно из полей «Лид» и «Сделка» должно быть заполнено. Если оба поля «Лид» и «Сделка» не заполнены, то по нажатию на кнопку «Сохранить» отобразится ошибка с текстом:

Выберите лида или сделку

Если заполнены оба поля «Лид» и «Сделка» панель напоминания и заметка содержат обе ссылки на реестр.

Отображение напоминания при наступлении указанного времени:

При наступлении указанных даты и времени в нижнем правом углу основного приложения вне зависимости от активного модуля отобразится панель напоминания, содержащая:

  • пиктограмму напоминания («колокольчик»)

  • ссылку на запись реестра указанного Лида

  • значение поля «Действие»

  • кнопки:

    • «Отложить»

    • «Закрыть»

По нажатию на кнопку «Отложить» панель скроется и снова отобразится по истечении 15 минут от текущего времени на сервере. По нажатию на кнопку «Закрыть» панель более не будет отображаться.

Напоминание будет отображаться до тех пор, пока:

  • не будет нажата одна из указанных кнопок;

  • страница Synergy не будет перезагружена;

  • авторизованный пользователь не выйдет из системы.

Каждое новое напоминание добавляется выше остальных. Одновременно отображаются последние три напоминания. Если имеется более трех напоминаний, добавляется панель счетчика очереди, которая всегда отображается последней (ниже остальных).

При наступлении 00:00 следующего дня все активные напоминания предыдущего дня скрываются.

Рисунок 3.15. Напоминания

Напоминания

Счетчик очереди содержит текст с количеством напоминаний, которые не отображаются на странице.

Отображение напоминаний в модуле «Ежедневник»:

Напоминание для пользователя сохраняется в виде заметки в его Ежедневнике, где:

  • Дата заметки = дата, на которую требуется напоминание

  • Время начала заметки = время, указанное в напоминании

  • Время завершения заметки = 23:59:59 дня, указанного в напомина

Рисунок 3.16. Отображение напоминаний в Ежедневнике

Отображение напоминаний в Ежедневнике