Я сейчас в пробной версии работаю, узнаю все. 

Нужно согласовать документ, но доступны разделы "Договор" и "контракт", да и "закупки".

Хотелось бы брать документ для согласования из раздела "Документы".

Как это сделать? Если можно, максимально простыми словами, т.к. в кодах пока еще не разбираюсь.

Спасибо!

Нравится

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

Добрый день!

В bpm'online studio нет раздела "Документы". Вам нужно:

- использоваться bpm'online sales,

- либо ставить дополнение Docs из маркетплейс

- либо самому добавить раздел

Добрый день!

В bpm'online studio нет раздела "Документы". Вам нужно:

- использоваться bpm'online sales,

- либо ставить дополнение Docs из маркетплейс

- либо самому добавить раздел

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

Terrasoft.Common.DbOperationException: The INSERT statement conflicted with the FOREIGN KEY constraint "FKmCHVieuE4OQALQKNVhLvr9q9YI0". The conflict occurred in database "048295-crm-bundle", table "dbo.Contract", column 'Id'.

The statement has been terminated. ---> System.Data.SqlClient.SqlException: The INSERT statement conflicted with the FOREIGN KEY constraint "FKmCHVieuE4OQALQKNVhLvr9q9YI0". The conflict occurred in database "048295-crm-bundle", table "dbo.Contract", column 'Id'.

The statement has been terminated.

   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)

   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)

   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)

   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)

   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)

   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)

   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)

   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()

   at Polly.Policy.<>c__DisplayClass119_0`1.b__0(Context ctx, CancellationToken ct)

   at Polly.Policy.<>c__DisplayClass129_0`1.b__0(Context ctx, CancellationToken ct)

   at Polly.Policy.<>c__DisplayClass103_0.b__1(Context ctx, CancellationToken ct)

   at Polly.NoOp.NoOpEngine.Implementation[TResult](Func`3 action, Context context, CancellationToken cancellationToken)

   at Polly.Policy.<>c.b__103_0(Action`2 action, Context context, CancellationToken cancellationToken)

   at Polly.Policy.ExecuteInternal[TResult](Func`3 action, Context context, CancellationToken cancellationToken)

   at Polly.Policy.Execute[TResult](Func`3 action, Context context, CancellationToken cancellationToken)

   at Polly.Policy.Execute[TResult](Func`1 action)

   at Terrasoft.DB.MSSql.MSSqlExecutor.FailoverExecute[TResult](DbCommand command, Func`1 func)

   at Terrasoft.Core.DB.DBExecutor.ExecuteCommand[TResult](Func`2 commandExecutionCallback, String sqlText, QueryParameterCollection queryParameters, CancellationToken cancellationToken)

   at Terrasoft.Core.DB.DBExecutor.Execute(String sqlText, QueryParameterCollection queryParameters)

   at Terrasoft.Core.Entities.Entity.InsertToDB(Boolean skipLookupColumnValues, Boolean validateRequired)

   --- End of inner exception stack trace ---

   at Terrasoft.Core.Entities.Entity.InsertToDB(Boolean skipLookupColumnValues, Boolean validateRequired)

   at Terrasoft.Core.Entities.Entity.InternalSave(Boolean validateRequired, Boolean setColumnDefValue)

   at Terrasoft.Core.Entities.Entity.Save(Boolean validateRequired, Boolean setColumnDefValue)

   at Terrasoft.Core.Process.ProcessEngineImpl.AddProcessListener(Entity entity, Guid processElementUId, String conditionData, String changedColumns, EntityChangeType entityChangeType)

   at Terrasoft.Core.Process.Configuration.ApprovalUserTask.InternalExecute(ProcessExecutingContext context)

   at Terrasoft.Core.Process.ProcessActivity.ExecuteElement(ProcessExecutingContext context)

   at Terrasoft.Core.Process.ProcessActivity.Execute(ProcessExecutingContext context)

Нравится

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

Здравствуйте. Это ошибка на уровне бд по внешнему ключу ссылающемуся на договор(Contract). Простыми словами нет договора 

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

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

Всем доброго дня. Версия 7.14.

Клиент хочет добавить свои корпоративные цвета для диаграмм, в идеале - заменить вот эти:

 

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

Удалось найти, что список цветов задаётся в модуле DashboardEnums. Но добавление новых относится к запрещённому ныне переопределению модулей. Быть может есть всё-таки обходные пути?

Нравится

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

Добрый день, Денис!



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

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

Мотков Илья,

Подскажите ситуация изменилась? Теперь можно свои цвета задавать при построении графиков?

На данный момент, изменить базовые цвета графиков на кастомные возможности нет. 

Такие изменения запланированы на начало следующего года вместе с переводом страницы настройки Итогов на Angular.

 

Для самостоятельной доработки Вам необходимо создать свой модуль на основе DashboardEnums. Но есть несколько нюансов, которые нужно учесть:

1. В Вашем модуле необходимо перезаписать данные свойства -  Terrasoft.DashboardEnums.WidgetColorSetTerrasoft.DashboardEnums.StyleColorsTerrasoft.DashboardEnums.WidgetColor.

2. Так же необходимо изменить/дописать все CSS связанные с ключевыми словами этих цветов - например везде где упоминается свойства widget-green.

3. Чтобы подключить этот модуль к приложению, а так же измененные/дописанные стили, необходимо указать их в зависимости к модулю BootstrapModulesV2 (предварительно сделав замещающею схему).

 

 

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

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

 

Даниэль, цвета задаются не для одной диаграммы, а для всех графиков. Сами константы заданы в DashboardEnums.

    Terrasoft.DashboardEnums.WidgetColorSet = [
    /** 0: ####### */
        "#03a9f4",
    /** 1: ####### */
        "#20c964",
    /** 2: ######### */
        "#ffc107",
    /** 3: ######### */
        "#ff9800",
    /** 4: ########## */
        "#ff7043",
    /** 5: ########## */
        "#9575cd",
    /** 6: ##### */
        "#0091ea",
    /** 7: ######### */
        "#00bfa5",
    /** 8: #####-######### */
        "#009688"
    ];

Например, если в консоли браузера написать:

Terrasoft.DashboardEnums.WidgetColorSet[0]='#00FF00';

Terrasoft.DashboardEnums.WidgetColorSet[1]='#0000FF';

и т. д., и зайти в итоги, то цвета графиков изменятся:

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

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

Доброго дня. 

Есть в системе Контрагент, и есть Контакт у этого Контрагента.



И есть ответственный, как у Контрагента, так и у Контакта.



Однако, если у Контрагентов один Ответственный - это ведущий менеджер, то у Контактов пользователь Supervisor.



Как бы привести в соответствие ответственных из Контрагента в Контакты. Не в ручную, а автоматизированно. 

 

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

Если это так, то подскажите, какая документация может помочь? 

Или если не бизнес-процессы, то что? 

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

Нравится

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

Добрый день!

Ответственный у контрагентов и контактов - это тот, кто создал контрагент и контакт.

Привести в соответствие по вашему описанию можно скриптом в базе, например:

update c
set OwnerId = a.OwnerId
from Contact as c
join Account as a on c.AccountId = a.Id
 
либо (в зависимости от связи)
 
update c
set OwnerId = a.OwnerId
from Contact as c
join Account as a on c.Id = a.PrimaryContactId

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

Добрый день!

Ответственный у контрагентов и контактов - это тот, кто создал контрагент и контакт.

Привести в соответствие по вашему описанию можно скриптом в базе, например:

update c
set OwnerId = a.OwnerId
from Contact as c
join Account as a on c.AccountId = a.Id
 
либо (в зависимости от связи)
 
update c
set OwnerId = a.OwnerId
from Contact as c
join Account as a on c.Id = a.PrimaryContactId

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

Сидоров Александр В.,

То есть в бизнес-процесс можно зашить этот скрипт?

Bogdan Zozulya,

Да, можно. Элемент "Задание сценарий", в нем вызов CustomQuery

Можно, но не нужно. Внутри БП для этого есть более подходящие способы: элементы чтения и изменения данных или работа в скрипте с EntitySchemaQuery.

А приведенный выше скрипт — для быстрого единоразового изменения всех требуемых записей, если есть доступ к базе.

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

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

Bogdan Zozulya,

С документацией по настройке бизнес-процессов можете ознакомиться по этой ссылке на Академии и более подробно по работе с данными здесь.

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

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

Можно сделать два отдельных механизма: один — для разового запуска в начале, другой — постоянно готовый сработать БП на событии изменения поля «Ответственный» контрагента: получаем значение поля и элементом изменения данных меняем ответственного во всех контактах, у которых указан этот контрагент.

Bogdan Zozulya,

Если возникнут дополнительные вопросы, спрашивайте - с радостью помогу.

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

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

Сидоров Александр В.,

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

В зависимости от того, как связаны интересующие контакты с контрагентом: по полю в контрагенте «Основной контакт» или наоборот, по полю в контакте «Контрагент».

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

Понял, внимательно изучил, второй вариант, по полю «Контрагент» в «Контакте». Выходит второй вариант скрипта. верно?  

update c
set OwnerId = a.OwnerId
from Contact as c
join Account as a on c.Id = a.PrimaryContactId
Показать все комментарии

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

 

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

Подскажите, пожалуйста, где это делается

Нравится

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

Добрый день!

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

А там уже добавлять, изменять поля

Добрый день!

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

А там уже добавлять, изменять поля

Спасибо. Кажется раньше этой вкладки не было? Еще в процессе разработки нашими кастомизаторами со страницы Обращения была убрана страница "Обработка", нет детали, где заказчик и обработчик заявки общаются. Точнее у заказчика она есть:

 

А у обработчика ее нет. Как можно ее вернуть?

Разверните на отдельном сервере вашу версию bpmonline и заберите оттуда все что вам нужно востановить....

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