Операции с данными

Содержание

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

Мастер разделов

  • Появилась возможность копировать страницу вместе с настройками вкладки Хронология.

  • Исправлена ситуация, когда не сохранялся раздел, созданный на основании существующего объекта, если ранее в этом объекте не была указана колонка для отображения по умолчанию.

  • В мастере разделов и дизайнере преднастроенных страниц для ускорения и упрощения настройки доступны новые возможности:

    • Указывать точность значений при настройке числовых полей. Выбрать можно целое число, либо дробное с точностью до восьми знаков после запятой.

    • Добавлять переводы заголовков групп полей, логических и справочных полей, а также новых справочников непосредственно при настройке страницы.

    • Отредактировать код группы полей при ее создании.

    • Изменять заголовок и код справочника, который был создан для нового справочного поля, но еще не был сохранен мастером разделов.

  • Реализована возможность настраивать логику расчета значений в числовых полях, используя формулы в бизнес-правиле “Заполнять значение поля”. Например, настроив это бизнес-правило, можно решить следующие задачи:

    • Рассчитать стоимость продукта, исходя из его цены и количества на складе.

    • Рассчитать сумму заказа в базовой валюте на основании текущего курса и суммы заказа в валюте.

Настроить деталь

На финальном этапе создания нового раздела необходимо настроить расписание групповых занятий — добавить в деталь необходимые поля и настроить их отображение в реестре детали. Это можно сделать непосредственно на странице групповой секции.

Для создания новой записи в реестре раздела Групповые секции нажмите кнопку Добавить (New)

На открывшейся странице записи перейдите на деталь «Групповые занятия» и откройте мастер деталей — в меню детали выберите пункт Настроить деталь (Detail setup).

С помощью мастера деталей настройте поля детали на вкладке Страница (Page):

Заголовок (Title)

Код (Code)
Тип данных
Обязательность поля
Дата занятия (Training date)
UsrTrainingDate
Дата (Date)
Обязательное поле
Время занятия (Training time)
UsrTrainingTime
Время (Time)
Обязательное поле
Тренер (Coach)
UsrCoach
Существующий справочник
«Сотрудник» (Lookup «Employee»)
Обязательное поле
Состояние занятия (Training status)
UsrTrainingStatus
Новый справочник «Состояние занятия» (Lookup «Training status»)
Обязательное поле
Количество участников (Members)
UsrQuantity
Целое число (Integer)
Необязательное поле
Групповая секция
(Class)
UsrClass
Существующий справочник
«Групповая секция» (Lookup «Class»)
Обязательное поле
Чтобы добавить новый справочник для поля «Состояние занятия» («Training status»):

Нажмите кнопку Добавить новый справочник (Add new lookup)

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

Заголовок (Title) — «Состояние занятия» («Training status»).

Код (Code) — «UsrTrainingStatus».

Сохраните страницу детали.

Обратите внимание, что при создании детали с помощью мастера разделов в нее автоматически было добавлено обязательное поле «Название» («Name»). В нашем примере это поле не требуется и его необходимо удалить:
Перейдите в раздел Конфигурация (Configuration).
В результате работы мастеров в пакете «TryItPackage» создан набор необходимых схем и прикрепленных данных

Выберите схему «UsrGroupExercise». Это схема объекта, на базе которого сформирована деталь «Групповые занятия» («Group exercises»).
Двойным кликом мыши откройте схему.
Удалите колонку «UsrName» из списка колонок объекта.
Опубликуйте схему, нажав на кнопку Опубликовать (Publish).

Деталь с расписанием почти готова, осталось настроить колонки детали:
В меню детали выберите пункт Настройка колонок (Columns setup).

Настройте колонки детали.

Для сохранения изменений нажмите Сохранить (Save).

В результате мы получили полностью настроенный интерфейс нового раздела. На следующем шаге необходимо:

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

Стоимость и тарифы

Каждый из модулей системы Террасофт CRM продается отдельно. При этом среди них также есть разделение в зависимости от необходимого функционала:

  1. Модуль работы с маркетингом. 1000 активных клиентских контактов в базе и доступ к системе 1 пользователя стоит 51 090 рублей/месяц. Добавление к системе рабочего места, увеличение количества активных контактов ведет к увеличению стоимости подписки.
  2. Модуль управления продажами делится на несколько доступных сервисов:
  • управление прямыми линиями продаж – 980 рублей/месяц;
  • для коротких продаж и электронной коммерции – 1 300 рублей/месяц;
  • для большого количества каналов сбыта: прямые продажи, электронная деятельность, полевые продажи, торговые точки и прочее – 2 600 рублей/месяц.
  1. Модуль для управления сервисом Террасофт CRM:
  • для автоматизации работы с обращениями клиентов по всем каналам коммуникации – 1630 рублей/месяц;
  • как для автоматизации работы с клиентами, так и для управления задачами отделов поддержки бизнеса – 2930 рублей/месяц.

Sales Creatio

  • Реализована версионность листов планирования. Функциональность позволяет:  

    • Выбрать и просмотреть необходимую версию плана.

    • Настроить время ежедневного автосохранения листа.

    • Сравнить значения выбранной версии плана с текущей. Зеленым индикатором будут отмечены значения, которые в текущей версии плана выше, чем в выбранной, а красным индикатором — более низкие значения, чем в выбранной версии. Возле ячеек, отмеченных индикаторами, добавлены подсказки, в которых отображаются значения текущей версии плана, а также его разница с выбранной версией.

  • Добавлена возможность указывать часовой пояс при настройке времени автоматического расчета и автосохранения планов.

Сравнение данных в версиях листа планирования

Создать замещающий конфигурационный элемент

Конфигурационные элементы, которые можно заместить в Creatio:

  • Клиентский модуль, определяющий модель представления.

    Клиентский модуль реализует front-end часть приложения. Для создания замещающего клиентского модуля необходимо использовать схему замещающей модели представления, которая описана в статье .

  • Объект.

    Объект реализует back-end часть приложения. Для создания замещающего объекта необходимо использовать схему замещающего объекта, которая описана в статье .

  • Исходный код.

    В качестве замещающего конфигурационного элемента выступает класс. Для создания замещающего класса необходимо использовать схему типа Исходный код (Source code), которая описана в статье .

После реализации замещающего конфигурационного элемента при обращении к замещаемому конфигурационному элементу система будет выполнять логику замещающего конфигурационного элемента.

Замещение одного и того же конфигурационного элемента можно выполнять в нескольких пользовательских пакетах. При этом конечная реализация замещающего конфигурационного элемента в скомпилированной конфигурации определяется , содержащих замещающие конфигурационные элементы.

Создать замещающий клиентский модуль

  1. (Configuration) и выберите пользовательский пакет, в который будет добавлен замещающий клиентский модуль.
  2. Установите пакета. В зависимости обязательно добавьте пакет, который содержит замещаемый клиентский модуль.
  3. На панели инструментов реестра раздела нажмите Добавить —> Замещающая модель представления (Add —> Replacing view model).

  4. В обязательном свойстве Родительский объект (Parent object) укажите заголовок схемы замещаемого клиентского модуля.
  5. Реализуйте функциональность, которая отличает замещающий клиентский модуль от замещаемого.

Создать замещающий объект

  1. (Configuration) и выберите пользовательский пакет, в который будет добавлен замещающий объект.
  2. Установите пакета. В зависимости обязательно добавьте пакет, который содержит замещаемый объект.
  3. На панели инструментов реестра раздела нажмите Добавить —> Замещающий объект (Add —> Replacing object).

  4. В обязательном свойстве Родительский объект (Parent object) укажите заголовок схемы замещаемого объекта.
  5. Реализуйте функциональность, которая отличает замещающий объект от замещаемого.

Создать замещающий класс

Принцип замещения классов, в частности создание и использование в конфигурации экземпляров замещаемых классов, имеет свои особенности.

Чтобы создать замещающий класс:

  1. (Configuration) и выберите пользовательский пакет, в который будет добавлен замещающий класс.
  2. Установите пакета. В зависимости обязательно добавьте пакет, который содержит замещаемый класс.
  3. На панели инструментов реестра раздела нажмите Добавить —> Исходный код (Add —> Source code).

  4. Создайте класс, который является наследником замещаемого класса.
  5. Для класса добавьте атрибут . Описание атрибута содержится в пункте .
  6. Реализуйте функциональность, которая отличает замещающий класс от замещаемого. Например, реализуйте свойства и методы, расширяющие функциональность замещаемого класса, перегрузку методов замещаемого класса и т. д.). В замещающем классе для свойств и методов добавьте модификатор override. В пользовательском замещаемом классе для свойств и методов, которые необходимо заместить, добавьте модификатор virtual. В базовом классе можно заместить только виртуальные или реализовать абстрактные методы. До компиляции все замещающие свойства и методы, которые обьявлены без использования ключего слова override, недоступны. Привязка и внедрение зависимостей типов выполняется open-source фреймворком внедрения зависимостей Ninject только во время выполнения.

Подключение веб-сервиса к функциональности машинного обучения

Важно. Возможность подключения пользовательского веб-сервиса к функциональности машинного обучения доступна в Creatio версии 7.16.2 и выше

Задачи машинного обучения (классификация, скоринг, числовая регрессия) или другие подобные задачи (например, прогнозирование оттока клиентов) можно реализовать с помощью веб-сервиса. Эта статья описывает процесс подключения к Creatio пользовательского веб-сервиса, реализующего задачу машинного обучения.

Общий порядок действий при подключении пользовательского веб-сервиса к сервису машинного обучения:

  1. Создайте веб-сервис — движок машинного обучения.
  2. Расширьте список задач сервиса машинного обучения.
  3. Реализуйте модель машинного обучения.

Создание веб-сервиса — движка машинного обучения

Пользовательский веб-сервис должен реализовать контракт для обучения и выполнения прогнозов по существующей модели. Пример контракта можно посмотреть через Swagger сервиса машинного обучения Creatio.

Обязательные методы:

  • /session/start — начало сессии обучения модели.
  • /data/upload — передача данных в рамках открытой сессии обучения.
  • /session/info/get — получение информации о состоянии сессии.
  • <пользовательский метод начала обучения> — метод, который будет вызван Creatio по завершении процесса передачи данных. Процесс обучения модели не должен быть завершен до завершения выполнения этого метода. Процесс обучения может длиться произвольное количество времени (десятки минут и даже часы). Когда обучение завершено, метод /session/info/get должен будет вернуть состояние сессии обучения Done или Error в зависимости от результата обучения. Кроме этого, если модель успешно обучена, то необходимо вернуть информацию об экземпляре модели — ModelSummary: тип метрики, значение метрики, идентификатор экземпляра и другие.
  • <пользовательский метод прогнозирования> — метод произвольной сигнатуры, который будет выполнять прогнозирование данных на основании идентификатора экземпляра обученной модели.

Процесс разработки веб-сервиса с использованием IDE Microsoft Visual Studio описан в .

Расширение списка задач сервиса машинного обучения

Для расширения списка задач машинного обучения в Creatio необходимо дополнить справочник MLProblemType новой записью. Необходимо указать следующие параметры:

  • Service endpoint Url — адрес работающего сервиса машинного обучения.
  • Training endpoint — путь метода начала обучения.
  • Prediction endpoint — путь метода прогнозирования.

Важно. Для дальнейшей работы необходимо знать идентификатор созданной записи

Посмотреть Id можно в таблице базы данных.

Реализация модели машинного обучения

Для настройки и отображения модели машинного обучения, возможно, потребуется расширить схему карточки MLModelPage.

Реализация IMLPredictor

Необходимо реализовать метод Predict, который на вход получит данные, выгруженные из системы по объекту (в виде Dictionary,>, где key — название поля, а value — его значение), а на выход вернет результат прогноза. Метод может использовать прокси-класс, реализующий интерфейс IMLServiceProxy, который упростит вызов веб-сервиса.

Реализация IMLEntityPredictor

Необходимо инициализировать свойство ProblemTypeId идентификатором созданной записи в справочнике MLProblemType. Также необходимо реализовать следующие методы:

  • SaveEntityPredictedValues — метод получает результат прогнозирования и должен сохранить его для объекта (entity) системы, для которого выполнялось прогнозирование. Если возвращаемое значение типа double или подобно результату классификации, можно воспользоваться методами вспомогательного класса PredictionSaver.
  • SavePrediction (опционально) — метод сохраняет результат прогнозирования в привязке к экземпляру обученной модели и идентификатору объекта (entityId). Для базовых задач в системе существуют объекты MLPrediction и MLClassificationResult.

Расширение IMLServiceProxy и MLServiceProxy (опционально)

Можно расширить существующий интерфейс IMLServiceProxy и его реализацию методом прогнозирования для текущей задачи. В частности, класс MLServiceProxy содержит обобщенный метод Predict, который принимает контракты для входящих данных и результата прогнозирования.

Реализация IMLBatchPredictor

В случае, если сервис вызывается с набором данных (500 шт.), следует реализовать интерфейс IMLBatchPredictor. Необходимо реализовать следующие методы:

Terrasoft

По той информации, которое даёт опубликованное на сайте terrasoft описание, эта система готова выполнить для компании следующие задачи:

  • своевременно обработать все входящие обращения – за это отвечает встроенный call-центр;
  • запланировать, проконтролировать процесс продаж;
  • проанализировать поступающую от маркетинговых компаний информацию;
  • эффективно взаимодействовать с аудиторией клиентов;
  • сохранить все деловые контакты, историю операций;
  • исключить ситуацию, когда несколько менеджеров звонят одному и тому же клиенту;
  • получить достоверную информацию по сделкам собственной, а так же конкурирующих компаний;
  • систематизировать процесс взаимодействия отделов компании.

Terrasoft CRM помогает успешно развивать бизнес, предлагая пользователям следующие модули: бизнес процессы, система лояльности, отчёты, библиотеки, маркетинг, Call-центр, проекты, контакты.

Алгоритм выполнения примера

1. Создать схему замещающей модели представления детали

В пакете разработки создайте схему замещающей модели представления детали (рис. 1). Процесс создания схемы замещающей модели представления подробно описан в статье «Cоздать клиентскую схему».

Рис. 1. — Добавление схемы замещающей модели представления

Для созданной схемы замещающей модели представления детали в качестве родительского объекта укажите схему OpportunityContactDetailV2 (рис. 2).

Рис. 2. — Свойства схемы замещающей модели представления

2. Использовать методы миксина с замещением базовых методов детали

Для использования миксина LookupMultiAddMixin в схеме, добавьте его в свойстве mixins и инициализируйте в переопределенном методе init() схемы детали. Подробная информация о переопределении метода init() доступна в статье «Принципы модульной разработки в Creatio».

Для реализации необходимой функциональности переопределите методы отображения кнопки добавления getAddRecordButtonVisible(), сохранения страницы детали onCardSaved() и добавления записи на деталь addRecord().

В методах сохранения страницы детали и добавления записи используется метод вызова справочного окна для множественного выбора openLookupWithMultiSelect() и связанный с ним метод getMultiSelectLookupConfig(), выполняющий конфигурирование справочного окна. Описание и основные параметры этих методов приведены в таблице 1.

Табл. 1. — Методы вызова и конфигурирования справочного окна

Метод Описание
openLookupWithMultiSelect(isNeedCheckOfNew) Открывает окно справочника с множественным выбором. Параметр isNeedCheckOfNew {bool} указывает на необходимость выполнять проверку является ли запись новой.
getMultiSelectLookupConfig()

Возвращает объект конфигурации для справочного окна. Свойства объекта:

rootEntitySchemaName — корневая схема объекта;

rootColumnName — связующая колонка, указывающая на запись корневой схемы;

relatedEntitySchemaName — связанная схема;

relatedColumnName — колонка, указывающая на запись связанной схемы.

В этом примере справочное окно будет использовать данные из таблицы OpportunityContact, используя колонки Opportunity и Contact.

Исходный код схемы детали:

После сохранения схемы и обновления страницы приложения у пользователя по нажатию на кнопку добавления записи на деталь (рис. 3) появится возможность выбрать не одну, а несколько записей из справочника (рис. 4). После подтверждения все выбранные записи будут добавлены на деталь Контакты (Contacts) на странице записи раздела Продажи (Opportunities) (рис.5).

Рис. 3. — Добавление новых записей на деталь

Рис. 4. — Выбор необходимых записей из справочника

Обмен сообщениями между модулями

Модули могут общаться друг с другом только посредством сообщений. Модуль, которому требуется сообщить об изменении своего состояния другим модулям в системе, публикует сообщение. Если модулю необходимо получать сообщения об изменении состояний других модулей, он должен быть подписанным на эти сообщения.

На заметку. Указывать базовые модули в зависимостях «ext-base», «terrasoft», «sandbox» не обязательно, если модуль экспортирует конструктор класса. Объекты Ext, Terrasoft и sandbox после создания объекта класса модуля будут доступны как свойства объекта: this.Ext, this.Terrasoft, this.sandbox.

Зарегистрировать сообщение

Чтобы модули могли обмениваться сообщениями, сообщения необходимо зарегистрировать.

Для регистрации сообщений модуля предназначен метод sandbox.registerMessages(messageConfig), где messageConfig — конфигурационный объект сообщений модуля.

Конфигурационный объект является коллекцией «ключ-значение», в которой каждый элемент имеет вид, представленный ниже.

Здесь MessageName — ключ элемента коллекции, содержащий имя сообщения. Значением является конфигурационный объект, содержащий два свойства:

  • mode — режим работы сообщения. Должно содержать значение перечисления Terrasoft.MessageMode (Terrasoft.core.enums.MessageMode).
  • direction — направление сообщения. Должно содержать значение перечисления Terrasoft.MessageDirectionType (Terrasoft.core.enums.MessageDirectionType).

Режимы обмена сообщениями (свойство mode):

  • Широковещательный — режим работы сообщения, при котором количество подписчиков заранее неизвестно. Соответствует значению перечисления Terrasoft.MessageMode.BROADCAST.
  • Адресный — режим работы сообщения, при котором сообщение может быть обработано только одним подписчиком. Соответствует значению перечисления Terrasoft.MessageMode.PTP.

Важно. В адресном режиме подписчиков может быть несколько, но сообщение обработает только один, как правило, последний зарегистрированный подписчик

Направления сообщения (свойство direction):

  • Публикация — модуль может только опубликовать сообщение в sandbox. Соответствует значению перечисления Terrasoft.MessageDirectionType.PUBLISH.
  • Подписка — модуль может только подписаться на сообщение, опубликованное из другого модуля. Соответствует значению перечисления Terrasoft.MessageDirectionType.SUBSCRIBE.
  • Двунаправленное — позволяет публиковать и подписываться на одно и то же сообщение в разных экземплярах одного и того же класса или в рамках одной и той же иерархии наследования схем. Соответствует значению перечисления Terrasoft.MessageDirectionType.BIDIRECTIONAL.

В схемах модели представления регистрировать сообщения с помощью метода sandbox.registerMessages() не нужно. Достаточно объявить конфигурационный объект сообщений в свойстве messages.

Для отказа от регистрации сообщений в модуле можно воспользоваться методом sandbox.unRegisterMessages(messages), где messages — имя или массив имен сообщений.

Добавить сообщение в схему модуля

Зарегистрировать сообщения можно также, добавив их в схему модуля с помощью дизайнера.

Для добавления сообщения в схему модуля:

В области свойств модуля дизайнера схемы модуля добавьте сообщение в узел Сообщения(Messages).

Для добавленного сообщения установите необходимые свойства:

Название (Name) — имя сообщения, совпадающее с ключом в конфигурационном объекте модуля.

Направление (Direction) — направление сообщения. Возможные значения «Подписка» («Follow») и «Публикация» («Publish»).

Режим (Mode) — режим работы сообщения

Возможные значения «Широковещательное» («Broadcast») и «Адрес» («Address»).
Важно. В добавлять сообщения в структуру схемы не нужно.

Опубликовать сообщение

Для публикации сообщения предназначен метод sandbox.publish(messageName , messageArgs, tags).

Для сообщения, опубликованного с массивом тегов, будут вызваны только те обработчики, для которых совпадает хотя бы один тег. Сообщения, опубликованные без тегов, смогут обработать только подписчики без тегов.

Алгоритм выполнения кейса

1. Заместить схему детали FileDetailV2

Как создать схему замещающей модели представления подробно описано в статье «Cоздать клиентскую схему». В пользовательском пакете нужно создать схему замещающей модели представления со следующими свойствами:

  • () — «FileDetailV2».
  • () — «FileDetailV2».
  • () — пакет, в котором схема объекта будет размещена после публикации. По умолчанию содержит название пакета, выбранного перед созданием схемы. Значение может быть изменено на любое из выпадающего списка.
  • () — «FileDetailV2».

2. Реализовать вызов метода открытия страницы настройки колонок реестра

Для этого в исходном коде замещающей схемы необходимо в описании модуля переопределить базовый метод getGridSettingsMenuItem(), возвращающий пункт меню детали, связанный с вызовом базового метода openGridSettings(), определенном в миксине GridUtilities.

Исходный код схемы:

После внесения изменений схему необходимо сохранить.

В результате выполнения кейса в меню кнопки Действия (Actions) детали появится новая команда Настройка колонок (Columns setup) (рис. 2).

Рис. 2. — Добавленная команда для настройки колонок реестра на детали

 

После выполнения этой команды откроется страница настройки отображения колонок реестра, на которой можно добавить колонку Описание (Description) (рис. 3).

Рис. 3. — Страница настройки отображения колонок реестра детали

После сохранения настроек в списочном представлении детали будет отображаться добавленная колонка (рис. 4)

Регистрация и вход на портал

Для начала работы с порталом необходимо быть зарегистрированным пользователем портала и пройти процедуру авторизации.

Есть следующие способы регистрации пользователя портала:

  • Пользователь может самостоятельно зарегистрироваться на портале.

    На заметку. Возможность самостоятельно регистрироваться на портале должна быть настроена администратором системы. Подробно процесс настройки описан в статье “Настройка самостоятельной регистрации пользователей портала”.

  • Администратор системы может зарегистрировать пользователя портала в основном приложении.

  • Администратор организации может зарегистрировать пользователя на портале. Настройки, выполняемые администратором организации, описаны в статье “Возможности администратора портала”.

Самостоятельная регистрация на портале

При самостоятельной регистрации на портале необходимые лицензии и права доступа вам будут предоставлены автоматически.

Для регистрации:

Получить адрес доступа к порталу можно у администратора системы.

  1. Откройте страницу входа на портал. Обычно адрес доступа к порталу состоит из адреса приложения и значения “SSPLogin.aspx” и выглядит  примерно так: Например:

  2. На странице авторизации на портале нажмите ссылку Зарегистрироваться ().

    Рис. 1 — Регистрация пользователя на портале

  3. Введите необходимые регистрационные данные и нажмите кнопку Зарегистрироваться ().

    Рис. 2 — Регистрационная форма

Вход на портал

Для входа на портал необходимо авторизоваться.

  1. Перейдите на страницу авторизации на портале. Для этого введите в адресную строку браузера адрес доступа к порталу, полученный от администратора системы. Подробнее адрес доступа к порталу описан выше в блоке “”.

  2. На странице авторизации:

    1. Если вы уже зарегистрированы на портале, то введите ваш логин и пароль и нажмите кнопку Войти. После входа вы будете перенаправлены на главную страницу портала.

    2. Если вы еще не зарегистрированы и у вас нет логина и пароля, то вам необходимо пройти процедуру самостоятельной регистрации или обратиться к администратору.

Управление личными данными

На портале вы можете видеть и редактировать свои данные в профиле. Для этого нажмите на фотографию на портале —> Профиль ().

Рис. 1 — Переход к настройкам профиля пользователя

Для пользователей, которые входят в организацию, также доступна вкладка Обслуживание с данными о сервисных договорах компании и предоставляемых по ним сервисах.

На заметку. Администратору портала также доступен профиль организации. Внешний вид страниц профиля пользователя портала и профиля организации может настроить администратор системы.

Если вы забыли пароль входа на портал:

  1. Рис. 1 — Восстановление пароля

Изменить пароль

Чтобы изменить текущий пароль:

На заметку. Также можно перейти к смене пароля профиля пользователя, выбрав пункт Профиль пользователя в главном меню портала.

  1. Войдите на портал —> Настройки ().

    Рис. 1 — Переход к настройкам профиля пользователя

  2. Нажмите кнопку Изменить пароль. Введите текущий пароль и дважды новый ().

    Рис. 2 — Изменение пароля

  3. После нажатия кнопки Изменить пароль новый пароль будет сохранен.