Коллеги, приветствую.

 

Помогите, пожалуйста, с формированием кода запроса.

Я формирую таблицу, в столбец (логического типа) которой подзапросом вывожу 1 или 0 в зависимости от наличия записи в другой таблице: в дополнение к Продаже вывожу столбец, в котором отмечаю была ли эта Продажа на стадии, например, Контрактование.

При этом нужно именно значение 1 или 0.

 

Нашёл 2 решения в виде sql-запроса:

1. select "O"."Id", "O"."Title"

, (select exists(select 1 from "OpportunityInStage" AS "OinS" where "OinS"."OpportunityId" = "O"."Id" and "OinS"."StageId" = 'fb563df2-5ae6-df11-971b-001d60e938c6')) AS "Contracting"

from "Opportunity" AS "O"

2. либо через count(*) делённый сам на себя

1. select "O"."Id", "O"."Title"

, coalesce(select count(*) / count(*) as "cnt" from "OpportunityInStage" AS "OinS" where "OinS"."OpportunityId" = "O"."Id" and "OinS"."StageId" = 'fb563df2-5ae6-df11-971b-001d60e938c6') AS "Contracting"

from "Opportunity" AS "O"

 

Я закодировал подзапрос с одним count таким образом

var stagePresentSubSelect = new Select(userConnection).Count("*").As("cnt")

    .From("OpportunityInStage", "OinS")

    .Where("OinS", "OpportunityId").IsEqual("O", "Id");

 

Подскажите, пожалуйста, как можно добавить в код exists (не в фильтр) или деление count на себя?

Нравится

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

У меня на MSSQL ни первый, ни второй запросы не заработали. Что за база у Вас?

Если переписать первый так, результат будет тот же?

select "O"."Id", "O"."Title",
 isnull((select 1 from "OpportunityInStage" AS "OinS" where "OinS"."OpportunityId" = "O"."Id" and "OinS"."StageId" = 'fb563df2-5ae6-df11-971b-001d60e938c6'),0) AS "Contracting"
from "Opportunity" AS "O"

А с IsNull мы уже работать сможем, примерно так:

.Column(Func.IsNull(Column.SubSelect(mySubSelect), Column.Const(0)))

А по второму примеру вообще не не понял, зачем делить само на себя, там же будет либо 1, либо ошибка деления на 0.

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

Добрый вечер.

Хотелось бы добавить кастомное правило поиска дублей. Действовал с оглядкой на https://academy.terrasoft.ru/documents/technic-sdk/7-14/dobavlenie-pravila-poiska-dubley ,но возникла сложность при объявлении типов параметров, если аналог с mscql UNIQUEIDENTIFIER - uuid, то какой аналог у CreatingObjectInfo? 

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

Как она будет взаимодействовать с elasticsearch в таком случае

И хоть и неправильную но все же процедуру я пытался прикреплять к правилу, согласно гайду, но с пустым телом "RuleBody" она не хотела функционировать

Было бы прекрасно, если бы имелся какой-нибудь пример на postgresql.

Bpm'online развернут on-site. Глобальный поиск и тд настроены

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

Нравится

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

Посмотрите статью в академии ДОБАВЛЕНИЕ ПРАВИЛА ПОИСКА ДУБЛЕЙ

Руслан, добрый день!



Для PostgreSQL доступен только новый функционал дедупликации, который завязан на сервис глобального поиска.

Инструкция по настройке массового поиска дублей для приложений on-site:

https://academy.terrasoft.ru/documents/administration/7-14/nastroyka-massovogo-poiska-dubley

Григорий Чех, На неё я и оглядывался, когда пытался добавить правило

Мотков Илья,

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

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

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

Подскажите, кто реально работает с bpm'online и СУБД PostgreSQL? На сколько стабильная работа система с ней и какие есть сейчас ограничения в сравнении с MS Sql? Так же хотел узнать какие сейчас продукты могут работать с этой СУБД и когда по карте будут работать остальные продукты?

Я понимаю что тут ответят так же работники супорта, потому прошу их не писать в рамках вопроса об опыте использования, так как я хочу узнать опыт именно пользователей не компании Террасоф

Нравится

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

Только начинаю изучать, из ограничений (по документации) пока только:

В bpm’online версии 7.13 использование PostgreSQL возможно только для продукта Studio.

Только начинаю изучать, из ограничений (по документации) пока только:

В bpm’online версии 7.13 использование PostgreSQL возможно только для продукта Studio.

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