Вопрос

Добрый день.

Хотел задать вопрос по поводу создания нового рабочего пространства. В документации написано, что для создания нового рабочего пространства необходимо в настройках IIS добавить в веб-сайт новое приложение WebApp указав в качестве псевдонима следующий порядковый номер, оставив при этом все остальные настройки такими же как и для рабочего пространства 0. Правильно ли я понимаю, что физически на диске будет одна папка Terrasoft.WebApp, и с этой одной папкой, в случае нескольких рабочих пространств, будет работать несколько приложений IIS? Или же надо делать на диске копии папки Terrasoft.WebApp и создавать в IIS приложения, каждое из которых работает со своей папкой?

Заранее спасибо за ответ.  

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

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

Здравствуйте, Игорь!

Использовать рабочие пространства (кроме рабочего пространства по умолчанию Default) не рекомендуется. В промышленной среде использовать рабочие пространства (кроме Default) запрещено.

Это функционал является устаревшим и постепенно выводится из приложения.

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

Как в карточку контакта добавить Продукт. Цель - при открытии Истории контакта, чтобы было видно, какие продукты им покупались. (при добавлении детали - в итоге она не отображается.... возможно, неверные привязки "Колонка детали" и "Колонка объекта"?...

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

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

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

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

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

Как увеличить значение на 1 в огромной таблице, такое не работает, кто может подсказать решение?

var userConnection = (UserConnection)HttpContext.Current.Session["UserConnection"];
var update = new Update(userConnection, "Contact")
    .Set("UsrtLastCallCountDay", new Select(userConnection).Top(1)
        .Column("CurrentContact", "UsrtLastCallCountDay")
        .From("Contact").As("CurrentContact")
        .Where("CurrentContact", "Id").IsEqual("Contact", "Id") + 1)
   .Set("UsrtLastWinCallCountDay", new Select(userConnection).Top(1)
        .Column("CurrentContact", "UsrtLastWinCallCountDay")
        .From("Contact").As("CurrentContact")
        .Where("CurrentContact", "Id").IsEqual("Contact", "Id") + 1);
update.Execute();
return true;

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

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

Обычно увеличение или уменьшение значения колонки на число в update делают наподобие такого:

var purchaseId = Entity.GetTypedColumnValue<Guid>(purchaseColumnValueName);
Update productInPurchaseUpdate = new Update(UserConnection, "ProductInPurchase")
	.Set("Position", Column.SourceColumn("Position") - Column.Const(1))
		.Where("Position")
			.IsGreater(Column.Parameter(Entity.GetColumnValue("Position")))
		.And("PurchaseId")
			.IsEqual(Column.Parameter(purchaseId)) as Update;
productInPurchaseUpdate.Execute();

 

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

благодарю, не знал о подобном

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

Задание: В карточке в вкладке есть 2 детали(А и Б)

Нужно что бы при выборе записи из детали А обновлялся реестр на детали Б.

Пытался Делать через "filterMethod": "OnLotPeriodInTendersFilter"

и по событию обновлять реестр Б, но OnLotPeriodInTendersFilter Запускается только раз, и при reloadGridData() в детали Б Новы й фильтр не подтягиватся... Подскажите как решить данное бизнес-задание

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

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

Добрый день

Вам нужно при выделении записи делать publish сообщения для другой детали. А в детали "А" сделать subscribe и обновлять все, что вам нужно

Добрый день Виталий.

Советую найти и разобраться как работают детали "BaseOneToManyGridDetail", "BaseManyToManyGridDetail". Именно взяв за основу одну из них можно решить вашу задачу. Поискать примеры можно в конфигурации BPMOnline Service Enterprise. Там есть готовые и реализованные примеры. 

Артем Гура,

Это понятно, не могу найти где именно можно применить новый фильтр

Власов Михаил Викторович,

буду искать

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

Всем доброго времени суток. Версия 7.11.

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

Привязка на деталь осуществляется по id основной записи. Обычно в таких случаях на клиенте создаётся свой guid через функцию Terrasoft.generateGUID();, который затем в insert прописывается в колонку Id также, как и любая другая колонка.

Есть ли аналог этого в сценариях БП?

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

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

Денис, здравствуйте.

Для этих целей есть метод Guid.NewGuid(), подробнее можно найти по ссылке.

Пример использования : 

var contactId = Guid.NewGuid();

Андрей, спасибо! Частично помогло.

Частично - потому что записать сгенерированный таким образом newGiud в другой объект в колонку-справочника невозможно. Возникает ошибка: System.ArgumentException: Отсутствует сопоставление типа объекта Terrasoft.Core.DB.QueryColumnExpression с известным собственным типом управляемого поставщика.

Соответственно вопрос: есть ли callback у insert.Execute(); ? Чтобы можно было гарантированно вызвать продолжение функции уже после того, как запись с id newGiud создана в базе.

Денис

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

например

var Id = item.GetTypedColumnValue<Guid>("Id");

Пример можно глянуть здесь https://academy.terrasoft.ru/documents/technic-sdk/7-11/kak-zapuskat-pr…

 

Денис,

Просьба предоставить полный код Задания - сценария, тогда будет проще понять в чем ошибка.

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

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

Одобрена
2 комментария

Здравствуйте, Владимир!

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

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

Владимир, спасибо за проявленный интерес. Зарегистрировали ваше пожелание по развитию приложения.

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

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

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

Добрый день!

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

Потому в данной ситуации, необходимо реализовать свой метод.

 

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

Добрый день.

Переименовал раздел Контрагенты в Компании, и название кнопки "Добавить контрагента" теперь выглядит неуместно. Подскажите пожалуйста, где необходимо внести изменения (в схеме AccountSectionV2 эта кнопка не фигурирует)

Прикрепленные файлы
тикет.png51.89 КБ

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

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

Здравствуйте, Иван!

Переименовать кнопку "Добавить контрагента" можно в разделе "Переводы". Больше информации о функциональности переводов в нашем приложении Вы сможете найти на Академии: https://academy.terrasoft.ru/documents/sales-enterprise/7-11/multiyazychie.

Примечание. после применения переводов необходимо перезайти в систему - тогда изменения вступят в силу.

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

Мы реализовывали Ваш кейс следующим образом:

- нашли соответствующую запись в Переводах - https://prnt.sc/hyys9e

- применили переводы

- перезашли в приложение

В результате название кнопки изменилось - http://prntscr.com/hyyvkq

Если Вы действовали по описанному алгоритму, и название кнопки не изменилось, напишите нам в службу поддержки на support@terrasoft.ru для более детального рассмотрения Вашего кейса.

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

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

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

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

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

Не совсем понял вопроса, можно описать кейс поподробнее?

И что вы подразумеваете под "виртуальной колонкой" и как вы собираетесь её показывать в реестре?

Тёскин Дмитрий Валерьевич,

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

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

Владимир Соколов,

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

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

Коллеги, доброго времени суток. Версия 7.11.
Хотелось бы прояснить вопрос с запуском бизнес-процесса из задания-сценария. Сразу оговорю, вариант с элементом "Подпроцесс" не подходит, т.к. планируется получение выборки данных запросов по нескольким условиям с дополнительными манипуляциями, что возможно делать только внутри Script Task.

Для теста, впрочем, был сделан простой процесс, который просто логирует текущую дату и параметр в справочник. Процесс называется, допустим UsrStartTestProcess, у него есть параметр UsrTestParameter.

Нашёл вот такую тему: https://community.terrasoft.ru/questions/zapusk-bp-iz-elementa-zadanie-…

Внутри другого процесса в скрипт таске вызываю следующий код:

var userConnection = Get<UserConnection>("UserConnection");
/* тут всякие манипуляции */

Dictionary<string, string> parameters = new Dictionary<string, string>();
parameters["UsrTestParameter"] = UsrCaseId.ToString();
processExecutor = userConnection.ProcessEngine.ProcessExecutor;
processExecutor.Execute("UsrStartTestProcess", parameters);

При компиляции процесс выдаёт ошибку: The name 'processExecutor' does not exist in the current context на строчке processExecutor = userConnection.ProcessEngine.ProcessExecutor;

Что я делаю не так? Что ещё должно быть подключено?

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

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

Денис, привет!

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

var user = UserConnection;
var processSchemaManager = (ProcessSchemaManager)user.GetSchemaManager(@"ProcessSchemaManager");
var processSchema = processSchemaManager.GetInstanceByName(@"ProcessName");
var process = processSchema.CreateProcess(user);
process.SetPropertyValue(@"ContactId", ContactId);
process.Execute(user);

 

Приветствую, Денис!

Запустить бизнес-процесс с элемента задания-сценария можно написав в текст сценария следующий код:

UserConnection userConnection = Get<UserConnection>("UserConnection");
var manager = userConnection.ProcessSchemaManager;
var processSchema = manager.GetInstanceByName(@"UsrStartTestProcess");
var process = processSchema.CreateProcess(userConnection);
if (processSchema.Parameters.ExistsByName(@"UsrTestParameter"))
{
    //здесь выполняется передача параметров в БП, где parameters - коллекция в текущем БП, UsrTestParameter - коллекция в запускаемом БП
    process.SetPropertyValue(@"UsrTestParameter", parameters);
}
process.Execute(userConnection);

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

Кормильцев Андрей,

Андрей, спасибо! Похоже, работает.

Если ещё будут вопросы, я задам в Техподдержке.

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