Можно ли отобрать записи в esq запросе на js с помощью фильтра по количеству записей на детали?

Вопрос получится это сделать без лишней вложенности к примеру с помощью механизма построения пути к колонкам или нет7

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

единственные идеи это городить вложенные запросы

Нравится

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

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

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

Пример фильтра в разделе:

 

Уходящий запрос:

{
  "rootSchemaName": "Account",
  "operationType": 0,
  "includeProcessExecutionData": true,
  "filters": {
    "items": {
      "8844d1b0-9ad8-410c-8c28-5a2f0a1c6ae3": {
        "items": {
          "CustomFilters": {
            "items": {
              "06f533f8-2b58-4ea3-8818-2a27d0c7e196": {
                "filterType": 1,
                "comparisonType": 7,
                "isEnabled": true,
                "trimDateTimeParameterToDate": false,
                "leftExpression": {
                  "expressionType": 3,
                  "functionType": 2,
                  "aggregationType": 1,
                  "columnPath": "[Contact:Account].Id",
                  "subFilters": {
                    "items": {},
                    "logicalOperation": 0,
                    "isEnabled": true,
                    "filterType": 6,
                    "rootSchemaName": "Contact"
                  }
                },
                "rightExpression": {
                  "expressionType": 2,
                  "parameter": {
                    "dataValueType": 4,
                    "value": 0
                  }
                },
                "subFilters": {
                  "items": {},
                  "logicalOperation": 0,
                  "isEnabled": true,
                  "filterType": 6,
                  "rootSchemaName": "Contact"
                }
              }
            },
            "logicalOperation": 0,
            "isEnabled": true,
            "filterType": 6,
            "rootSchemaName": "Account"
          }
        },
        "logicalOperation": 0,
        "isEnabled": true,
        "filterType": 6
      }
    },
    "logicalOperation": 0,
    "isEnabled": true,
    "filterType": 6
  },
  "columns": {
    "items": {
      "Id": {
        "caption": "",
        "orderDirection": 0,
        "orderPosition": -1,
        "isVisible": true,
        "expression": {
          "expressionType": 0,
          "columnPath": "Id"
        }
      },
      "Name": {
        "caption": "",
        "orderDirection": 0,
        "orderPosition": -1,
        "isVisible": true,
        "expression": {
          "expressionType": 0,
          "columnPath": "Name"
        }
      },
      "AccountLogo": {
        "caption": "",
        "orderDirection": 0,
        "orderPosition": -1,
        "isVisible": true,
        "expression": {
          "expressionType": 0,
          "columnPath": "AccountLogo"
        }
      },
      "PrimaryContact": {
        "caption": "",
        "orderDirection": 0,
        "orderPosition": -1,
        "isVisible": true,
        "expression": {
          "expressionType": 0,
          "columnPath": "PrimaryContact"
        }
      },
      "Phone": {
        "caption": "Основной телефон",
        "orderDirection": 0,
        "orderPosition": -1,
        "isVisible": true,
        "expression": {
          "expressionType": 0,
          "columnPath": "Phone"
        }
      },
      "Type": {
        "caption": "Тип",
        "orderDirection": 0,
        "orderPosition": -1,
        "isVisible": true,
        "expression": {
          "expressionType": 0,
          "columnPath": "Type"
        }
      },
      "AccountCategory": {
        "caption": "Категория",
        "orderDirection": 0,
        "orderPosition": -1,
        "isVisible": true,
        "expression": {
          "expressionType": 0,
          "columnPath": "AccountCategory"
        }
      },
      "EntryPointsCount": {
        "caption": "",
        "orderDirection": 0,
        "orderPosition": -1,
        "isVisible": true,
        "expression": {
          "expressionType": 3,
          "aggregationType": 1,
          "columnPath": "[EntryPoint:EntityId].Id",
          "subFilters": {
            "items": {
              "1afa5cfc-31e0-4a27-ad78-bac1de602da6": {
                "filterType": 1,
                "comparisonType": 3,
                "isEnabled": true,
                "trimDateTimeParameterToDate": false,
                "leftExpression": {
                  "expressionType": 0,
                  "columnPath": "IsActive"
                },
                "rightExpression": {
                  "expressionType": 2,
                  "parameter": {
                    "dataValueType": 1,
                    "value": true
                  }
                }
              }
            },
            "logicalOperation": 0,
            "isEnabled": true,
            "filterType": 6
          }
        }
      }
    }
  },
  "isDistinct": false,
  "rowCount": 30,
  "rowsOffset": 0,
  "isPageable": true,
  "allColumns": false,
  "useLocalization": true,
  "useRecordDeactivation": false,
  "serverESQCacheParameters": {
    "cacheLevel": 0,
    "cacheGroup": "",
    "cacheItemName": ""
  },
  "queryOptimize": false,
  "useMetrics": false,
  "adminUnitRoleSources": 0,
  "querySource": 0,
  "ignoreDisplayValues": false,
  "conditionalValues": null,
  "isHierarchical": false
}

 

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

Доброго времени суток.

Тестирую возможности вашего инструмента, пытаюсь настроить интеграцию фронта через прокси с Creatio.

 

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

 

Есть вот такой процесс заказа:

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

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

 

Пытался отправлять сигнал похожим на создание процесса способом:

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

Но вместо schemaUId мне нужно передавать uid процесса, запущенного ранее.

По документации, не могу найти под каким параметром можно передать uid процесса, а не uid схемы процеса.

 

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

 

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

Нравится

3 комментария
Лучший ответ

>Если функционал по вызову События или отправки Сигнала с передачей данных в БП через ProcessEngineService.svc отсутствует, то этот ответ меня тоже устроит.

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

 

Вариант решения делать на каждой действие простой процесс (подпроцесс).

Например процесс добавления товара в заказ, у него будут входящие параметры: id заказа, id товара, булевый параметр. Запускаем этот процесс через ProcessEngineService.

На мой взгляд для текущей задачи больше подойдет odata https://academy.terrasoft.ru/docs/7-17/developer/integrations_and_api/d…

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

 

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

Например мне нужно при изменении заказа уведомить склад о реформировании заказа. В таком случае я вижу 3 варианта:

1. OData. На прокси при добавлении заказа отсылать email (плохо, мало контроля и не очевидно в рамках БП).

2. OData + BPMN. В самом БП создать некую подписку на добавление товара в данный заказ и сделать отправку email (уже лучше, но например не при каждом изменении заказа мне нужно отправлять email, в таком случае появятся кастыли вроде сохранения промежуточных булевых переменных в данных, для определения вида изменения заказа).

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

 

3-ий вариант для меня сейчас самый приоритетный.

Если функционал по вызову События или отправки Сигнала с передачей данных в БП через ProcessEngineService.svc отсутствует, то этот ответ меня тоже устроит.

>Если функционал по вызову События или отправки Сигнала с передачей данных в БП через ProcessEngineService.svc отсутствует, то этот ответ меня тоже устроит.

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

 

Вариант решения делать на каждой действие простой процесс (подпроцесс).

Например процесс добавления товара в заказ, у него будут входящие параметры: id заказа, id товара, булевый параметр. Запускаем этот процесс через ProcessEngineService.

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

Я получаю изображение с сайта ввиде массив байт, как я понял изображения хранятся в base64 поэтому конвертирую ее

Но вот как именно загрузить ее я не понимаю

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

Или мне надо загрузить изображение в эту таблицу, далее получить ее uri  или data и так грузить?

Может где то в стандартных схемах такое видели 

Нравится

7 комментариев
Лучший ответ

Dima Avdoshin,

Грузим просто создав запись в  C# в таблице SysImage.

 

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

 

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

Stream stream = new MemoryStream(byteArray);

var size = Convert.ToInt32(stream.Length);

var insertActivityFile = new Terrasoft.Configuration.ActivityFile(context.UserConnection);

        insertActivityFile.Id = Guid.NewGuid();

        insertActivityFile.SetDefColumnValues();

        insertActivityFile.Name = "Name.txt";

        insertActivityFile.SetStreamValue("Data", stream);

        insertActivityFile.Size = size;

        insertActivityFile.TypeId = new Guid("529BC2F8-0EE0-DF11-971B-001D60E938C6");

        insertActivityFile.Version = 1;

        insertActivityFile.ActivityId = activityId;

        insertActivityFile.Save();

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

Полозюков Евгений Петрович,

необходимо с сайта получить превью изображения, далее ее отобразить в соответствующем разделе

В карточке контрагента есть вверху слева элемент с изображением. Вам нужен упрощенный вариант, смотрите как это реализовано в карточке. Изображение хранится в SysImage, поле в контрагенте AccountLogo ссылается на SysImage. В SysImage данные хранятся в виде байт, без base64, поле Data и PreviewData.

В AccountPageV2 изучите элемент "name": "Photo", "parentName": "AccountPhotoContainer".

 

Вот еще статья https://academy.terrasoft.ru/docs/developer/elements_and_components/bas…

                        

Полозюков Евгений Петрович,

Понял, скорее всего как, мы обращаемся в таблицу sysImage , далее грузим изображение и получаем guid новосозданного изображения , который и грузим куда нам необходимо так ?

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

 

private static Guid AddImage(string ImgUrl)
		{
			UserConnection userConnection = (UserConnection)HttpContext.Current.Session["UserConnection"];
			Guid newId = Guid.NewGuid();
			EntitySchema schemaImage = userConnection.EntitySchemaManager.GetInstanceByName("SysImage");
			Entity addImage = schemaImage.CreateEntity(userConnection);
			addImage.SetColumnValue("Id", newId.ToString());
			//addImage.SetColumnValue("Name", "lol");
			addImage.SetColumnValue("Data", ImgToByte(ImgUrl));
			addImage.Save();
			return newId;
		}

 

Dima Avdoshin,

Грузим просто создав запись в  C# в таблице SysImage.

 

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

 

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

Stream stream = new MemoryStream(byteArray);

var size = Convert.ToInt32(stream.Length);

var insertActivityFile = new Terrasoft.Configuration.ActivityFile(context.UserConnection);

        insertActivityFile.Id = Guid.NewGuid();

        insertActivityFile.SetDefColumnValues();

        insertActivityFile.Name = "Name.txt";

        insertActivityFile.SetStreamValue("Data", stream);

        insertActivityFile.Size = size;

        insertActivityFile.TypeId = new Guid("529BC2F8-0EE0-DF11-971B-001D60E938C6");

        insertActivityFile.Version = 1;

        insertActivityFile.ActivityId = activityId;

        insertActivityFile.Save();

Полозюков Евгений Петрович,

да , щас сделаю спасибо

Полозюков Евгений Петрович,

да все помогло спасибо

на будущее для тех кто будет искать ответ пример подобного реализован в 

ProfileImageLoader пакета OmnichannelMessaging

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

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

Добрый день.

Отправили приглашение для совместной работы над бизнес-процессами в Studio Creatio Free, но проект недоступен.

 

Внизу всплывает окно:

"Вы уже состоите в этой организации или это приглашение уже использовано"

 

Почта корпоративная, приглашение использовать никто кроме меня не мог.

Просьба помочь

Нравится

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

Юрий, добрій день. Подскажите, что вы имеете ввиду под "проект недоступен"? Можно ли переключиться на нужную организацию в правом верхнем углу страницы Studio Free, рядом с кнопкой профиля пользователя?

Добрый день, Александр.

Нет, переключится нельзя, проекта там нет.

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

Юрий, возможно после перехода по ссылке приглашения, вы вошли в studio free под другим email? Попросите, пожалуйста, отправить своих коллег отправить приглашение ещё раз.

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

В версии 7.17 если в конфигураторе в поле (справочник контактов) задаешь по умолчанию - Системная переменная -> Текущий пользователь

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

То вылезает ошибка при создании новой записи

23503: insert or update on table "____________" violates foreign key constraint "_______________________"

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

Если значение в данном поле перевыбрать, то все нормально сохраняется

Нравится

1 комментарий
Лучший ответ

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

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

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

Добрый день.

При создании новой детали необходимо выбрать в наследовании -> родительский объект - "базовый объект", но в 7.17 нет ничего похожего на Base Object.

Прошу сообщить какой родительский объект необходимо выбрать?

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

Нравится

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

Никита, попробуйте BaseEntity. Его использует, например, деталь ActivityParticipant («Участник активности»). Собственно, это и есть «Базовый объект», просто раньше при настройке отображали заголовки, а теперь — название.

Зверев Александр пишет:

просто раньше при настройке отображали заголовки, а теперь — название.

А давайте отображать заголовок/название? Тогда можно будет найти и так, и так 

Тоже вчера о таком подумал. Владимир, оправил Вашу идею.

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

Описание процесса, которое потом переходит в Документацию PDF было бы очень хорошо использовать форматирование текста с html версткой 

 

 

https://yadi.sk/i/jyr7in1jX8KR9w

https://yadi.sk/i/8KsOpHVoW4Eb_Q

Нравится

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

Марк, насколько понимаю, речь о Studio Free. Зарегистрировал такое пожелание. Другое дело, насколько написание разметки соответствует идее no code. Возможно, правильнее будет иметь там редактор с форматированием без правки исходного кода (и связанных с этим рисков).

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

Добрый день! При экспорте процесса в .png или .svg пропадает текст в аннотациях.

 

Вот скриншот из Studio Free:

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

И вот то, что получилось после экспорта в png-файле:

 

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

 

ps.

Кстати, под "end" видны артефакты, возможно это следы съехавшего текста аннотации.

Нравится

3 комментария
Лучший ответ

Попробуйте несколько раз подряд экспортировать. У меня иногда вообще без какого-либо текста выгружает, а на N-ой попытке срабатывает нормально.

Попробуйте несколько раз подряд экспортировать. У меня иногда вообще без какого-либо текста выгружает, а на N-ой попытке срабатывает нормально.

Напишите по данному вопросу в службу поддержки, возможно, это уже известная проблема и есть её решение.

Здравствуйте, Роман!

Сейчас должно быть уже исправленно.

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

Уважаемые разработчики,

 

что-то намеренно изменено в формате выгрузки схемы в PNG или я упускаю из виду какую-то настройку интерфейса?

раньше при выгрузке схемы в файл PNG создавалось изображение, в котором вокруг рамки полотна со схемой было ещё свободное пространство по всему периметру, которое было удобно использовать как колонтитулы для вставки дополнительных подписей/логотипов в целях презентации; теперь же стабильно создаётся изображение, где рамка полотна вплотную прилегает к краю изображения

Нравится

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

Что именно Вы импортируете в PNG? Схему бизнес-процесса? Как именно?

Стандартно есть возможность сохранения картинкой графиков в итогах.

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

судя по всему вопрос про studio free

Наверное. Ещё такое сделать возможно было в старых версиях: 3.Х, 5.Х, самом первом дизайнере 7.Х.

Здравствуйте, Корнелий!

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

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

Здравствуйте, Александр. В данном случае, я не импортирую, а экспортирую схему в виде изображения

Добрый день, Илья,

 

Спасибо, буду ждать. 

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

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

Добрый день!

Вопрос к коллегам, разрабатывающим Studio Free. Планируется ли введение какого-то механизма прав доступа на отдельные папки и процессы? 

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

Нравится

2 комментария
Лучший ответ

Здравствуйте, Александр!

 

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

Также, у команды разработки есть в планах позволить создавать дополнительные организации и уже зарегистрированным пользователям. Мы зафиксировали Ваше пожелание о правах на папки и передадим его специалистам для реализации в будущих обновлениях продукта.

Здравствуйте, Александр!

 

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

Также, у команды разработки есть в планах позволить создавать дополнительные организации и уже зарегистрированным пользователям. Мы зафиксировали Ваше пожелание о правах на папки и передадим его специалистам для реализации в будущих обновлениях продукта.

Илья, спасибо за комментарий!

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