Вопрос

Добрый день!

Есть некий метод который отрабатыват на событие Inserting в объекте и изменяет поле статус:

И есть процесс который ждет изменения поля статус: 

Собственно, проблема в том что событие в процессе не отрабатывает, и процесс остается виснуть на этом элементе. В чем может быть проблема?

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

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

Процесс может не отрабатывать, так как в методе у Вас происходит изменение статуса на событие 'Добавления записи', а в БП указано, что сигнал должен сработать при возникновении события 'Изменения записи'.

В БП добавьте старт данного события ещё и по сигналу добавления записи.

Алла Савельева,

я неверно написал, у меня метод отрабатывает на событие Updating а не Inserting

Миннекаев Айдар,

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

Также уточните, откуда запускается метод SetStatus и каким образом получен объект entity, который передается в него?

Алла Савельева пишет:
откуда запускается метод SetStatus и каким образом получен объект entity, который передается в него?

 Видимо, дело в том, что оба механизма срабатывают на одном событии. Сначала пользователь меняет запись, потом во встроенном БП срабатывает обработчик на Updating, потом сохраняется запись в базу и затем должен был срабатывать сигнал в БП. И список изменённых полей формируется на первом шаге, до изменения статуса, из-за чего сигнал не получен.

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

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

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

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

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

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

Думаю что вам может помочь это бесплатное приложение.

Григорий Чех, спасибо Вам большое.

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

Есть два справочника, Города (базовый) и Районы (Custom). В справочнике районов при добавлении записей, заполняется поле Город. Но возник вопрос, как в карточке редактирования (например в контактах), при выборе города проживания, наложить фильтр на справочник Районов? 

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

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

Добрый день!
Можно при помощи бизнес правил: кодом или редактором 

Спасибо за помощь. Все работает как надо.

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

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

attributes: {

   "IsModelItemsEnabled": {
      dataValueType: Terrasoft.DataValueType.BOOLEAN,
      value: true,
      dependencies: [{
         columns: ["NavOrderStatus"],
         methodName: "changeNavOrderStatus"
      }]
   }

}

А в методе изменения:

this.set("IsModelItemsEnabled", false);

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

getDefaultCellControlsConfig: function(columnName, params) {
   var config = {
      itemType: Terrasoft.ViewItemType.MODEL_ITEM,
      name: columnName,
      labelConfig: {visible: false},
   };

   if(columnName = "Product" && ...){
      config.enabled = false;
   }


   return Ext.apply(config, params);
}

Что тоже не помогает.. Подскажите, пожалуйста решение данной проблемы.

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

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

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

generateActiveRowControlsConfig: function (id, columnsConfig, rowConfig) {
                    this.columnsConfig = columnsConfig;
                    var gridData = this.getGridData();
                    var activeRow = gridData.get(id);
                    var isEditableColumn;
                    if (activeRow.values.IDSBParent === "") {
                        isEditableColumn = this.isEditableParentColumn;
                    }
                    else {
                        isEditableColumn = this.isEditableColumn;
                    }
                    var gridLayoutItems = [];
                    var currentColumnIndex = 0;
                    Terrasoft.each(columnsConfig, function (columnConfig) {
                        var cellConfig = this.getActiveRowCellConfig(columnConfig, currentColumnIndex);
                        cellConfig.enabled = isEditableColumn(cellConfig.name);
                        if (!cellConfig.hasOwnProperty("isNotFound")) {
                            gridLayoutItems.push(cellConfig);
                        }
                        currentColumnIndex += cellConfig.layout.colSpan;
                    }, this);
                    this.applyBusinessRulesForActiveRow(id, gridLayoutItems);
                    var viewGenerator = Ext.create(this.getRowViewGeneratorClassName());
                    viewGenerator.viewModelClass = this;
                    var gridLayoutConfig = viewGenerator.generateGridLayout({
                        name: this.name,
                        items: gridLayoutItems
                    });
                    rowConfig.push(gridLayoutConfig);
                }

 

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

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

 

Просто забрать у пользователя права на запись на объект детали.

Зверев Александр,

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

Права определяются содержимым таблиц, для изменения прав нужно добавлять/изменять/удалять записи в них. Например, для прав доступа на записи в разделе контактов это SysContactRight. А если это делать в БП, есть специальный элемент изменения прав.

Дмитрий А.,

Проблема в том, что поля детали не блокируются из-за правил, а делал я именно по этим ссылкам

Если отобрать права доступа, правила будут безразличны.

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

Добрый день, Коллеги! 

Возник следующий вопрос.

Необходимо в реестр справочника, например Статусы обращения, вывести значения колонки IsFinal аналогично методу setSubtitleColumns согласно SDK

https://academy.terrasoft.ru/documents/technic-sdkmob/7-12/sdk-reestra

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

 

 

 

 

 

Пример необходимой реализации, колонка контакт:

 

 

 

 

 

 

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

Попытки задания Subtitle через дополнительный модуль, подключённый в манифесте для раздела Case, не дал результата. Что-то делаю не так.

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

Спасибо!

 

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

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

Примеры использования этого свойства есть в «коробке» в схемах MobileLookupGridPageConfig, MobileLookupGridOpportunityPageConfig, MobileCaseMessageHistoryModuleConfig и MobileCaseMessageHistoryModuleConfig. Судя по названию, вторая схема как раз может использоваться для окна выбора из справочника. Её код:

Terrasoft.sdk.LookupGridPage.setSubtitleColumns("Opportunity", ["Account"]);

 

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

Здравствуйте! Нужно добавить одна текстовое поля на странице генерация отчета.

Задача состоит в добавление фильтраций по текстовое значение, но когда я пробовал добавить новое поле, оно не появляется. Я попробовал добавить: "Text", "SHORT_TEXT", "LONG_TEXT", все из данный link: https://academy.terrasoft.ru/api/jscoreapi/7.12.0/#!/api/Terrasoft.core…, добавляются только "INTEGER","LOOKUP","ENUM", и "DATE". Как я могу добавить это поле что бы оно было видно? Может для этого поле мне нужно указать другие параметры.

P.S: Отчет создан через "BPMonlineReportDesigner"

Прикрепленные файлы
Code.png28.65 КБ
Fields.png6.38 КБ

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

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

Добрый день!
1) Проверьте, что в локализируемых строках есть строка "Name".
2) Попробуйте тип "TEXT" (заглавными буквами).
3) Что VBName - есть такая колонка.
4) Может есть ошибки в консоли. И они могут подсказать вам

Добрый день Александр, я проверил все эти пункты, все колонки есть и локализированная строка тоже есть.  Сделал debugg, и нашёл что он использует модуль ReportFilterModule, и в коде, в switch  нет такой тип TEXT, но когда я пробовал замещать, вышло ошибка, что запрещено замещение модулей.  Может подсказать если есть другие способы, что бы добавить там это поле

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

Коллеги, добрый день. 

 

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

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

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

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

 

Этот параметр по операциям администрируется, вроде. Возможно, где-то в режиме администратора есть настройка? 

Нашёл вот такую статью, но решение не помогает.

https://community.terrasoft.ru/articles/cto-delat-esli-cast-menedzerov-perestala-videt-soobsenia-drugih-menedzerov

Sunrise challenge,
По умолчанию все пользователи видят все сообщения. Ограничения накладываются на правах объектов. Это можно увидеть, взяв чистую демо версию Service Enterprice.
Если на вашей системе это не так, советую обратиться в тех поддержку, т.к. это коробочный функционал

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

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

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

Добрый день.

Реализовал поиск обращений на главной странице портала. (по кнопке открывается секция Обращения и включается фильтр по введенному полю)

Код фильтра такой:

				var searchSchemaName = "Case";
				var value = "%" + input.trim() + "%";
				var moduleInfo = tryGetModuleInfo(searchSchemaName);
				var url = moduleInfo.url;
				var filterModule = moduleInfo.sectionSchema;
 
				var storage = Terrasoft.configuration.Storage.Filters =
					Terrasoft.configuration.Storage.Filters || {};
 
				var sessionFilters = storage[filterModule] =
					storage[filterModule] || {};
 
				sessionFilters.CustomFilters = {
					value: value,
					displayValue: value,
					primaryDisplayColumn: true
				};

Он реализует только такой фильтр:

http://prntscr.com/ntsm90

Как реализовать:

[Тема: %SR% ИЛИ Номер: %ST%]

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

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

                filters.addItem(Terrasoft.createColumnFilterWithParameter(
                Terrasoft.ComparisonType.CONTAIN, "Subject", value));
                filters.addItem(Terrasoft.createColumnFilterWithParameter(
                Terrasoft.ComparisonType.CONTAIN, "Number", value));
                filters.logicalOperation = Terrasoft.LogicalOperatorType.OR;
                var serializationInfo = filters.getDefSerializationInfo();
                serializationInfo.serializeFilterManagerInfo = true;
                 sessionFilters.CustomFilters = {
                "null": {
                            "value": value,
                            "displayValue": value,
                            "filter": filters.serialize(serializationInfo)
                        }
                }; Нашел ответ.

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

Привет,

Столкнулся с проблемой:

Версия: 7.13.4.638_SalesEnterprise_Marketing

Действие: Отладка бизнес процесса

Описание:

Версия Visual Studio - 2017 Pro

В процессе отладки серверного кода бизнес процесса столкнулся с проблемой, уже ранее описанной в теме https://community.terrasoft.ua/taxonomy/term/7738. Хотелось бы понять, для версии 7.13 возможно ли каким либо образом решить проблему просмотра переменных в режиме дебага без ошибки Cannot obtain value of the local variable or argument because it is not available at this instruction pointer, possibly because it has been optimized away, либо это невозможно. Дело в том, что невозможность посмотреть значение переменных замедляет разработку.

Так же не везде удается установить breakpoints. Возможно эти проблемы связаны между собой.

Что не помогло:

1. Заново выполнить Attach to Process.

2. Установка Suppress JIT optimization on module load в настройках дебага.

3. В Build проекта снята галка Optimize code и Debugging information = Full

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

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

Alex, здравствуйте!

Вам необходимо в Options-Debugging-General также отключить флаг Enable Just My Code.

Илья,

Спасибо за ответ, 

Данная опция помогла мне чтобы устанавливались breakpoints. Я задавал ранее вопрос, https://community.terrasoft.ru/questions/neaktivnye-breakpoints-pri-otladke-biznes-processa

Однако, даже с отключенным флагом я могу установить breakpoints не везде, так же могу посмотреть значения только некоторых переменных.

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

Привет,

Столкнулся с проблемой:

Версия: 7.13.4.638_SalesEnterprise_Marketing

Действие: Отладки бизнес процесса

Описание:

Создал бизнес процесс. В нем определил задание-сценарий. Мне нужно его отладить. Для этих целей выполнил все шаги, описанные в инструкции https://academy.terrasoft.ua/documents/technic-sdk/7-13/otladka-servernogo-koda

Столкнулся с проблемой, - все установленные мной точки останова неактивны The breakpoint will not currently be hit. 
No symbols have been loaded for this document.

Выполнил шаги по устранению этой проблемы, описанные в инструкции, однако проблема осталась актуальной.

Так же:

Версия IDE - vs2017 pro.

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

Для старта БП отправляю POST запрос при помощи postman. Запрос вида:

http://{адрес}/0/ServiceModel/ProcessEngineService.svc/RunProcess

JSON:

{
  "parameterValues": 
  [
      {"name": "IdString", "value": "A9CF364A-CE81-453E-B85D-001F788A41ED"},
      {"name": "TypeString", "value": "68E23EAE-62A2-43FE-AE33-8F41376AFBED"},
      {"name": "ID_Boss", "value": "123"}, 
      {"name": "ID_Navision", "value": "88706"},
      {"name": "DeliveryAddress", "value": "TEST"},
      {"name": "SearchName", "value": "6"},
      {"name": "name", "value": "улица, 6"},
      {"name": "OwnerId", "value": "center"}
  ],
  "schemaUId": "e18ae725-4f32-44c1-ba33-3ae749c40ed0",
  "schemaName": "UsrImportOrUpdateAccount"
}

Подключаюсь для отладки к правильному w3wp.exe. В пуле 1 поток, пул запускается из под моей учетки.

pdb файлы находятся в той же папке, где и *.cs файлы.

UPD1: при открытии в IDE .cs файла бизнес процесса подсказчик IDE указывает на то, что многие классы не определены, к примеру, почеркивается ProcessSchemaManager, using Terrasoft.Core.Entities; и тд, но, как я понял, при данном виде отладки это ок и мне не нужно делать build проекта с прикрепленными к нему файлами, которые нужно отладить.

Проект использует .NET Framework 4.7

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

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

Для решения проблемы попробуйте в Visual Studio изменить следующие настройки:

1) в Options->Debugging->General: Enable Just My Code - выключить

2) Suppress JIT optimization - включить

Алла Савельева,

Большое спасибо!

Мне помог пункт 1. Пункт 2 был выполнен по документации ранее.

AlexMatveev,

Рада была помочь!

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