Вопрос

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

 

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

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

По аналогии с LookupPageViewGenerator реализуйте свое кастомное окно и вызывайте его в методе openLookup там, где Вам нужно.

Более подробно посмотрите обсуждение в этой теме.

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

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

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

Как в BPM можно отправить письмо от имени Общего почтового ящика настроенного в Exchange?

 

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

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

Николай, о настройке общего ящика в bpm'online написано здесь.

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

Спасибо за ссылку, видел ее. Но вопрос не про общие ящики BPM'Online, а про общие ящики Exchange. Но я так понимаю, что BPM не умеет работать с общими почтовыми ящиками Exchange.

Система bpm'online умеет работать с общими ящиками независимо от почтового провайдера. Настройки одинаковы для протоколов Exchange и IMAP/SMTP.

Я говорил про Общие почтовые ящики с точки зрения Exchange, не bpm'online. Если бы система bpm'online умела работать с общими ящиками Exchange, то в ней не нужно было бы давать права на отправку писем от имени общего почтового ящика, потому как эти права предоставляются в настройках сервера Exchange. 

Равно и аналогично, поскольку  bpm'online умеет работать с общими ящиками самостоятельно, использование сторонних механизмов, делающих то же самое, не требуется.

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

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

На нашем коммерческом проекте сильно увеличился размер БД - разрослись системные таблицы.

Подскажите, можно ли уменьшить размер системных таблиц в БД? 

Предполагаю, что возможно очистить таблицу SysProcessElementLog.

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

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

Да если данные в них вам не нужны, вы можете сделать бэкап и очистить не нужные данные.

Вопрос очистки таблиц скриптами недавно обсуждали тут.

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

Как отключить поиск значений при ручном вводе в реестре детали?

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

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

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

Самым простым решением будет добавить в страницу редактирования детали заглушку.

         getLookupQuery: function(filterValue, columnName) {
                return false;
            },

Если нужно запретить на конкретном справочнике/справочниках, то сделать примерно так:

            getLookupQuery: function(filterValue, columnName) {
                var esq = this.callParent(arguments);
                var esqRootSchemaName = esq.rootSchemaName;
                    if(esqRootSchemaName == "__ИМЯ СУЩНОСТИ__") {
                        return false;
                }

esle { return esq; }
            },

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

Хочу в процесса объекта на событии Saving (Перед сохранением) в событийном под процессе.

Сверять значение

Entity.GetTypedOldColumnValue<Guid>("Calendar")==Guid.Empty;

И останавливать сохранение. Подскажите что нужно сделать чтобы приостановить сохранение?

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

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

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

Так же можно воспользоваться событийным слоем Entity

Алла Савельева пишет:

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

Очень странно есть событие Проверка записи но нет метода для остановки процесса. 

Entity.GetTypedOldColumnValue<Guid>("Calendar")==Guid.Empty

А в чём суть такой проверки? Так, если поле в какой-то момент стало пустое, больше никогда не сможете его заполнить и сохранить запись средствами ESQ.

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

Entity.GetTypedOldColumnValue<Guid>("Calendar")==Guid.Empty

А в чём суть такой проверки? Так, если поле в какой-то момент стало пустое, больше никогда не сможете его заполнить и сохранить запись средствами ESQ.

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

При заполнении всех полей в реестре детали и нажатия на кнопку закрыть страницы. Это значение сохраняется пустым. А по нему идет расчет. 

Тогда зачем проверять GetTypedOldColumnValue? Оно же возвращает старое значение, а не нынешнее. Просто проверку обязательности для поля можно включить в дизайнере объекта.

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

Казанцев Андрей Юрьевич пишет:
Поле календарь обязательно, и используется в расчетах.При заполнении всех полей в реестре детали и нажатия на кнопку закрыть страницы. Это значение сохраняется пустым. А по нему идет расчет. 

Вашу задачу, действительно, можно решить одним из вариантов, предложенными выше Александром.

Если все-таки хотите решить эту задачу через сравнение старого и нового значения, то лучше это делать на клиентском, а не на серверном уровне. Посмотрите метод asyncValidate.

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

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

Не могу найти внятного мануала на тему использования фильтрация в БП. 

Хочу отфильтровать ответственного по тикету по группе ответственных. (Выбираем группу -> список ответственных уменьшается). 

Подскажите как реализовать "хотелку" или укажите на гайд, где подобная задача решается?

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

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

Начните с просмотра этой статьи. В ней несколько ссылок на более подробное описание различных моментов связаных с БП. Так же просмотрите  статью СТРУКТУРА КЛИЕНТСКОЙ СХЕМЫ

 

 

 

Вашу задачу можно решить не только с помощью бизнес-правил.

Например, в базовой версии фильтрация поля 'Ответственный' настраивается через атрибуты таким образом:

"Owner": {
	"dataValueType": Terrasoft.DataValueType.LOOKUP,
	"lookupListConfig": {"filter": BaseFiltersGenerateModule.OwnerFilter}
}

Более того некоторые задачи по фильтрации данных с помощью бизнес-правил вообще не решаются.

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

Алла Савельева,  требуется следующую логику: 

1) При выборе ответственного, список доступных для выбора групп ответственных должен содержать только те группы, в которые входит ответственный

И обратное:

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

Sunrise challenge,

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

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

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

Нужно ли где-то определять BaseFiltersGenerateModule.OwnerFilter? 

Sunrise challenge,

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

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

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

Компилятор не выдаёт ошибок, схема сохраняется, при этом фильтрация не осуществляется

Sunrise challenge,

А в консоли браузера есть такие-то ошибки при выборе значения для этого поля?

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

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

Нужна ваша помощь. 

При внесении изменения в БП - "Отправка email сообщения контакту обращения", появляется ошибка. 

Правильно ли я понимаю, что нужно заместить какой-то класс? Какой, если так? 

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

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

Проводите вычисления через элемент "Задание-сценарий" 

Могли бы подсказать зачем, если процесс "из коробки" использует другой элемент? 

В новом (нынешнем) дизайнере процессов серьёзно урезали возможности формул. Если в 5.Х и ранних 7.Х там можно было написать кусочек C#-кода с вызовом функций, то сейчас — только функции из перечня в дизайнере формул.

Альтернативным решением может быть либо C#-скрипт, как посоветовал выше Айдар, либо же создание своего пользовательского действия, тоже написанного на C#, с последующим его запуском из элемента «Выполнить действие процесса» с нужными параметрами.

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

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

Т.е.: 

1) При обновлении версии приложения, БП, использующие подобные формулы, перестанут работать? 

2) Т.е. при отсутствии знаний С# аналитик решить вопрос не сможет?

1) Новый дизайнер процессов появился довольно давно. Если обновляете систему тех времён со своими доработками, нужно всё тестировать. Кстати, вспомнил, в старых версиях вообще не было элемента-формулы, произвольный код писался в условии потока.

2) Без знания C# он бы не решил и в старой версии, на Вашем скриншоте используются функции и элементы синтаксиса языка.

Также см. аналогичное обсуждение раньше.

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

Добрый день!

Подскажите, пожалуйста, как решить данный кейс?

1. По процессу необходимо отправить клиенту письмо по шаблону, котором должна отображаться продуктовая корзина заказа. 

Т.е. Создаем заказ вручную, добавляем продукты. Как отобразить в письме таблицу с продуктами в заказе?

 

2. Как в HTML код шаблона вставить динамические поля? возможно ли это?

 

Спасибо

 

Сейчас версия 7.13, на проде будет 7.14

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

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

1. Полностью решить такую задачу с помощью "родных" элементов не получится. Вам понадобится пользовательское действие, которое формирует html-таблицу из выборки по объекту. Не нашел его на маркетплейсе, но я точно его скачивал где-то на ресурсах Террасофта, возможно в том же маркетплейсе, просто искал плохо. Называется "Таблица детали для email". С помощью него Вы можете в процессе читать ваш шаблон, затем с помощью пользовательского действия формировать таблицу. После этого в элемент отправки письма вставляете html-текст шаблона + таблица. Должно сработать :)

1. Полностью решить такую задачу с помощью "родных" элементов не получится. Вам понадобится пользовательское действие, которое формирует html-таблицу из выборки по объекту. Не нашел его на маркетплейсе, но я точно его скачивал где-то на ресурсах Террасофта, возможно в том же маркетплейсе, просто искал плохо. Называется "Таблица детали для email". С помощью него Вы можете в процессе читать ваш шаблон, затем с помощью пользовательского действия формировать таблицу. После этого в элемент отправки письма вставляете html-текст шаблона + таблица. Должно сработать :)

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

Ксензов Егор пишет:

1. Полностью решить такую задачу с помощью "родных" элементов не получится. Вам понадобится пользовательское действие, которое формирует html-таблицу из выборки по объекту. Не нашел его на маркетплейсе, но я точно его скачивал где-то на ресурсах Террасофта, возможно в том же маркетплейсе, просто искал плохо. Называется "Таблица детали для email". С помощью него Вы можете в процессе читать ваш шаблон, затем с помощью пользовательского действия формировать таблицу. После этого в элемент отправки письма вставляете html-текст шаблона + таблица. Должно сработать :)

Егор, тысяча благодарностей, будем пробовать.

 

Ксензов Егор пишет:

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

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

Также см. обсуждение.

И в маркете нашлось очень по описанию похожее на Вашу потребность решение: Работа с поставщиками по товарам «под заказ»:

  • Отправка e-mail уведомлений со списком продуктов покупателям и поставщикам (в зависимости от типа заказа).

Виктория Мун,

Если не подойдут готовые решения, на которые указал Александр, то у Вас есть два пути:
1. Как вы и указали, делать блоками: часть письма будет шаблоном из справочника, часть - html'ем клиента. В бизнес-процессе уже будете склеивать шаблон письма из справочника + таблица + код клиента. Это подойдет если поля из макроса нужно указывать только в определенном блоке письма, например, в приветствии (т.е. заменить часть кода клиента на шаблон из справочника, в который подставляются макросы).
2. Обрабатывать весь html клиента в скрипт-таске.

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

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

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

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

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

Видимо, так и нужно. Также см. похожее обсуждение по изменению «собаки» в ленте.

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

Добрый день.

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

Здесь все хорошо описано, но у меня почему-то не работает.

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

Есть две таблицы.

ServiceItem и ServiceInServicePact

В ServiceItem есть колонка ITRelatedServiceId для связи со схемой ServiceInServicePact по её колонке ServiceItemId.

Нужно получить колонку Id из ServiceInServicePact

Делаю все как по примеру:

[Имя_присоединяемой_схемы:Имя_колонки_для_связи_присоединяемой_схемы:Имя_колонки_для_связи_текущей_схемы].

EntitySchemaQuery esqServiceItem = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "ServiceItem");
esqServiceItem.AddColumn("[ServiceInServicePact:ServiceItemId:ITRelatedServiceId].Id");
string esqSqlText = esqServiceItem.GetSelectQuery(UserConnection).GetSqlText(); 

И это не работает.

Прикрепляю скриншот с таблицами которые хочу сджойнить.

 

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

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

А что значит не работает, какая ошибка ?

Григорий Чех пишет:

Григорий Чех пишет:
ОтветитьЦитировать

 

Вот

Ругается на UserConnection, как вы его получаете? Ваш код вызывается из БП  или вєб сервиса???

По идее, если бы UserConnection было равно null, упало бы ещё на верхней строке. Нужно в отладке ещё посмотреть на значения всех упомянутых переменных, с чем что не так.

Как бы не в самой структуре запроса дело, верно была добавлена колонка «Id». Например, в схеме ExchangeEmailSyncProvider похожий запрос строят так:

var mssEntitySchemaQuery = new EntitySchemaQuery(userConnection.EntitySchemaManager, "MailboxSyncSettings");
string primaryColumnName = mssEntitySchemaQuery.AddColumn(mssEntitySchemaQuery.RootSchema.GetPrimaryColumnName()).Name;
//...
string activityRootFolderIdColumnName = mssEntitySchemaQuery.AddColumn("[ActivityFolder:Name:MailboxName].Id").Name;

 

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