Создание новой детали при помощи Мастера деталей
Технические вопросы
7.x

День добрый!

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

Шаги создания Детали:
1) Создал Объект (Базовый справочник)
2) Создал Справочник + страницу редактирования справочника, как понимаю, данный пункт не обязателен. Нужен для удобства.
3) в Мастере Деталей добавил новую деталь. Выбрал нужный объект, Заголовок идентичен Объекту (Скрин приложен. 0006). Настроил страницу редактирования Детали. Сохранился, откомпелировался…
4) в карточке Контрагента добавил данную деталь на страницу (Скрин приложен. 0008). Добавил видимость отображаемых колонок.

Все в принципе работает, Нужные детали отрабатываются и принимаются, как надо.
ТОЛЬКО Имя детали отображается Имя детали> ( Скрин приложен. 0010)

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

Нравится

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

Покапался....

Проблема заключается в пробеле "Пункты доставки". (Скрин приложен. 0011)
При таком заполнении Caption в контрагенте имя детали отображается "<Имя детали>"
Если убрать пробел, то все отрабатывает нормально.

На данный момент решил проблему добавления скобок <> (Скрин приложен. 0012 и 0013)

Остался вопрос, возможно ли добавлять детали с указанием имен с двумя - тремя словами....

В схеме детали есть Localizable String "Caption". И у Value есть справа кнопка названия на разных языках. В английской версии там вручную надо прописывать заголовок детали. Может, у вас та же ситуация

"Владимир Соколов" написал:

В схеме детали есть Localizable String "Caption". И у Value есть справа кнопка названия на разных языках. В английской версии там вручную надо прописывать заголовок детали. Может, у вас та же ситуация


Да, Вы правы, в этом окне и ввожу изменения.
К сожалению наименования с пробелом не принимаются...

Валентин, здравствуйте!

Обычно в таком случае достаточно указать значение в Caption (схема детали).
Алгоритм:

1) Перейти в раздел "Конфигурация".
2) Найти и открыть на редактирование схему детали.
3) В структуре элементов схемы, в группе локализированных строк найти строку с именем Caption.
4) Сфокусироваться на свойстве "Значение" строки, кликнуть на иконку справа от свойства и указать значение для англоязычной локализации.

5) Выполнить в конфигурации действие "Компилировать всё".

Если не помогло, то попробуйте, сохранить проблемную карточку

Жаль, что до сих пор не исправили этот баг

"Вильшанский Дмитрий" написал:4) Сфокусироваться на свойстве "Значение" строки, кликнуть на иконку справа от свойства и указать значение для англоязычной локализации.

Хм... Кнопки нет, пробовал в разных браузерах. + отображение "Все"
Конфа 7.5.0

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

Показать все комментарии
Реализована
7.x
быстрый фильтр
группа
мобильное приложение

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

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

Добрый день, Владимир!

Добавлять дополнительные поля в мобильное приложение возможно с версии 7.5, посредством мастера мобильного приложения.
Расширенный поиск по всем полям уже запланирован, в версию 7.7 он еще не войдет, но в последующие планируем включить.
Что касается добавления работы со статическими группами\тегами – планируем в 7.7.

Добрый день!

В релизе 7.11 реализована функциональность быстрой фильтрации в разделах и деталях мобильного приложения. Для поиска нужных записей в разделе (или на детали) можно настроить "быстрый" фильтр по колонкам объекта. 

Наталия Крылова,

Добрый день! А как можно искать в мобильном приложении не по самим колонкам объекта, а по связанным колонкам. Например, находясь в активностях, отфильтровать активности по контрагенту определенного типа, и т.п.

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

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

Здравствуйте.
Для проекта интернет-магазина подойдёт ли двусторонняя онлайн интеграция?
Новые товары будут добавляться контент-менеджерами через сайт-админку, заказы так же будут приходить через сайт. Оформление заказа посредством телефона будет осуществляться через bpm'online sales.
Или же для этого нужно будет просто перекинуть всю базу товаров в систему bpm'online sales?
И в каком разделе происходит настройка интеграции?
Спасибо.

Нравится

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

Добрый день, Дмитрий!

В вашем случае подойдет вариант с выгрузкой продуктов, которую можно осуществить через импорт из excel. Подробно ознакомиться с данным вопросом Вы можете просмотреть видеоурок на нашем ресурсе http://academy.terrasoft.ru/news/?id=37 , а также с документацией по продукту http://academy.terrasoft.ru/documents/?product=omnichannel&ver=7.6.0 в разделе "Синхронизация и импорт из других систем" - "Универсальный импорт записей".

Добрый вечер, Валерий.
Получается, что мне постоянно нужно будет обновлять систему вручную, а все продукты заново вписывать в excel-файл? Неужели нельзя, совместить обе платформы, чтобы при добавлении нового товара на сайте интернет-магазина и он автоматически добавлялся в bpm'online?
Благодарю.

Дмитрий, реализовать пользовательскими средствами возможности нет. Но в свою очередь система поддерживает возможность интеграции на уровне баз данных, таким образом Вы можете через самописную утилиту, либо же при помощи глобального поиска в интернет найти нужную Вам, и передавать данные из базы своего сайта в базу bpm`online. Также система bpm`online поддерживает интеграцию по протоколу ODATA. Подробно с возможностями интеграции можно ознакомиться на нашем ресурсе http://www.terrasoft.ru/bpmonlinesdk/ в разделе "Возможности интеграции с bpm`online по протоколу Odata". Но так как для реализации обоих вариантов требуется привлечение разработчиков, то был рекомендован вариант, который предполагает всего лишь использование базовой функциональности системы.

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

Валерий, большое спасибо за подробную информацию.

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

Добрый день. Продукт bpm'online sales enterprise 7.6
Возможно ли настройка системы поиска так, чтобы нужный контакт, контрагент или же продукт находился не только по первому слову?
Например, в разделе продукты имеется "Телевизор Sharp". Когда в поисковике вводится слово "телевизор" всё нормально находит. Но если ввести слово "Sharp", то система уже ничего не находит.
Как возможно исправить данную ситуацию?
Благодарю.

Нравится

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

Добрый день, Дмитрий!

Попробуйте воспользоваться маской поиска используя %%
Т.е Ваш поисковый запрос будет выглядеть %Sharp%
Например, запрос продукта "asus":
[IMG]http://s017.radikal.ru/i431/1507/1b/6a994f3d850d.jpg[/IMG]

"Сергей Кy6риш" написал:

Добрый день, Сергей.
Спасибо за помощь!

Возможно, в системных настройках 7.6 также осталось "Тип сравнения для строковых колонок" (StringColumnSearchComparisonType)

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

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

Вам необходимо в системной настройке "Тип сравнения для строковых колонок" (StringColumnSearchComparisonType) указать значение 1. После этого Вам необходимо повторно осуществить вход в систему.

Спасибо, все получилось)

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

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

Вам необходимо в системной настройке "Тип сравнения для строковых колонок" (StringColumnSearchComparisonType) указать значение 1. После этого Вам необходимо повторно осуществить вход в систему.


Здравствуйте. А можно ли так же настроить поиск для всех остальных строк? Допустим при добавлении продукта в заказ, там уже приходится пользоваться "%%" для нахождение нужного продукта. Такая же ситуация и при поиске контакта в разделе "Лиды".
Спасибо

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

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

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

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

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


Можете рассказать как именно это сделать?

"Астапеева Анастасия" написал:

Можете рассказать как именно это сделать?

http://www.community.terrasoft.ru/forum/topic/25095#comment-66964

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

Можете рассказать как именно это сделать?

http://www.community.terrasoft.ru/forum/topic/25095#comment-66964

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

Анастасия, версия вашего приложения 5.Х. Данная ветка форума применима для версии 7.Х. Для корректного ответа прошу создать тему в версии 5.Х.

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

В разделе "Тестирование и сертификация" добавлен обновленный экзамен для проверки знаний по продуктовым линейкам "Service", ''Sales" и "Marketing" версии 7.6.

Пройдите тест и подтвердите свою квалификацию!

Тестирования доступны для подписчиков и партнеров.

Нравится

Поделиться

0 комментариев
Показать все комментарии
Перенос
разработка
сервисы
Технические вопросы
7.x

Добрый день!
Хотела бы перенести сервисы, разработанные на копии сайта в другой сайт ( бизнес-процессы, справочники, замещающие клиентские модули).
Скажите, пожалуйста, как это оперативно сделать БЕЗ использования SVN
Насколько мне известно, существует специальная утилита для этого?
Версия 7.5

Нравится

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

И добавлю - не перенести при этом какие-то данные, использовавшиеся для тестов

"Владимир Соколов" написал:не перенести при этом какие-то данные

При этом перенести таки наполнение справочников наверняка будет полезно вместе с Id созданных там записей

Для переноса можно воспользоваться утилитой WorkspaceConsole.

Внизу этой темы есть ссылки с инструкциями (http://www.community.terrasoft.ru/forum/topic/11053)

Если правильно настроить "Данные" можно перенести и справочники с наполнением и не перенести тестовые данные.

Спасибо.
Вопрос по этой инструкции:

5. В D:\WorkspaceConsole\Packages копируем файлы пакетов (файлы-архивы *.gz, эти архивы НЕ нужно распаковывать), которые будем применять.

Как выгрузить файлы и откуда? Допустим, мне нужны не все сервисы в пакете, а какой-то один( например, бизнес-процесс)

Дарья, эти файлы - все пакеты, которые находятся в папке Packages Вашего сайта.
Если Вы хотите перенести только один пакет, сделайте следующее:
1. Перенесите его и пакет Manifest в D:\WorkspaceConsole\Packages.
2. Внесите поправки в файл в архиве Manifest.gz, а именно:

  • в массиве "Packages" оставить только элемент с атрибутом Name = "имя пакета"
  • у этого элемента очистить массив DependsOn

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

Дарья, пример команды для выгрузки рабочего пространства (из БД) в репозиторий (zip-архив)

Terrasoft.Tools.WorkspaceConsole.exe -operation=SaveDBContent -workspaceName=Default -destinationPath=D:\Temp\Repository\ -contentTypes=Repository

При этом:

destinationPath
Путь к локальной папке на диске для данных приемника.
Обязательный параметр.
Используется для операций: InstallFromRepository, ConcatRepositories, PrevalidateInstallFromRepository

SaveDBContent - работает в комбинации с параметром contentTypes. Если он содержит Data, то сохраняются в папку destinationPath данные всех схем в формате json, если - LocalizableData, то сохраняются в формате xml данные схем объектов (необходимо для локализации конфигурации), если - Resources, то выгружаются ресурсы схем в формате xml (так же необходимо для локализации, но уже самых схем объектов), если - Repository то в папку destinationPath выгружается рабочее пространство из БД в виде zip архивов

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

"Толмачев Дмитрий Юрьевич" написал:Если правильно настроить "Данные" можно перенести и справочники с наполнением и не перенести тестовые данные.

А "правильно" - это как и где?

Данные настраиваются на вкладке "Данные"

Данные

"Правильно" - это зависит от того какая задача у вас стоит при переносе через пакеты.

"Резвов Роман" написал:Terrasoft.Tools.WorkspaceConsole.exe -operation=SaveDBContent -workspaceName=Default -destinationPath=D:\Temp\Repository\ -contentTypes=Repository

На версии 7.8.0.3374 не выгружается Manifest.

"Резвов Роман" написал:Terrasoft.Tools.WorkspaceConsole.exe -operation=SaveDBContent -workspaceName=Default -destinationPath=D:\Temp\Repository\ -contentTypes=Repository

На версии 7.8.0.3374 не выгружается Manifest.

"Коновалов Игорь" написал:
Резвов Роман пишет:

Terrasoft.Tools.WorkspaceConsole.exe -operation=SaveDBContent -workspaceName=Default -destinationPath=D:\Temp\Repository\ -contentTypes=Repository

На версии 7.8.0.3374 не выгружается Manifest.

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

"Демьяник Алексей" написал:Начиная с версии 7.8.0.3374 манифест действительно не выгружается. Причина в том, что для накатки пакетов также не требуется манифест.

Поддержка on-demand для установки обновлений запросила у меня этот пакет.

Показать все комментарии
7.x
представление
Программные Технологии
ПТ
реестр
фильтрация
Центр разработки и внедрения Terrasoft-Поволжье
ЦРВ Террасофт Поволжье

Все блоги автора

Задача: необходимо реализовать возможность переключения реестра в разделе. То есть, находясь в разделе "Контрагенты" переключать реестры с физическими и юридическими лицами, причём у каждого реестра свои определенные колонки.

Изображение удалено.

Решение состоит из 2х частей:

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

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

Подготовлены спрайты кнопок:

Изображение удалено.

Изображение удалено.

Изображение удалено.

Размер 30*60. Смысл в том, чтобы при наведении мыши фон кнопки съезжал на 30 пикселей, и как бы подсвечивался. Создан модуль, назвать, например SmrCustomButtonsCSS и определить LESS:

.blue-button-wrapper {
     width: 30px;
     height: 30px;
     padding: 0px;
     margin: 0px 5px 0px 5px;
}
.blue-button-image {
     display: inline;
     background-position: 0px 0px;
     width: 30px;
     height: 30px;
     padding: 0px;
     margin: 0px;
}
.blue-button-image:hover {
     display: inline;
     background-position: 0px -30px;
}
.blue-button-pressed {
     display: inline;
     background-position: 0px -30px;
     width: 30px;
     height: 30px;
     padding: 0px;
     margin: 0px;
}

Создана замещающая страница "AccountSectionV2":

 

define("AccountSectionV2", ["ConfigurationConstants", "css!SmrCustomButtonsCSS"],
    function(ConfigurationConstants) {
        return {
            entitySchemaName: "Account",
            attributes: {  },
            methods: {
                showLegalView: function(){
                    this.sandbox. publish( "PushHistoryState", { hash : "SectionModuleV2/LegalAccountSectionV2" });
                },
                showIndividualView: function(){
                    this.sandbox. publish( "PushHistoryState", { hash : "SectionModuleV2/IndividualAccountSectionV2" });
                },
                showAllView: function(){
                    this.sandbox. publish( "PushHistoryState", { hash : "SectionModuleV2/AccountSectionV2" });
                },
                isSwitchButtonsContainerVisible: function() {
                    var isCardVisible = this.get("IsCardVisible");
                    return !isCardVisible;
                }
 
 
            },
            diff: /**SCHEMA_DIFF*/[
 
                {
                    "operation": "insert",
                    "name": "SwitchViewButtonsContainer",
                    "parentName": "ActionButtonsContainer",
                    "propertyName": "items",
                    "values": {
                        "itemType": Terrasoft.ViewItemType.CONTAINER,
                        "visible": {
                            "bindTo": "isSwitchButtonsContainerVisible"
                        },
                        "items": []
                    }
                },
                {
                    "operation": "insert",
                    "parentName": "SwitchViewButtonsContainer",
                    "propertyName": "items",
                    "name": "SwitchToAllDataView",
                    "values": {
                        "layout": {
                            "column": 23,
                            "row": 0,
                            "colSpan": 1,
                            "rowSpan": 1
                        },
                        "itemType": Terrasoft.ViewItemType.BUTTON,
                        "style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                        //"iconAlign": Terrasoft.controls.ButtonEnums.iconAlign.RIGHT,
                        iconAlign: Terrasoft.controls.ButtonEnums.iconAlign.TOP,
                        pressed: {bindTo: "LegalGridActive"},
                        "imageConfig": {
                            "source": Terrasoft.ImageSources.SOURCE_CODE_SCHEMA,
                            "params": {
                                "schemaName": "SmrCustomButtonsCSS",
                                "resourceItemName": "GridDataViewIconBlue"
                            }
                        },
                        classes: {
                            wrapperClass: "blue-button-wrapper",
                            imageClass: "blue-button-pressed"
                        },
                        "click": {"bindTo": "showAllView"}
                    }
                },
                {
                    "operation": "insert",
                    "parentName": "SwitchViewButtonsContainer",
                    "propertyName": "items",
                    "name": "SwitchToPersonalDataView",
                    "values": {
                        "layout": {
                            "column": 23,
                            "row": 0,
                            "colSpan": 1,
                            "rowSpan": 1
                        },
                        "itemType": Terrasoft.ViewItemType.BUTTON,
                        "style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                        //"iconAlign": Terrasoft.controls.ButtonEnums.iconAlign.RIGHT,
                        iconAlign: Terrasoft.controls.ButtonEnums.iconAlign.TOP,
                        pressed: {bindTo: "LegalGridActive"},
                        "imageConfig": {
                            "source": Terrasoft.ImageSources.SOURCE_CODE_SCHEMA,
                            "params": {
                                "schemaName": "SmrCustomButtonsCSS",
                                "resourceItemName": "GridPersonalDataViewIconBlue"
                            }
                        },
                        classes: {
                            wrapperClass: "blue-button-wrapper",
                            imageClass: "blue-button-image"
                        },
                        "click": {"bindTo": "showIndividualView"}
                    }
                },
                {
                    "operation": "insert",
                    "parentName": "SwitchViewButtonsContainer",
                    "propertyName": "items",
                    "name": "SwitchToLegalDataView",
                    "values": {
                        "layout": {
                            "column": 23,
                            "row": 0,
                            "colSpan": 1,
                            "rowSpan": 1
                        },
                        "itemType": Terrasoft.ViewItemType.BUTTON,
                        "style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                        //"iconAlign": Terrasoft.controls.ButtonEnums.iconAlign.RIGHT,
                        iconAlign: Terrasoft.controls.ButtonEnums.iconAlign.TOP,
                        pressed: {bindTo: "LegalGridActive"},
                        "imageConfig": {
                            "source": Terrasoft.ImageSources.SOURCE_CODE_SCHEMA,
                            "params": {
                                "schemaName": "SmrCustomButtonsCSS",
                                "resourceItemName": "GridLegalDataViewIconBlue"
                            }
                        },
                        classes: {
                            wrapperClass: "blue-button-wrapper",
                            imageClass: "blue-button-image",
                            pressedClass: "blue-button-pressed"
                        },
                        "click": {"bindTo": "showLegalView"}
                    }
                }
 
            ]/**SCHEMA_DIFF*/
        };
    }
);

Страницы разделов

Созданы 2 страницы разделов. Код для реестра физических лиц:

define("IndividualAccountSectionV2", ["ConfigurationConstants", "css!SmrCustomButtonsCSS"],
    function(ConfigurationConstants) {
        return {
            entitySchemaName: "Account",
            methods: {
                /**
                 * Инициализирует  фильтры экземпляра запроса
                 * @protected
                 * @overridden
                 * @param {Terrasoft.EntitySchemaQuery} esq Запрос, в котором будут инициированы фильтры
                 */
                initQueryFilters: function (esq) {
                    this.callParent(arguments);
                    esq.filters.removeByKey("ClientType");
                    esq.filters.add("ClientType", this.Terrasoft.createColumnFilterWithParameter(
                        this.Terrasoft.ComparisonType.EQUAL, "SmrClientType.Id", "80FD3F74-0AF4-4F8A-9F0B-F626E4F05147"));
                },
                /**
                 * Возвращает представления раздела по умолчанию.
                 * Реестр, Аналитика не создаётся
                 * @overridden
                 * @return {Object} Представления раздела по умолчанию
                 */
                getDefaultDataViews: function() {
                    var gridDataView = {
                        name: this.get("GridDataViewName"),
                        caption: this.getDefaultGridDataViewCaption(),
                        icon: this.getDefaultGridDataViewIcon()
                    };
                    var analyticsDataView = {
 
                    };
                    return {
                        "GridDataView": gridDataView,
                        "AnalyticsDataView": analyticsDataView
                    };
                },
                /**
                 * Получает пункты меню кнопки "Вид"
                 * @overridden
                 * @virtual
                 * @return {Terrasoft.BaseViewModelCollection} Возвращает пункты меню кнопки "Вид"
                 */
                getViewOptions: function() {
                    var viewOptions = this.Ext.create("Terrasoft.BaseViewModelCollection");
                    viewOptions.addItem(this.getButtonMenuItem({
                        "Caption": {"bindTo": "Resources.Strings.SortMenuCaption"},
                        "Items": this.get("SortColumns")
                    }));
                    viewOptions.addItem(this.getButtonMenuItem({
                        "Caption": {"bindTo": "Resources.Strings.OpenGridSettingsCaption"},
                        "Click": {"bindTo": "openGridSettings"}
                    }));
                    return viewOptions;
                }
            },
            diff: /**SCHEMA_DIFF*/[
                {
                    "operation": "merge",
                    "name": "SwitchToAllDataView",
                    "values": {
                        classes: {
                            wrapperClass: "blue-button-wrapper",
                            imageClass: "blue-button-image"
                        }
                    }
                },
                {
                    "operation": "merge",
                    "name": "SwitchToPersonalDataView",
                    "values": {
                        classes: {
                            wrapperClass: "blue-button-wrapper",
                            imageClass: "blue-button-pressed"
                        }
                    }
                },
                {
                    "operation": "merge",
                    "name": "SwitchToLegalDataView",
                    "values": {
                        classes: {
                            wrapperClass: "blue-button-wrapper",
                            imageClass: "blue-button-image"
                        }
                    }
                }
            ]/**SCHEMA_DIFF*/
        };
    }
);

Код страницы для реестра юридических лиц:

define("LegalAccountSectionV2", ["RightUtilities", "ConfigurationConstants", "css!SmrCustomButtonsCSS"],
    function (RightUtilities, ConfigurationConstants) {
        return {
            entitySchemaName: "Account",
            attributes: {},
            messages: {},
            methods: {
                /**
                 * Инициализирует  фильтры экземпляра запроса
                 * @protected
                 * @overridden
                 * @param {Terrasoft.EntitySchemaQuery} esq Запрос, в котором будут инициированы фильтры
                 */
                initQueryFilters: function (esq) {
                    this.callParent(arguments);
                    esq.filters.removeByKey("ClientType");
                    esq.filters.add("ClientType", this.Terrasoft.createColumnFilterWithParameter(
                        this.Terrasoft.ComparisonType.EQUAL, "SmrClientType.Id", "DD4E6E34-21D3-4F09-A417-6FC4116876B5"));
                },
                /**
                 * Возвращает представления раздела по умолчанию.
                 * Реестр, Аналитика не создаётся
                 * @overridden
                 * @return {Object} Представления раздела по умолчанию
                 */
                getDefaultDataViews: function() {
                    var gridDataView = {
                        name: this.get("GridDataViewName"),
                        caption: this.getDefaultGridDataViewCaption(),
                        icon: this.getDefaultGridDataViewIcon()
                    };
                    var analyticsDataView = {
 
                    };
                    return {
                        "GridDataView": gridDataView,
                        "AnalyticsDataView": analyticsDataView
                    };
                },
                /**
                 * Получает пункты меню кнопки "Вид"
                 * @overridden
                 * @virtual
                 * @return {Terrasoft.BaseViewModelCollection} Возвращает пункты меню кнопки "Вид"
                 */
                getViewOptions: function() {
                    var viewOptions = this.Ext.create("Terrasoft.BaseViewModelCollection");
                    viewOptions.addItem(this.getButtonMenuItem({
                        "Caption": {"bindTo": "Resources.Strings.SortMenuCaption"},
                        "Items": this.get("SortColumns")
                    }));
                    viewOptions.addItem(this.getButtonMenuItem({
                        "Caption": {"bindTo": "Resources.Strings.OpenGridSettingsCaption"},
                        "Click": {"bindTo": "openGridSettings"}
                    }));
                    return viewOptions;
                }
            },
            diff: /**SCHEMA_DIFF*/[
                {
                    "operation": "merge",
                    "name": "SwitchToAllDataView",
                    "values": {
                        classes: {
                            wrapperClass: "blue-button-wrapper",
                            imageClass: "blue-button-image"
 
                        }
                    }
                },
                {
                    "operation": "merge",
                    "name": "SwitchToPersonalDataView",
                    "values": {
                        classes: {
                            wrapperClass: "blue-button-wrapper",
                            imageClass: "blue-button-image"
                        }
                    }
                },
                {
                    "operation": "merge",
                    "name": "SwitchToLegalDataView",
                    "values": {
                        classes: {
                            wrapperClass: "blue-button-wrapper",
                            imageClass: "blue-button-pressed"
                        }
                    }
                }
            ]/**SCHEMA_DIFF*/
        };
    });

Что нужно отметить в этих страницах:

/**
 * Инициализирует  фильтры экземпляра запроса
 * @protected
 * @overridden
 * @param {Terrasoft.EntitySchemaQuery} esq Запрос, в котором будут инициированы фильтры
 */
initQueryFilters: function (esq) {
        this.callParent(arguments);
        esq.filters.removeByKey("ClientType");
        esq.filters.add("ClientType", this.Terrasoft.createColumnFilterWithParameter(
                this.Terrasoft.ComparisonType.EQUAL, "SmrClientType.Id", "DD4E6E34-21D3-4F09-A417-6FC4116876B5"));
}

Мы переопределяем метод для установки фильтрации записей (например, только физические лица).

Также, переопределяем методы getDefaultDataViews и getViewOptions, чтобы скрыть функции, которые не работают в новых реестрах (почему - не было времени разбираться).

 

Проблемы

В представлениях (дополнительных реестрах) не работают некоторые функции, а именно аналитика и некоторые действия из меню "Вид".

P.S.: Очень ждем возможности использовать такую возможность базовыми средствами, кейсов много - это и деление на сотрудники/контакты и физ/юр лица. В ситуациях, когда набор колонок одинаковый, конечно рекомендуется пользоваться стандартными динамическими группами.

Нравится

Поделиться

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

Эх, еще бы это в Мастер раздела :)

Кстати, а кейс ведения физических и юридических лиц в Контрагентах давно стал практикой?

Это практика при условиях, что:

  • Клиенту нужно смотреть суммарную разнообразную аналитику по всем клиентам физики+юрики, создаваемую через стандартные средства (в представлении "Аналитика")
  • Клиента бесит, когда ему каждый раз заходя в раздел Контакты, нужно отфильтровывать своих сотрудников и сотрудников подрядчиков, чтобы поработать с клиентами:smile:

Александр, золотой вы человек :twisted:
Как раз ломал голову как бы не убить кучу времени и реализовать представления с переключением, а тут пример живой.

Рад помочь, для этого и нужно комьюнити:smile:. Если есть еще вопросы в стиле "В 3ке это делалось в 5 кликов аналитиком, а как это сделать это в 7ке?" - спрашивайте, наверняка найдем проектное решения в закромах, пусть и не всегда очевидное:lol:

"Александр Свистунов" написал:спрашивайте, наверняка найдем проектное решения в закромах

Я ж воспользуюсь :)
Case: отфильтровать в разделе Счета все счета, к которым прикреплен продукт = "ххх". То есть фильтр по вхождению некой информации в деталь - аналогично в любом разделе. Так как штатно доступны только фильтры по детали с агрегатной функцией, то видимо надо как-то добавлять свой фильтр?
В 3х это делалось через модификацию sq_, в 5х вроде как вообще работало штатно через обратные связи.
Раздел итоги элемент список не предлагать :) там делается посредством списка на основании Продукт в счете - пробовал, работает.

Александр, если я правильно понял ваш Кейс, то это делается через подобный фильтр

Продукт в счете

"Толмачев Дмитрий Юрьевич" написал:делается через подобный фильтр

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

Чтобы темы не плодить... товарищи, как бы попроще скрыть из меню Edit, Copy и особенно Delete для детали, основанной на вьюшке?
Деталь самодельная, родитель BaseGridDetailV2.

Александр,

Для решения вашей задачи достаточно переопределить функцию addRecordOperationsMenuItems на созданной вами странице реестра

methods: {
	/**
	 * @overridden
	 */
	addRecordOperationsMenuItems: Ext.emptyFn
	//...
}

"Толмачев Дмитрий Юрьевич" написал:Ext.emptyFn

Спасибо, попробую так.
Я ее нашел, только наивно переопределял как

addRecordOperationsMenuItems: function() {
}

То есть пытался заполнить "ничем"...

А я где-то такую функцию нашёл

getAddRecordButtonVisible: function() {
	return false;
},

Добрый день!

Александр, спасибо за предоставленной пример, остался один непонятный для меня момент, какие действия нужно выполнить, что бы новая страница раздела (например, IndividualAccountSectionV2) стала доступна по URL "http://localhost/0/Nui/ViewModule.aspx#SectionModuleV2/IndividualAccoun…"?

Сергей,

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

В данном случае, насколько я помню, у страниц LegalAccountSectionV2 и IndividualAccountSectionV2 в качестве родительской использовалась "AccountSectionV2", т.к. по сути это дочерние ветки.

Александр, большое спасибо за то что делитесь отличным материалом!

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

1. Правильно ли я понимаю, что через свойства Diff:

pressed: {bindTo: "LegalGridActive"},

и

classes: {
                            wrapperClass: "blue-button-wrapper",
                            imageClass: "blue-button-image",
                            pressedClass: "blue-button-pressed"
                        },

Вы указываете, будет ли элемент содержать класс "blue-button-pressed" ?
Если да, то что в этом случае должна возвращать функция "LegalGridActive" - true или false?

У меня на версии 7.7 не получилось сделать так, чтобы к елементу "прицепился" мой класс указанный в pressedClass (как у Вашем примере: pressedClass: "blue-button-pressed"). Вместо него появился "дефолтный" класс - t-btn-pressed.
вот код DIFF:

	{
		"operation": "insert",
		"parentName": "SignButtonsContainer",
		"propertyName": "items",
		"name": "SignBtnVip",
		"values": {
			"itemType": Terrasoft.ViewItemType.BUTTON,
			"caption": {"bindTo": "sign_Vip"},
			"hint": {"bindTo": "Resources.Strings.sign_Vip"},
			"imageConfig" : {"bindTo": "Resources.Images.sign_vip_Image"},
			//"click": {"bindTo": "onVipButtonClick"},
			pressed : {bindTo : "VipButtonPressed"},
			classes : {
				wrapperClass : "sign-btn",
				imageClass   : "sign-img",
				pressedClass : "sign-img-pressed"
			},
			"visible": true
		}
	},

В итоге вместо ожидаемого css-класса "sign-img-pressed" - появляется "t-btn-pressed". Не могу понять что я сделал не так...

2. Можно ли какимто образом отключить для моего елемента генерацию стандрартных css-классов?
(для элемента Terrasoft.ViewItemType.BUTTON сгенерировались - t-btn-wrapper, t-btn-no-text-padding, t-btn-style-default )

3. Глобальный вопрос - не могли бы Вы подсказать, какой подход можно применить для того, чтобы можно было динамически (например по кнопочке) добавлять или удалять указанные кастомные css-классы для элемента?

В целом, очень хорошо что в 7-ке есть возможность подключать свои css-стили, это очень удобно, но вот генерация самих классов для элемента происходит немного не очевидно... :smile:

Показать все комментарии
LookupUtilities
Технические вопросы
7.x

Добрый день, необходимо фильтровать результаты которые выводятся при открытии шаблона email на странице BulkEmailPageV2
Нашел код который собственно открывает окно со справочником, вопрос - как фильтровать то что выводится в этом окне, к примеру по какому нибудь полю в объекте EmailTemplate?

var config = {
        entitySchemaName: "EmailTemplate",
        enableMultiSelect: false,
        columns: ["Subject", "Body"]
};
LookupUtilities.Open(this.sandbox, config, this.insertTemplateFromLookup, this, null, false, false);

Нравится

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

Фильтр добавляется в config.
Вот пример фильтра по создателю:

    var contactFiler = Terrasoft.createFilterGroup();
    contactFiler.name = "contactFiler";
    contactFiler.logicalComparisonTypes = Terrasoft.LogicalOperatorType.AND;
    var filter = Terrasoft.createColumnFilterWithParameter(
        Terrasoft.ComparisonType.EQUAL, "CreatedBy",
        Terrasoft.SysValue.CURRENT_USER_CONTACT.value);
    contactFiler.addItem(filter);
    var config = {
        entitySchemaName: "EmailTemplate",
        enableMultiSelect: false,
        columns: ["Subject", "Body"],
        filters: contactFiler
    };
    LookupUtilities.Open(this.sandbox, config, this.insertTemplateFromLookup, this, null, false, false);

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

Показать все комментарии
ITIL
звонок
обращение
Технические вопросы
7.x

Добрый день!
ITIL Transitions
Насколько мне известно, в карточке звонка у оператора должны быть кнопки дальнейшего действия
"создать новое обращение"
"создать консультацию по существующему обращению"

Вопрос: не могу найти информацию об этих кнопках в инструкции на академии. Есть там такое?
Вопрос: чтобы увидеть эти кнопки в демо-версиях, необходимо включить хотя бы внутренний колл-центр - между сотрудниками, правильно я понимаю?

Нравится

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

Добрый день, Дарья!

В продукте ITIL transitions преднастроенных процессов по обработке обращений и CTI панели и возможности их настраивать нет. Данные процессы Вы можете найти в продукте Customer Engagement Center.

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

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

Либо кнопки должны быть эти, либо хотя бы возможность создания этих кнопок.
Если они есть в Customer Engagement Center, почему вы говорите, что нет возможности настройки их в продукте ITIL (он на той же платформе)

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

Преднастроенных процессов в данном продукте для CTI панели нет, но Вы можете их настроить самостоятельно.

Для того чтобы настроить действия CTI панели необходимо:

1. Настроить процесс по которому будут работать операторы
2. Зарегистрировать справочник "Действия CTI панели", который привязан к соответствующим объекту, странице редактирования
3. Указать в справочнике "Действия CTI панели" опции для оператора и процессы которые будут вызываться.

Показать все комментарии
7.x
email
коммуникации
коммуникационная панель
почта

Начиная с версии bpm’online 7.6 работа с почтой ведется в коммуникационной панели.

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

Нравится

Поделиться

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