Вопрос

Есть ли список всех формул (к примеру Reverse().ToArray() и тд.), которые могут использоваться в елементе Формула в Бизнес-процессе?

Нравится

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

Максим, добрый день!

Данная информация подробно описана в статье на академии:

https:/academy.terrasoft.ua/docs/user/biznes_processy/nastrojka_processov/formuli/formuly_v_biznes-processakh

Формулы в бизнес процессах работают с С#.

С уважением, Алексей.

Aleksei Efimenko,

Спасибо, Алексей.

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

Требуется переопределить базовую схему FileImportStartPage. Что бы при вызове стандартного импорта вида ViewModule.aspx?vm=FileImportWizard#FileImportModule/FileImportStartPage/b8482840-b481-47ba-8d10-ce16561429f1/Contact

Выдавалась моя страница с частично изменённой логикой. Но при переопределении схем FileImportStartPage, FileImportModule, FileImportWizard

Падает с ошибками

Нравится

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

Добрый день.

Уточните, пожалуйста, какую ошибку вы получаете?

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

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

Есть необходимость отправлять динамические структуры как в js, к примеру через тип JObject, но получаем 500 когда пробуем в веб-сервисе вернуть данный тип.



Как сделать что-то типо такого: 

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers().AddNewtonsoftJson(x => x.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);
}

 

.net core

Нравится

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

Стас, добрый день!

Для сериализации/десериализации вы можете в сервисе использовать либу Newtonsoft.

Для этого сперва нужно добавить следующие using:

using Newtonsoft.Json;

using Newtonsoft.Json.Linq;

После чего в методе сервиса вызвать:

var content = JsonConvert.SerializeObject(objectToSerialize);

Хочется что бы это был стандартный сериализатор, а не возвращать строку которая ещё раз будет сериализирована стандартным .net  сериализатором. 

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

Добрый день!



Развернул creatio on-site, но при попытке проверки авторизации с помощью Postman мне возвращается 401Unauthorized

{
    "Message": "There was an error processing the request.",
    "StackTrace": "",
    "ExceptionType": ""
}

Сам запрос с корректными данными в Body c которым я захожу на сайт

POST /0/ServiceModel/AuthService.svc/Login HTTP/1.1
Host: my-host
Content-Type: application/json
Cookie: UserName=103|113|100|106|103|106|112|114|113|102|111
Content-Length: 76
 
{    
    "UserName":"UserName",
    "UserPassword":"UserPassword"
}



Подскажите в чем может быть проблема?



 

Нравится

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

host/0/SERVICEMODEL/AUTHSERVICE.SVC/LOGIN 401 UNAUTORIZED

host/SERVICEMODEL/AUTHSERVICE.SVC/LOGIN 200 OK 

Добрый день.

Похоже на то, что вы используете .net Core сборку приложения.
В .net Core приложении нет "0", именно по этому вы не можете авторизоваться.
Корректный путь "/ServiceModel/AuthService.svc/Login HTTP/1.1".

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

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

мой код выглядит сейчас вот так

}/**SCHEMA_BUSINESS_RULES*/,

        methods: {

            init: function() 

            {

              this.callParent(arguments);

              this.sandbox.subscribe("NeedUpdatedGrid", this.myNameMethod, this);

            },

            myNameMethod: function(arguments) {

                if(this.get("Id") === arguments){

                    alert("все сработало");

                    this.reloadEntity();

                    var D = new Date(this.get("UsrDatetimeStart"));

                      D.setDate(D.getDate() + 31);

                      alert(D);

                }

                

            }

        }, 

Нравится

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

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

 

Представим, что есть колонка типа Date с кодом UsrCustomDate. Представим, что есть задача при открытии страницы проставлять в этой колонке (вне зависимости от текущего значения в этой колонке) дату 15.02.2022. Тогда код будет такой:

onEntityInitialized: function() {
				this.callParent(arguments);
				this.set("UsrCustomDate", new Date(2022,1,15));
			},

Все дело в конструкции new Date(2022,1,15) - она создаст объект в котором запишет дату, которую мы передали аргументом в конструктор. Если в Вашем случае это нужно делать после получения сообщения от бизнес процесса, то в сообщении можно передать необходимые параметры строкой (или несколькими строками), а потом в методе-обработчике полученного сообщения на клиенте распарсить полученное с сервера в результате БП сообщение и в конструктор Date записать нужные данные, а потом через this.set проставить их колонке типа Date.

 

С уважением,

Олег

Дата не изменяется, но ивент вызывается при нажатии "создать запись" и я проверя дату в alert она правильная но не изменяется  можно ли сделать чтобы он срабатывал после выполнения первой активности скажем оформления договора. и где можно посмотреть доступные ивенты? Спасибо большое

или подскажите где посмотреть ивенты доступные, я искал в доке не нашел!

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

Коллеги всем доброго времени суток!

Подскажите есть ли возможность создавать пакет- проект под NetStandart?

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

Нравится

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

Алексей, добрый день!

В пакете-проекте проект, для этого пакета, создается в ручную, после компиляции этого проета ми получим библиотеки которые будут подгружены приложением Creatio. Будет ли код под framework или и  под netstandard это уже не имеет значения. Важно что dll для framework должны располагаться в  Files\Bin\ пакета, а для netstandard в Files\Bin\netstandard

Дима Вовченко,

благодарю.

Есть еще один вопрос.

Пытаюсь создать модель в проекте через команду но мне выдает ошибки:

 clio add-item model ExcelReportLog  -e ExcelReports

Your app does not contain clio API.

You should consider install it via the 'clio install-gate' command.

System.Net.WebException: The remote server returned an error: (404) Not Found.

   at System.Net.HttpWebRequest.GetResponse()

   at Creatio.Client.ATFWebRequestExtension.GetServiceResponse(HttpWebRequest request)

   at Creatio.Client.CreatioClient.ExecuteGetRequest(String url, Int32 requestTimeout)

   at Clio.Program.GetClassModels(String entitySchemaName, String fields)

   at Clio.Program.AddModels(ItemOptions opts)

Хотя cliogate я поставил на среду. В чем может быть проблема?

 

Дима Вовченко,

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

Files\Bin\ и Files\Bin\netstandard?

И не важно что сам проект будет framework  v4.7.2?

Или нужно заводить проект под netstandard?

 

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

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

Terrasoft.Common.DbOperationException: 23503: insert or update on table "UsrContracts" violates foreign key constraint "FK2P3ugwbN5k9c56HDmFngL4w6uY" ---> Npgsql.PostgresException: 23503: insert or update on table "UsrContracts" violates foreign key constraint "FK2P3ugwbN5k9c56HDmFngL4w6uY"

Нравится

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

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



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

 

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

SELECT * FROM information_schema.constraint_column_usage WHERE constraint_name = 'FK2P3ugwbN5k9c56HDmFngL4w6uY';



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

Пожалуйста, отправьте нам письмо на support@creatio.com с объяснением этой проблемы, и мы будем рады помочь вам.

 

С уважением,

Дарий

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

Есть 2 бизнес-процесса, которые стартуют по одному и тому же сигналу.

Как понять, какой из них начнет своё выполнение раньше?

Нравится

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

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

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

С уважением, Алексей.

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

привет,

 

возникла след проблема - загрузил в отдельный пакет-проект reference assembly, пересобрал ассембли локально и хочу снова загрузить. для этого я удаляю старую дллку с помощью Configuration страницы, загружаю новую, нажимаю Compile All кнопку. после этого все равно остается старая дллка и я не могу проверить новые фиксы/ функционал и тд. в чем может быть проблема? 

 

использую локальную разработку, .net core 3.1 приложение в докере, file mode - false.

Нравится

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

Добрый день.



Для того чтобы приложение подтягивало сборку из Пакета-Проекта, нужно:



1. Название dll сборки Пакета-Проекта,  должно совпадать с названием пакета.



2. dll сборка Пакета-Проекта должна находится в соответсвующей директории: 

  - TS.Conf/PackageName/Files/Bin/ (для Framework) 

  - TS.Conf/PackageName/Files/Bin/netstandard (для .NetCore)



3. Для .NetCore флаг Feature-UseSeparateDirectoryToLoadPackageAssemblies (в Terrasoft.WebHost.dll.config) должен быть включен:

<add key="Feature-UseSeparateDirectoryToLoadPackageAssemblies" value="true" />



4. Cборка должна быть помечена аттрибутом:

[assembly: PackageReferenceAssembly(RefAssemblyMarker.All)]

и добавить: using Terrasoft.Core.Attributes;

Это делается в AssemblyInfo.cs (папка Properties - Properties\AssemblyInfo.cs )

Если используется, новая версия проекта *.csproj, то в нем AssemblyInfo.cs генерируется автоматически на основании проекта.



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

Для этого в проект *.csproj, надо добавить запись:

<PropertyGroup>

           .........................................

           <GenerateAssemblyInfo>false</GenerateAssemblyInfo>

           .......................................

</PropertyGroup>

Cherednichenko Nikita,

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

но все равно осталась проблема вызова рест ендпоинта. не получается сделать вызов если код находится в библиотеке (reference assembly), а не в исходнике кода (source code).

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

 

using System.ServiceModel;
using System.ServiceModel.Web;
using System.ServiceModel.Activation;
using Terrasoft.Web.Common;
 
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class GreetingService : BaseService
{
    [OperationContract]
    [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json)]
    public string Test()
    {
 
        return "test output";
    }
}

в чем может быть проблема? или рест сервисы в reference assembly не поддерживаются/надо что-то еще добавить?

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

Привет,

 

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

На данный момент код выполняется в бизнес процессе как script task.

теперь мне его надо сохранить в базу данных. как это сделать? 

Прочитав статью Добавить данные https://academy.terrasoft.ua/docs/user/biznes_processy/spravka_po_eleme… я не уверен что это то, что мне нужно. 

 

Спасибо!

Нравится

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

попробовать через c# скрипт достучатся до пропети веб сервиса где лежит результат и там уже через Entity/Insert/CustomQuery.

попробовать через c# скрипт достучатся до пропети веб сервиса где лежит результат и там уже через Entity/Insert/CustomQuery.

Стас Гаврилюк,

спасибо за помощь. получилось сделать с помощью Entity.

 

var warehouseSchema = UserConnection.EntitySchemaManager.FindInstanceByName(WarehouseTableName);
var entity = warehouseSchema.CreateEntity(connection);
 
var entityExists = entity.FetchFromDB(conditionColumnName: WarehouseRefColumn, conditionValue: instance.Ref);
 
entity.SetDefColumnValues();
entity.SetColumnValue(WarehouseCityColumn, instance.CityDescription);
entity.Save();

 

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