Подскажите, пожалуйста, как можно реализовать кнопку и вкладку в разделе Контакты, аналогичные вкладке "Планирование визитов" в разделе Активности

Нравится

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

Добрый день!

Вам нужно сделать новое представление для раздела "Контакты". Пример реализации нового представления смотрите в схеме ActivitySectionV2 пакета FieldForce.

"Мария Ватулина" написал:

Добрый день!

Вам нужно сделать новое представление для раздела "Контакты". Пример реализации нового представления смотрите в схеме ActivitySectionV2 пакета FieldForce.

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

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

Добрый день.
Искал похожую тему на форуме - на нашел.

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

Нравится

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

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

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

Это только визуально скроет поля. Тем не менее их можно быт выбрать в фильтре или в представлении раздела. Для того, чтобы поля не отображались Вам необходимо удалить их из объекта (либо изменить режим использования на "Никогда").

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

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

Я создал кастомный пакет, зависимость поставил от OpportunitySectionV2
Что мне сейчас нужно сделать ? Замещающий клиентский модуль или замещающая страница?

Нравится

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

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

Замещающий клиентский модуль. Замещающая страница создается для редактирования интерфейса страниц, созданных в версии 5.Х.

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

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

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

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

Никакие манипуляции с репозиторием за это время не проводились.
Как решить данную проблему?
Версия 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 />

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

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

Как сделать множественный выбор в справочнике ? bpm 7.8

Нравится

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

Здравствуйте,
Поищите в системе упоминания строчки: multiSelect: true
Т.к. открыть справочник с мультивыбором можно передав в конфиг открытия именно это свойство. К примеру:

var config = {
   entitySchemaName: "Product",
   multiSelect: true,
   columns: ["Name", "Price", "Currency"]
};
 
this.openLookup(config, this.addCallBack, this);

А в функции колбека с результатом этого выбора уже что-то делать:

addCallBack: function(args) {
   this.selectedRows = args.selectedRows.getItems();
   this.selectedRows.forEach(function(item) {
      // какие-то действия
   }, this);
}

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

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

Пример можно найти в схеме ActivityParticipantDetailV2.

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

Добрый день
Я создала кнопку "Переслать", при ее нажатии - создается новая е-мейл с копированием некоторых данных из "старой" е-мейл. Пожалуйста, подскажите, как написать: если мне в поле Title в новой е-мейл нужно:
1) если поле Активность.Инцидент не заполнено, то defValues.Add("Title", Page.TitleEdit.Value.ToString());
2) если поле Активность.Инцидент заполнено, то Title надо указывать следующий текст: Обращение № __ (здесь указывать номер этого Инцидента)

Заранее спасибо

Нравится

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

Вы можете заказать такие доработки у компании Terrasoft или кого-то из партнёров.
Также можете изучить C# и запрограммировать самостоятельно.

поле Активность.Инцидент, это старая активность или только что созданная?

"Kurvan Muminov" написал:

поле Активность.Инцидент, это старая активность или только что созданная?

это старая

в принципе, я разобралась.

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

Добрый день, форумчане.

Задача: сделать деталь "Продукты в продаже" в виде иерархии. За основу решил взять деталь "Структура организации" из раздела "Контрагенты".

Создал свой объект SuOpportunityProductInterest. В качестве родителя указал объект "Продукт в продаже ( Opportunity )". В него
добавил справочное поле SuParent, где в качестве справочника указал SuOpportunityProductInterest.

Создал свою деталь на основе объекта SuOpportunityProductInterest.

На странице детали SuOpportunityProductDetailV2 написал следующий код:

define("SuOpportunityProductDetailV2", [/*"terrasoft"*/], function(/*Terrasoft*/) {
        return {
                entitySchemaName: "SuOpportunityProductInterest",
                details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
                        methods: {
                        /**
                                 * Открывает страницу добавления детали
                                 * @protected
                                 * @overridden
                                 * @param {String} editPageUId Значение колонки типа
                                 * @param {Boolean} keepParentId (optional) Не удалять из DefaultValues элемент с ключем Parent
                                 */

                                addRecord: function(editPageUId, keepParentId) {
                                        if (!keepParentId) {
                                                var defaultValues = this.get("DefaultValues");
                                                var result = this.Ext.Array.filter(defaultValues, function(item) {
                                                        return (item.name !== "SuParent");
                                                }, this);
                                                this.set("DefaultValues", result);
                                        }
                                        this.callParent(editPageUId);
                                },
                               
                                /**
                                 *Получает колонки, которые всегда выбираются запросом
                                 *@protected
                                 *@overridden
                                 *@return {Object} Возвращает колонки, которые всегда выбираются запросом
                                 */

                                getGridDataColumns: function() {
                                        var gridDataColumns = this.callParent(arguments);
                                        if (!gridDataColumns.SuParent) {
                                                gridDataColumns.SuParent = {
                                                        path: "SuParent"
                                                };
                                        }
                                        return gridDataColumns;
                                },
                       
                               
                                prepareResponseCollection: function(collection) {
                                        collection.each(function(item) {
                                                var parent = item.get("SuParent");
                                                var parentId = parent && parent.value;
                                                if (parentId) {
                                                        item.set("SuParentId", parentId);
                                                }
                                                Terrasoft.each(item.columns, function(column) {
                                                        this.addColumnLink(item, column);
                                                        this.applyColumnDefaults(column);
                                                }, this);
                                        }, this);
                                },

                               
                                getHideQuickFilterButton: function() {
                                        return false;
                                },
                               
                                getShowQuickFilterButton: function() {
                                        return false;
                                },
                               
                                updateDetail: function(config) {
                                        config.reloadAll = true;
                                        this.callParent([config]);

                                },

                               
                                getAddChildElementButtonEnabled: function() {
                                        return !this.Ext.isEmpty(this.getSelectedItems());
                                },
                               
                                addChildElementRecord: function() {
                                        var selectedItems = this.getSelectedItems();
                                        if (this.Ext.isEmpty(selectedItems)) {
                                                return;
                                        }
                                        var parentId = selectedItems[0];
                                        var defaultValues = this.get("DefaultValues");
                                        var result = this.Ext.Array.filter(defaultValues, function(item) {
                                                return (item.name !== "SuParent");
                                        }, this);
                                        result.push({
                                                        name: "SuParent",
                                                        value: parentId
                                                });
                                        this.set("DefaultValues", result);
                                        this.addRecord(null, true);
                                },
                               
                                clearSelection: function() {
                                        this.set("activeRow", null);
                                        this.set("selectedRows", null);
                                },

                               
                                onDeleteAccept: function() {
                                        var selectedRows = this.getSelectedItems();
                                        var batch = this.Ext.create("Terrasoft.BatchQuery");
                                        Terrasoft.each(selectedRows, function(recordId) {
                                                this.deleteItem(recordId, batch, this);
                                        }, this);
                                        if (batch.queries.length > 0) {
                                                batch.execute(this.onDeleted, this);
                                        }
                                },

                               
                                onDeleted: function(response) {
                                        if (response && response.success) {
                                                this.clearSelection();
                                        } else {
                                                this.showConfirmationDialog(
                                                        this.get("Resources.Strings.OnDeleteError"));
                                        }
                                },

                               
                                deleteItem: function(recordId, batch, scope) {
                                        var grid = scope.getGridData();
                                        var toDelete = new Terrasoft.Collection();
                                        grid.each(function(item) {
                                                var parent = item.get("SuParent");
                                                if (parent && parent.value === recordId) {
                                                        toDelete.add(item);
                                                }
                                        }, grid);

                                        Terrasoft.each(toDelete.getItems(), function(item) {
                                                this.deleteItem(item.get("Id"), batch, this);
                                        }, scope);
                                        if (grid.find(recordId)) {
                                                var selfDelete = grid.get(recordId);
                                                grid.remove(selfDelete);
                                                var query = this.Ext.create("Terrasoft.DeleteQuery", {
                                                        rootSchema: scope.entitySchema
                                                });
                                                var filter = Terrasoft.createColumnFilterWithParameter(
                                                        Terrasoft.ComparisonType.EQUAL, "Id", recordId);
                                                query.filters.addItem(filter);
                                                batch.add(query);
                                        }
                                }
                               
                },
                diff: /**SCHEMA_DIFF*/[
                                {
                                   "operation": "merge",
                                   "name": "DataGrid",
                                   "values": {
                                          "type": "listed",
               
                                                  //включает иерархичность реестра детали
                                      "hierarchical": true,
                                      "hierarchicalColumnName": "SuParent"
                                                }                          
                                },
                                {
                                        "operation": "merge",
                                        "name": "AddRecordButton",
                                        "values": {
                                                visible: false
                                        }
                                },
                                {
                                        "operation": "insert",
                                        "name": "AddRecord",
                                        "parentName": "Detail",
                                        "propertyName": "tools",
                                        "index": 1,
                                        "values": {
                                                itemType: Terrasoft.ViewItemType.BUTTON,
                                                menu: [],
                                                "imageConfig": {"bindTo": "Resources.Images.AddButtonImage"},
                                        //      "caption": {"bindTo": "Resources.Strings.AddButtonCaption"},
                                                "visible": {"bindTo": "getToolsVisible"}
                                        }
                                },
                                {
                                        "operation": "insert",
                                        "name": "AddParentRecordButton",
                                        "parentName": "AddRecord",
                                        "propertyName": "menu",
                                        "values": {
                                                "caption": {"bindTo": "Resources.Strings.AddRootElementButtonCaption"},
                                                "click": {"bindTo": "addRecord"}
                                        }
                                },
                                {
                                        "operation": "insert",
                                        "name": "AddChildElementButton",
                                        "parentName": "AddRecord",
                                        "propertyName": "menu",
                                        "values": {
                                                "caption": {"bindTo": "Resources.Strings.AddChildElementButtonCaption"},
                                                "click": {"bindTo": "addChildElementRecord"},
                                                "enabled": {"bindTo": "getAddChildElementButtonEnabled"}
                                        }
                                },
                                {
                                        "operation": "remove",
                                        "name": "FiltersContainer"
                                }
                ]/**SCHEMA_DIFF*/
       
        };
});

Если я добавляю корневой элемент, то все хорошо, запись отображается. Если добавляю подчиненный элемент, то запись не отображается.
Причина в том, что при добавлении подчиненного элемента не записываются значения в колонки
OpportunityId и SuParentId в таблице SuOpportunityProductInterest. Если в них вручную добавить значения, то подчиненная запись отобразится.

В чем может быть проблема? Заранее благодарен

Нравится

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

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

Нравится

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

Добрый день.

Как удалить деталь, которая обьявлена в родительской схеме, из замещаемой схемы?

Нравится

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