Как обновить приложение с версии 7.8.2 на с 7.8.3

Не могу найти документацию.

Нравится

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

Добрый день, Максим!

Документацию по обновлению системы Вы найдете по ссылке:
https://academy.terrasoft.ru/documents/instrukciya-po-obnovleniyu-bpmon…

За необходимым дистрибутивом Вам необходимо обратиться в службу поддержки:
support@terrasoft.ru

Показать все комментарии

Добрый день, подскажите как поставить фильтр на открывающееся окно выбора основного контакта для контрагента? Нашел что подключается для этого островка ContactProfileSchema но как туда прокинуть фильтр не смог разобраться

Нравится

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

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

Вы просто очистили кэш? или пересохранили схему?

Показать все комментарии

Рады сообщить о выпуске нового видеоролика по работе с почтой.
Из видеоурока "Работа с почтой в bpm'online 7.8" вы узнаете, как синхронизировать систему с почтовым ящиком, как связать письмо с записями разделов системы, как составить и отправить письмо непосредственно из bpm'online.
Видео доступно по ссылке: Работа с почтой в bpm'online 7.8

Нравится

Поделиться

0 комментариев
Показать все комментарии

Представляем новый пакет обновлений CRM-линейки bpm’online.

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

Среди изменений:

  • Bpm’online marketing. Упрощен интерфейс настройки сервиса email-рассылок. Теперь все настройки, которые нужны для отправки рассылок, собраны на одной странице, при этом система дает рекомендации, какие именно настройки и для чего следует заполнить. Помимо этого, реализована возможность настраивать трекинг событий для сайтов с динамически генерируемыми URL.
  • Bpm’online sales. Для компаний, работающих с несколькими валютами, обновлен интерфейс управления курсами валют. Появилась возможность, наравне с курсом выбранной валюты относительно базовой, указывать курс базовой валюты относительно выбранной.
  • Bpm’online service. Теперь вы можете управлять поведением системы при получении нежелательных писем на почтовый ящик службы поддержки: определять, какие письма считать нежелательными, регистрировать ли по ним обращения и как именно это делать. Кроме того, упрощена первичная настройка портала самообслуживания и улучшена функциональность при работе с вложениями на портале.
  • Импорт из Excel. Доработаны правила обработки дублирующихся значений, повышена информативность сообщений об ошибках в исходных данных. Добавлена возможность в один клик перейти ко всем загруженным записям, как только импорт был завершен.
  • Дизайнер контента. Расширен список блоков контента, доступных при подготовке шаблонов. Кроме того, при работе с текстом добавлена возможность переключения в расширенный режим для просмотра и редактирования html-кода.
  • Инструменты пользовательской настройки. Мы не только постоянно развиваем инструменты для простой пользовательской настройки системы, но также дополняем bpm’online средствами защиты от ошибок при кастомизации. Например, если из объекта были удалены колонки, то при настройке страницы в мастере разделов система отметит такие колонки, чтобы вы не забыли их удалить со страницы.

Узнайте больше на сайте Академии Terrasoft.

Нравится

Поделиться

0 комментариев
Показать все комментарии

Добрый день.
Ситуация следующая:
Есть два замещающих объекта Case. Один находится в пакете для разработке. Второй - в пакете Custom. Возникла необходимость реализовать логику в casePage, затрагивающую поля из Case в пакете Custom. Но дилемма в том, что логика должна быть реализована в пакете для разработки.
Вопрос как перенести объект Case из Custom в пакет для разработки (слить два замещающих объекта), чтобы не затереть существующую логику, уже реализованную в Case пакета разработки?

Нравится

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

Добрый день, Игорь!

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

Во-первых, нужно проверить не нарушена ли у Вас иерархия пакетов. Пакет Custom должен быть последним в иерархии всегда. И по-хорошему наследоваться от всех других пакетов в системе и от пакета разработки, но это уже не обязательно.

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

Слияние необходимо выполнить для 2-х типов схем: EntitySchema и ClientUnitSchema

Рассмотрим слияние EntitySchema:

В объекте Case из пакета Custom добавлены кастомные колонки, которые Вы хотите перенести.
Открываем объект Case из пакета разработки на редактирование добавляем колонки, которые сейчас есть в объекте Case пакета Custom с такими же именами и соответствующими типами. Не закрывая дизайнер удаляем объект Case из пакета Custom и сразу сохраняем и публиуем объект Case, в который Вы переносили изменения.

Рассмотрим слияние ClientUnitSchema:

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

1.Открываем обе схемы в дизайнерах. Если посмотреть на содержимое схем, то можно заметить, что некоторые свойства объекта содержат значение (в данном случае diff). Пример на скриншоте "image2".
2. Дальше необходимо анализировать содержимое каждого элемента в diff-е.
3. Ищем совпадающие элементы по полям «opperation» и «name»
4.Анализируем значение полей свойства «values»:
- Если в новой версии такого поля нет, то добавляем
- Если в новой версии такое поле есть, то подменяем его значение
5. Если в схеме, в которую переносим данные, нет элементов с соответствующими полями «opperation» и «name», то переносим элемент целиком. Пример на скриншоте image3
6. Выполняем п.п. 3-5 для всех элементов объекта, который возвращает функция.
7. После переноса/слияния всех данных, схему из пакета Custom можно удалить.

Михаил, здравствуйте!
Спасибо за ответ!
Как раз таки слияние ClientUnitSchema не взывает затруднения.
А вот к EntitySchema есть вопросы. Не затрётся ли содержимое переносимых полей при реализации описанной схемы?

Добрый день, Игорь!
Описанный ранее метод слияния EntitySchema вполне рабочий и несколько раз сам его применял.
Если все делать согласно инструкции, то проблем быть не должно. Единственный совет, откройте данные объекты (который будете удалять и который будете изменять) в разных браузерах, так будет надежнее. Если у Вас есть предостережения, Вы можете протестировать на тестовой сборке.

Всё получилось. Спасибо.

Показать все комментарии

Добрый день.
Необходимо получить выборку из справочника City, где не заполнено поле RegionId
Делаю Get запрос:

Url сайта>/0/ServiceModel/EntityDataService.svc/CityCollection?$filter=Region/Id eq guid'00000000-0000-0000-0000-000000000000'

В ответ приходит:

version="1.0" encoding="utf-8"?> xml:base="http:///0/ServiceModel/EntityDataService.svc/" xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">>http:// сайта>/0/ServiceModel/EntityDataService.svc/CityCollection></span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text"</span><span style="color: #000000; font-weight: bold;">></span></span>CityCollection<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">>>2016-10-31T13:34:09Z> rel="self" title="CityCollection" href="CityCollection" />> />>>

Если подставить в фильтр Id существующего региона, то фильтр отрабатывает корректно.

Как реализовать данный кейс?

Нравится

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

Добрый день.
Необходимо сделать блок ProfileContainer для вывода информации из пользовательского справочника.
Делал по инструкции из поста
В качестве MasterColumn для фильтрации данных ProfileContainer используется поле CityId карточки Лида. Внешним ключом в справочнике выступает поле UsrCityId.
При инициализации ProfileContainer`а происходит ошибка при получении entityStructure моего справочника в методе initTypeColumnName (моего справочника нет вообще в перечне сущностей Terrasoft.configuration.EntityStructure).
Вопросы:
1. Как добавить пользовательский справочник в Terrasoft.configuration.EntityStructure?
2. Как более правильно реализовать описанную выше задачу, при условии, что фильтрация в ProfileContainer будет производиться не по полю Id, а по справочному полю UsrCityId c префиксом Usr?

Нравится

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

Здравствуйте, Игорь.

1) Проверьте, корректно ли был создан справочник. Так же проверьте описан ли данный справочник в define модуля.

2) Вам следует воспользоваться свойством profileColumnName. viewModelConfig должен выглядеть примерно следующим образом:

"viewModelConfig": {
masterColumnName: "City",
"profileColumnName": "UsrCity"
}

Здравствуйте, Илья! Спасибо за ответ.
1. Справочник наследуется от базового объекта. Название схемы справочника добавлено в define (как в вашем примере).
2. В модуле карточки Лида уже использую profileColumnName

  modules: /**SCHEMA_MODULES*/ {
            "InterventionCostProfile": {
                "config": {
                    "schemaName": "CostProfileSchema",
                    "isSchemaConfigInitialized": true,
                    "useHistoryState": false,
                    "parameters": {
                        "viewModelConfig": {
                            "masterColumnName": "City",
                            "profileColumnName": "UsrCity"
                        }
                    }
                }
            }
        },
        /**SCHEMA_MODULES*/

Но, к сожалению, в методе initTypeColumnName в переменную entityStructure приходит Undefine вместо структуры схемы.
Может что-то упустил.

Здравствуйте, Игорь.

1) Попробуйте выполнить компиляцию конфигурации, а также пере генерировать исходные коды.
2) Так же рекомендую Вам смотреть в сторону создания своего модуля по аналогии с BaseProfileSchema, поскольку данная схема не предназначена для фильтрации по пользовательским колонкам.

Показать все комментарии

Добрый день.
При фиксации пакета в репозитории возникает ошибка

"Ошибка при работе с системой контроля версий. Ошибка при работе с хранилищем. Необходима синхронизация с сервером"

После обновления пакета из репозитория и повторной фиксации ошибка повторяетя.
До сегодняшнего дня пакет фиксировал нормально.

Никакие манипуляции с репозиторием за это время не проводились.
Как решить данную проблему?
Версия 7.8.0.3374

Нравится

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

Здравствуйте, Игорь!

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

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

Показать все комментарии

Добрый день.
При фиксации пакета в репозитории возникает ошибка

"Ошибка при работе с системой контроля версий. Ошибка при работе с хранилищем. Необходима синхронизация с сервером"

После обновления пакета из репозитория и повторной фиксации ошибка повторяетя.
До сегодняшнего дня пакет фиксировал нормально.

Никакие манипуляции с репозиторием за это время не проводились.
Как решить данную проблему?

Нравится

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

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

Выполните сперва действие "Обновить пакет из хранилища", затем уже фиксируйте.

Если все схемы с которыми Вы работали заблокированны, то изменения не потеряются.
Чтоб обезопаситься, удалите папки TerrasoftPackages и Svn которые лежат по пути:
"%TEMP%\%APPLICATION%\%WORKSPACE%.

Пример расположения из файла ConnectionString:

<add name="defPackagesWorkingCopyPath" connectionString="%TEMP%\%APPLICATION%\%WORKSPACE%\TerrasoftPackages />
 
<add name="sourceControlAuthPath" connectionString="%TEMP%\%APPLICATION%\%WORKSPACE%\Svn />

Илья, спасибо за совет, но предложенные вами действия я уже произвёл неоднократно. + переехал на другой репозиторий.
Без результата. Ошибка та же.

Показать все комментарии

Добрый день.
Добавил в мини-карточку активности два поля:
1. справочник "Контрагент" ("contentType": 5)
Проблема: после выбора значения справочника не закрывается пустое модальное окно LookupPage
2. Дата/время
Проблема: После выбора даты из календаря мини-карточка активности закрывается без сохранения.
Данное поведение наблюдается в мини-карточке вызываемой в LeadSectionActionsDashboard по нажатию на "Завершить" во "View" Mode. В "Edit" Mode всё в порядке.

Как альтернатива хотел отключить "View" Mode и загружать сразу "Edit" Mode. Переопределил атрибут

"Mode": {
                dataValueType: this.Terrasoft.DataValueType.TEXT,
                type: this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
                value: this.Terrasoft.ConfigurationEnums.CardOperation.EDIT
            },
            "MiniPageModes": {
                    dataValueType: this.Terrasoft.DataValueType.COLLECTION,
                    type: this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
                    value: [this.Terrasoft.ConfigurationEnums.CardOperation.VIEW, this.Terrasoft.ConfigurationEnums.CardOperation.EDIT]
                },

Но так и загружается мини-карточка в "View" Mode.
Версия 7.8.0.1681

Нравится

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

Ещё один нюанс:
Добавил в мини-карточку активности поле список "Стадии продажи"
Добавляю сортировку поля в массив attributes:

"UsrOpportunityStage": {
   dataValueType: Terrasoft.DataValueType.LOOKUP,
   columns: ["Number"],
   lookupListConfig: {
     orders: [{
       columnPath: "Number",
       direction: Terrasoft.OrderDirection.ASC,
      }]
   }
}

В итоге сортировка не отрабатывает.
Аналогичные настройки в стандартной PageV2 отрабатывают корректно.

Для переключения режимов посмотрите в сторону функции базовой мини-карточки «switchMiniPageMode», которая в свою очередь вызывает changeMiniPageMode с нужным параметром. И делайте переключение в нужный вам режим в нужный вам момент.

Добрый день, Илья!
А что вы можете порекомендовать по поводу решения проблем, описанных в пунктах 1 и 2 и проблемой с сортировкой справочных полях?

"Мотков Илья" написал:Для переключения режимов посмотрите в сторону функции базовой мини-карточки «switchMiniPageMode», которая в свою очередь вызывает changeMiniPageMode с нужным параметром. И делайте переключение в нужный вам режим в нужный вам момент.

Сделал по Вашему совету. Вызываю switchMiniPageMode() в onRender.
По итогу мини-карточка открывается в edit Mode. Казалось бы "Ура!!!" Но нет:smile:
Т.к. у меня есть поля, которые отображаются по условию, то после выполнения условия поля появляются, высота самой мини-карточки увеличивается, а её положение не меняется.
И в итоге я получаю кнопку "Сохранить" за пределами экрана и без возможности скроллинга (http://joxi.ru/RmzbjObHllMlmO).
Положение, мини-карточки определяется стилями, применёнными к тэгу div с id = AlignableMiniPageContainer, но где расчитываются top и left не нашёл.

"Коновалов Игорь" написал:Ещё один нюанс:
Добавил в мини-карточку активности поле список "Стадии продажи"
Добавляю сортировку поля в массив attributes:
"UsrOpportunityStage": {
   dataValueType: Terrasoft.DataValueType.LOOKUP,
   columns: ["Number"],
   lookupListConfig: {
     orders: [{
       columnPath: "Number",
       direction: Terrasoft.OrderDirection.ASC,
      }]
   }
}

В итоге сортировка не отрабатывает.
Аналогичные настройки в стандартной PageV2 отрабатывают корректно.

Оказалось, что сортировка в мини-карточках не реализована.
Решение:
1. Замещаем BaseMiniPage.
2. В блок methods переносим код из BasePageV2

 applyColumnsOrderToLookupQuery: function(esq, columnName) {
                var lookupColumn = this.getColumnByName(columnName);
                var lookupListConfig = lookupColumn.lookupListConfig;
                if (!lookupListConfig || !lookupListConfig.orders) {
                    return;
                }
                var columns = esq.columns;
                this.Terrasoft.each(lookupListConfig.orders, function(order) {
                    var orderColumnPath = order.columnPath;
                    if (!columns.contains(orderColumnPath)) {
                        esq.addColumn(orderColumnPath);
                    }
                    var sortedColumn = columns.get(orderColumnPath);
                    var direction = order.direction;
                    sortedColumn.orderDirection = direction ? direction : Terrasoft.OrderDirection.ASC;
                    var position = order.position;
                    sortedColumn.orderPosition = position ? position : 1;
                    this.shiftColumnsOrderPosition(columns, sortedColumn);
                }, this);
            },
 
            shiftColumnsOrderPosition: function(columns, sortedColumn) {
                 var sortedColumnOrderPosition = sortedColumn.orderPosition;
                if (Ext.isNumber(sortedColumnOrderPosition)) {
                    columns.each(function(column) {
                        if (column !== sortedColumn && Ext.isNumber(column.orderPosition) && column.orderPosition >= sortedColumnOrderPosition) {
                            column.orderPosition += 1;
                        }
                    });
                }
            },

3. И переопределяем метод getLookupQuery

 getLookupQuery: function(filterValue, columnName) {
                var esq = this.callParent(arguments);
                this.applyColumnsOrderToLookupQuery(esq, columnName);
                return esq;
            },

4. Чистим кэш и наслаждаемся работой сортировки справочных полей в мини-карточке :smile:

Показать все комментарии