Публикация

Приветствую, уважаемые коллеги!

В данной статье я хочу привлечь внимание не только разработчиков, но и партнёров Террасофт и их представителей.

Сегодня я расскажу Вам о преимуществах и выгодах использования приложения для оперативной проверки структуры базы данных (далее - БД) на корректность (https://marketplace.terrasoft.ru/app/database-structure-check).

Проблематика.

После накатывания нового функционала на тестовую среду могут появиться ошибки структуры БД. Их особенности:

  • не всегда очевидны.
  • разработчиков может сбивать с толку тот факт, что на рабочей среде всё работает, а на тестовой – нет.
  • поиск и устранение может занять длительное время.

Всё это снижает эффективность разработки/обслуживания, приводит к дополнительным расходам ресурсов. 

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

  • падает надёжность системы.
  • повышается вероятность аварии.

Особенно это актуально, когда «окно» для обновления промышленной среды очень небольшое. Чем больше проект в плане доработок, тем больше ошибок структуры БД может возникать.

При использовании приложения все эти проблемы можно успешно решить!

Целевая аудитория.

Обращаю внимание партнёров Terrasoft: приложение предназначено для среднего и крупного бизнеса. То есть, основные преимущества от его использования получает именно клиент. Приложение универсально и подойдёт практически всем клиентам, у которых есть потребность в доработке базовых продуктов.

Степень необходимости приложения может варьироваться. Если в ходе выяснения потребностей выясняется, что:

  1. будет большой проект (или уже есть) со сложными связями между сущностями системы.
  2. есть потребность в максимальной надёжности.
  3. у клиента только небольшие «окна» для обновления промышленной среды.
  4. есть потребность в повышении эффективности разработки и обслуживания (клиент хочет как можно скорее получить готовую систему в пользование).
  5. есть потребность в повышении устойчивости к авариям системы.

- это всё покажет рост степени необходимости приложения. Я настоятельно рекомендую устанавливать приложение всем клиентам в случае, если имеет место хотя бы один пункт выше.

Выгоды.

Какие выгоды получит клиент от использования приложения? Как правило, это выгоды в долгосрочной перспективе. Клиент:

  1. получит дополнительную меру повышения надёжности системы.
  2. сэкономит ресурсы на обнаружение ошибок структуры БД.
  3. обеспечит повышение эффективности разработки и обслуживания системы.
  4. обеспечит повышение устойчивости системы к авариям из-за ошибок структуры БД.

Есть также выгоды для разработчиков, облегчающие некоторые аспекты разработки/сопровождения. Разработчики: 

  1. смогут пользоваться самым рациональным решением для проверок структуры БД, которое не имеет аналогов.
  2. смогут пользоваться всем функционалом приложения в один клик.
  3. смогут проверять структуру БД на корректность в течение нескольких секунд.
  4. смогут оперативно выявлять отсутствующие таблицы и/или их колонки, обнаруживать несоответствия типов полей.
  5. после проверки структуры БД смогут понять, для каких объектов необходимо произвести повторное обновление структуры БД.
  6. после успешного анализа, будут точно знать, что БД целевой среды содержит все требуемые системой таблицы/поля, и что типы всех полей всех таблиц правильные.

Преимущества.

  1. Поиск ошибок структуры БД. Приложение выявляет отсутствующие таблицы и/или их колонки, а также обнаруживает несоответствия типов полей.
  2. Повышение надёжности. Использование приложения повышает надёжность системы за счёт минимизации времени, в течение которого в структуре БД есть ошибки.
  3. Экономия ресурсов. Использование дополнения сокращает расходы на обнаружение ошибок структуры БД. В ряде случаев очень серьёзно сокращает расходы.
  4. Подтверждение целостности. После успешного анализа, специалист будет точно знать, что база данных целевой среды содержит все требуемые системой таблицы/поля, и что типы всех полей всех таблиц соответствуют требуемым типам.
  5. Повышение эффективности разработки и обслуживания. Это происходит за счёт экономии ресурсов при использовании приложения, а также за счёт ускорения обнаружения ошибок структуры БД.
  6. Простота использования. Запуск функционала в один клик.
  7. Быстрая скорость работы. Проверка структуры БД в течении нескольких секунд.
  8. Простая и удобная форма отчёта приложения. После проверки, в случае наличия ошибок, специалисту будет предоставлено подробное информационное сообщение. Разработчик сразу поймёт, для каких объектов необходимо произвести повторное обновление структуры БД.
  9. Локализация на английский язык. Поддержка не только русского языка, но и английского.
  10. Самое рациональное решение для проверок структуры БД. На самом деле, можно проверить вручную, но это дольше (просмотреть все разделы, вкладки, детали, а также проверить работоспособность всего разработанного функционала) и не всегда возможно проверить вообще всё. Зачастую такого количества времени просто нет. 
  11. Уникальность. Инструмент для проверки структуры БД не имеет аналогов на маркетплейс.
  12. Смешная цена. За год использования, то есть возможно продление на следующий год. Продлевать нет смысла только если разработка/обслуживание полностью завершены. Экспертные продажи.
  13. Повышение устойчивости системы к авариям, вызванным ошибками структуры БД. Использование приложения позволяет обнаружить ошибки БД сразу же после обновления целевой среды, после чего сразу предпринять действия для исправления найденных ошибок.

Совместимость.

Приложение совместимо со всеми продуктами на платформе bpm’online (с версии 7.11, на остальных нужно тестировать, но скорее всего работать будет).
В данный момент не поддерживается работа на системах, для которых используется СУБД Oracle.

Большое спасибо всем, кто дочитал до конца!

Буду рад любым предложениям по совершенствованию продукта!

С уважением, Сергей Кузнецов.

Поделиться

1 комментарий

yes

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

Здравствуйте.
Возникла потребность построить график "Количество лидов, показатель продаж за последние 2 месяца".

Т.е. есть общая ось абсцисс - Х (2 месяца).
Различные оси ординат:
- количество лидов;
- количество денег.

Кто-нибудь решал такие кейсы, как максимально просто это сделать?

У меня такой же вопрос

1 комментарий

Здравствуйте!

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

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

Здравствуйте! Продукт sales enterprice 7.9.0.
Необходимо принудительно сортировать записи на детали по колонке "Дата создания" по возрастанию.
При этом пользователь должен иметь возможность сортировать записи по своему усмотрению с помощью стандартных средств сортировки на детали. Но при добавлении новой записи на детали должна снова применяться принудительная сортировка скриптом записей по возрастанию даты создания. Как это реализовать?

Вот код:

details: /**SCHEMA_DETAILS*/{
"UsrCommerceOfferForSale": {
"schemaName": "UsrCommerceOfferForSale",
"entitySchemaName": "UsrOfferForSale",
"filter": {
"detailColumn": "UsrOffers",
"masterColumn": "Id"
},
"filterMethod": "UsrCommerceOfferForSaleFilter"
}
},

methods: {
UsrCommerceOfferForSaleFilter: function() {
var filterGroup = new Terrasoft.createFilterGroup();
filterGroup.add("UsrCommerceOfferForSaleByUsrOffers", Terrasoft.createColumnFilterWithParameter(
Terrasoft.ComparisonType.EQUAL, "UsrOffers", this.get("Id")));
/* Фильтр по одному значению */
filterGroup.add("CreatedOn", Terrasoft.createColumnFilterWithParameter(
Terrasoft.ComparisonType.EQUAL,
//Здесь непонятно, как отсортировать по возрастанию даты создания
return filterGroup;
},
}

У меня такой же вопрос

1 комментарий

Сомневаюсь, что в фильтре можно задавать сортировку. Я бы смотрел:
1) В сторону метода заполнения коллекции GridData в детали. Желательно докопаться до esq запроса в бд и вставить что-то вроде

var col = esq.addColumn("CreatedOn");
col.orderDirection = Terrasoft.OrderDirection.ASC;
col.orderPosition = 0;

2) В описании Grid(опять же в детали) в diff вроде есть

"sortColumn": {"bindTo": "sortColumn"},
"sortColumnDirection": {"bindTo": "GridSortDirection"},
"sortColumnIndex": {"bindTo": "SortColumnIndex"}

Скорее всего и тут можно задать

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

Здравствуйте.
Как решить следующий бизнес-кейс?

Клиент понял, что необходимо работать над улучшением показателя "Длительность сделки".
Первым шагом является построение системы, которая позволит видеть значение средней длительности сделок за период и производить drill down до конкретного списка(представления).

Цель: вывести показатель "Средняя длительность сделок за период", Построить график "Распределение сделок по длительности".

Предлагаемое решение: в карточке "Продажа" есть показатель "Дней в воронке". Необходимо как-то выделить его в отдельные записи, выбрав по периоду.
И вывести среднеарифметическое за период.
Плюс построить график с распределением.

У меня такой же вопрос

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

Здравствуйте!

Показатель "Дней в воронке" считается "на лету" при открытии страницы редактирования "Продажи". Код, который отвечает за отображение дней в воронке:

updateDaysInFunnelValue: function(dueDate) {
	dueDate = dueDate || new Date();
	var createdOnValue = this.get("CreatedOn") || new Date();
	var dateNow = Terrasoft.clearTime(dueDate);
	createdOnValue = Terrasoft.clearTime(createdOnValue);
	var days = Terrasoft.dateDiffDays(createdOnValue, dateNow);
	days = Terrasoft.getFormattedNumberValue(days,
			{type: Terrasoft.DataValueType.INTEGER});
	this.set("DaysInFunnel", days > 0 ? days : "0");
},

В базовой версии, работая с объектом "Продажа" отобразить нужную аналитику не получится.

Что нужно сделать:
1) Создать объект VwOpportunityAnalitic, унаследовавшись от базового объекта и указав в свойствах объекта "Представление".
2) В объект добавить поля:

  • Дней в воронке - тип "Целое число" (DueDate)
    • Дата закрытия - тип "Дата/время" (DaysInFunnel)

        3) Опубликовать объект
        4) Создать представление в БД скриптом:

        create VwOpportunityAnalitic
        as
        (select Id, createdOn, DueDate, max(DueDate-createdOn, 0)) as DaysInFunnel

        В результате аналитику нужно будет строить по объекту VwOpportunityAnalitic, который будет содержать в себе все значения.

        Ограничить период вы сможете фильтрами, например:
        Дата создания >= [#Начало периода#] И Дата создания <= [#Завершение периода#]
        ИЛИ
        Дата завершения>= [#Начало периода#] И Дата завершения <= [#Завершение периода#]

    Спасибо, будем пробовать.

    "Демьяник Алексей" написал:

    Здравствуйте!

    Показатель "Дней в воронке" считается "на лету" при открытии страницы редактирования "Продажи". Код, который отвечает за отображение дней в воронке:

    updateDaysInFunnelValue: function(dueDate) {
            dueDate = dueDate || new Date();
            var createdOnValue = this.get("CreatedOn") || new Date();
            var dateNow = Terrasoft.clearTime(dueDate);
            createdOnValue = Terrasoft.clearTime(createdOnValue);
            var days = Terrasoft.dateDiffDays(createdOnValue, dateNow);
            days = Terrasoft.getFormattedNumberValue(days,
                            {type: Terrasoft.DataValueType.INTEGER});
            this.set("DaysInFunnel", days > 0 ? days : "0");
    },
    В базовой версии, работая с объектом "Продажа" отобразить нужную аналитику не получится.

    Что нужно сделать:
    1) Создать объект VwOpportunityAnalitic, унаследовавшись от базового объекта и указав в свойствах объекта "Представление".
    2) В объект добавить поля:

    • Дней в воронке - тип "Целое число" (DueDate)
      • Дата закрытия - тип "Дата/время" (DaysInFunnel)

          3) Опубликовать объект
          4) Создать представление в БД скриптом:

          CREATE VwOpportunityAnalitic
          AS
          (SELECT Id, createdOn, DueDate, max(DueDate-createdOn, 0)) AS DaysInFunnel

          В результате аналитику нужно будет строить по объекту VwOpportunityAnalitic, который будет содержать в себе все значения.

          Ограничить период вы сможете фильтрами, например:
          Дата создания >= [#Начало периода#] И Дата создания <= [#Завершение периода#]
          ИЛИ
          Дата завершения>= [#Начало периода#] И Дата завершения <= [#Завершение периода#]

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

      Здравствуйте.
      Как решить следующий бизнес-кейс?

      Клиент - компания, которая продает свои услуги с помощью создаваемых мероприятий.
      Например, оффлайн-семинаров или вебинаров.

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

      Предлагаемое решение: необходимо провести связь между сущностью "Продажа, завершенная с успехом" и сущностью "Мероприятие". Настроить необходимые справочники и выводить необходимую информацию.
      Коробочный функционал позволяет это сделать?

      У меня такой же вопрос

      1 комментарий

      Добрый день,

      Такую задачу можно решить, если в продаже добавить деталь "Мероприятия в продажах". В базовой версии приложения связи с разделами [Мероприятия] и [Продажи] отсутствует.

      Приятной работы!

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

      Здравствуйте.

      Подскажите, как реализовать следующий бизнес-кейс?

      У клиента настроена контекстная реклама в ЯД, GA.
      К примеру 15,000 уникальных UTM-меток до каждой поисковой фразы.

      Есть цель: оптимизировать рекламный бюджет.

      Предлагаемое решение: выяснить, с помощью объявлений на каких поисковых запросах было заработано больше всего денег. И построить график распределения выручки по успешно закрытым сделкам в зависимости от поисковой фразы.

      В карточке "Лида" на вкладке "История" есть параметр "Источники лида".
      Для решения кейса нужно заливать 15,000 уникальных источников лида, привязанных к сущности "Канал"?

      У меня такой же вопрос

      3 комментария

      Добрый день,

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

      Оставайтесь с нами!

      Ориентироваться на апрель 2017?

      "Адасюк Валерий Викторович" написал:

      Добрый день,

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

      Оставайтесь с нами!

      Алмаз Гумерович, ориентироваться на апрель.

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

      Коллеги, как реализовать виджет, отображающий процентное отношение , например процент просроченных обращений в службу Service Desk. В версии 7.8 присутствует только виджет "Индикатор" отображающий количество на заданной шкале. Ввести формулу преобразования в настройках возможности нет и этот виджет несколько другое. Только кодить? Готовых решений нет? Функциональность постоянно востребована заказчиками. Спасибо

      У меня такой же вопрос

      5 комментариев

      Согласен, очень востребованное решение.

      Согласен, очень востребованное решение.

      Здравствуйте!

      Коллеги, к сожалению, в bpm'online нет возможности отобразить соотношение между двумя показателями.

      Для решения необходимо использовать обходное решение.
      Что можно сделать:
      1) Создать объект в bpm'online, унаследовавшись от базового. Обязательное условие - в свойствах объекта указано свойство "Представление в БД". В объект необходимо добавить поле UsrResult с типом дробное число. Предположим объект был назван UsrNewVw.
      Объект необходимо опубликовать.

      2) После публикации объекта необходимо создать представление в БД. Для этого нужно выполнить скрипт:

      create view UsrNewVw
      as (select [Реализация подсчета %] as UsrResult from [Case] where [Опциональное условие])

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

      "Демьяник Алексей" написал:В результате в представлении будет значение, которое необходимо отобразить на дашборде, например, используя показатель.

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

      Поэтому нужен универсальный виджет

      Здравствуйте, Владимир!

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

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

      Доброго дня.

      Є маркетингова компанія - один з її кроків, тригерний лист-нагадування з двома кнопками "Я буду" і "Я не буду". ВІд нього виходить потік з умовою "Есть переход" до "ПОдії". Питання наступне - як відслідкувати яку саме кнопку натиснув в листі користувач і в залежності від кнопки повести кампанію по тій чи іншій гілці???
      На разі є тільки одна умова "Есть переход" - але я ніде не знайшов як можна налаштувати її так, щоб вона розрізняла по якій саме кнопці перехід

      У меня такой же вопрос

      1 комментарий

      Добрый день!

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

      Более подробную информацию о бизнесс-процессах Вы можете просмотреть тут:
      https://academy.terrasoft.ru/documents/technic-bpms/7-8-0/obzor-vozmozh…

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

      Доброго дня.

      Є маркетингова компанія - один з її кроків, тригерний лист-нагадування з двома кнопками "Я буду" і "Я не буду". ВІд нього виходить потік з умовою "Есть переход" до "ПОдії". Питання наступне - як відслідкувати яку саме кнопку натиснув в листі користувач і в залежності від кнопки повести кампанію по тій чи іншій гілці???
      На разі є тільки одна умова "Есть переход" - але я ніде не знайшов як можна налаштувати її так, щоб вона розрізняла по якій саме кнопці перехід

      У меня такой же вопрос

      1 комментарий

      Обсуждение ведется в этой теме

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

      Здравствуйте.
      У меня есть Лендинг. По нему создается лид и контакт. Можна ли в карточке контакта отобразить поле Лендинга по котором произошла реестрация данного контакта? Если да, то как это реализовать?

      У меня такой же вопрос

      1 комментарий

      Николай,
      лендинг и контакт не связаны напрямую, они связаны через лид. Поэтому для связи лендинга и контакта необходимо:
      1) Добавить на страницу контакта поле "Лендинг", аналогичное тому, что находится на странице лида во вкладке "История";
      2) Создать бизнес-процесс, который бы копировал значение поля "Лендинг" из лида в контакт, при добавлении нового контакта.

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