Случайное число в процессе. Код элемента "задание сценарий":

var rnd = new Random();
int rndValue = rnd.Next(1,10);
Set("int1",rndValue); // "int1" - код параметра процесса
return true;

Нравится

Поделиться

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

Создаем мультилукапное поле. В текущем примере - поле "Клиент", в котором мы сможем выбирать либо Контакт, либо Контрагент.

1. В объект добавляем справочные поля, которые будет содержать в себе наше мультилукапное поле. В нашем примере это Контакт(UsrContact) и Контрагент(UsrAccount).

2. Добавляем третье спрвочное поле, из которого мы сделаем мультилукап. В нашем примере Клиент(UsrClient). Изначально оно может ссылаться на любой справочник.

3. В схему страницы редактирования добавляем описанный ниже кусок кода в блок attributes{}

attributes: {
    "UsrClient": { // поле, в котором создаем мультилукап
        "caption": "Клиент",  // название поля, которое отображается на странице
        "dataValueType": this.Terrasoft.DataValueType.LOOKUP,
        "multiLookupColumns": ["UsrContact", "UsrAccount"]  // перечисляем созданные нами колонки, которые будет содержать мультилукап
    }
}

 

Нравится

Поделиться

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

1. В объект добавляем строку неограниченной длины (обязательно!). Например, "UsrNotes"

2. В мастере выводим эту строку на нужное нам место. Например, во вкладке "Файлы и примечания" под деталью "Файлы и ссылки" создаем группу полей "Примечания" и добавляем в нее наше поле "UsrNotes"

3. В конфигурации находим код страницы редактирования данного объекта (название с Page в конце) и в коде ищем нужный нам контейнер с нашим полем. Меняем код его представления. Он должен выглядеть примерно так:

{
    "operation": "insert",
    "parentName": "UsrTestSectionPage3Tab", //у вас будет что-то другое
    "propertyName": "items",
    "name": "UsrNotes", //заменяем значение на название вашего поля
    "values": { // полностью заменяем все что в "values" от скобки до скобки
        contentType: Terrasoft.ContentType.RICH_TEXT, //основной атрибут, который нам нужно добавить
        "layout": {column: 0, row: 0, colSpan: 24},
        "labelConfig": {
            "visible": false
        },
        "controlConfig": {  //здесь и ниже код для того, чтобы в примечания можно было добавлять картинки
            "imageLoaded": {
                "bindTo": "insertImagesToNotes"
            },
            "images": {
                "bindTo": "NotesImagesCollection"
            }
        }
    }
}

 

Нравится

Поделиться

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

Выполнить sql запрос:

IF OBJECT_ID('tempdb..#TableList') IS NOT NULL
BEGIN
    DROP TABLE [#TableList]
END
CREATE TABLE [#TableList] ([Name] nvarchar(255) NOT NULL);
IF OBJECT_ID('tempdb..#SchemaDataList') IS NOT NULL
BEGIN
    DROP TABLE [#SchemaDataList]
END
CREATE TABLE [#SchemaDataList] ([Id] UNIQUEIDENTIFIER, [UId] UNIQUEIDENTIFIER);
IF OBJECT_ID('tempdb..#SchemaDataListForRecords') IS NOT NULL
BEGIN
    DROP TABLE [#SchemaDataListForRecords]
END
CREATE TABLE [#SchemaDataListForRecords] ([Id] UNIQUEIDENTIFIER, [UId] UNIQUEIDENTIFIER);
IF OBJECT_ID('tempdb..#SchemaUIdForRecordDefRightList') IS NOT NULL
BEGIN
    DROP TABLE [#SchemaUIdForRecordDefRightList]
END
CREATE TABLE [#SchemaUIdForRecordDefRightList] ([UId] UNIQUEIDENTIFIER, [Name] NVARCHAR(500), [ExtendParent] BIT);
INSERT INTO [#TableList] ([Name]) VALUES
('PortalMessage'),
('CaseMessageHistory')/*указать название своих объектов, на которые раздаем права*/
 
INSERT INTO [#SchemaDataList] ([Id], [UId])
SELECT [ss].[Id], [ss].[UId] from [dbo].[SysSchema] [ss]
    left join [dbo].[SysPackage] [sp] on [ss].[SysPackageId] = [sp].[Id]
    left join [dbo].[SysWorkspace] [sw] on [sp].[SysWorkspaceId] = [sw].[Id]
    where [sw].[Id] = (select Id from SysWorkspace where IsDefault = '1')
    and [ss].[Name] in (select [Name] COLLATE Cyrillic_General_CI_AI from [#TableList])
INSERT INTO [#SchemaDataListForRecords] ([Id], [UId])
SELECT [ss].[Id], [ss].[UId] from [dbo].[SysSchema] [ss]
    left join [dbo].[SysPackage] [sp] on [ss].[SysPackageId] = [sp].[Id]
    left join [dbo].[SysWorkspace] [sw] on [sp].[SysWorkspaceId] = [sw].[Id]
    where [sw].[Id] = (select Id from SysWorkspace where IsDefault = '1')
    and [ss].[ExtendParent] = 0
    and [ss].[Name] in (select [Name] COLLATE Cyrillic_General_CI_AI from [#TableList] WHERE [Name] NOT IN ('SocialChannel', 'CaseTag', 'CaseInTag', 'KnowledgeBaseTagV2', 'KnowledgeBaseInTagV2'))
INSERT INTO [#SchemaUIdForRecordDefRightList] ([UId], [Name], [ExtendParent])
SELECT [ss].[UId], [ss].[Name], [ss].[ExtendParent]from [dbo].[SysSchema] [ss]
    left join [dbo].[SysPackage] [sp] on [ss].[SysPackageId] = [sp].[Id]
    left join [dbo].[SysWorkspace] [sw] on [sp].[SysWorkspaceId] = [sw].[Id]
    where [sw].[Id] = (select Id from SysWorkspace where IsDefault = '1')
    and [ss].[Name] in ('KnowledgeBase', 'ServiceItem', 'SocialChannel', 'SysDashboard', 'Case', 'CaseInTag', 'KnowledgeBaseInTagV2')
DECLARE @Supervisor uniqueidentifier = '410006E1-CA4E-4502-A9EC-E54D922D2C00'
DECLARE @AllPortalUsersId uniqueidentifier = '720B771C-E7A7-4F31-9CFB-52CD21C3739F'
DECLARE @AllSystemUsersId uniqueidentifier = 'A29A3BA5-4B0D-DE11-9A51-005056C00008'
--AdministratedByOperations
delete SysSchemaProperty
    where SysSchemaId in (select [Id] from [#SchemaDataList]) and Name = 'AdministratedByOperations'
insert into [dbo].[SysSchemaProperty] ([Id], [CreatedById], [Name], [Value], [SysSchemaId])
    select newid(), @Supervisor, 'AdministratedByOperations', 'True', [Id] from [#SchemaDataList]
--AdministratedByColumns
delete SysSchemaProperty
    where SysSchemaId in (select [Id] from [#SchemaDataList]) and Name = 'AdministratedByColumns'
insert into [dbo].[SysSchemaProperty] ([Id], [CreatedById], [Name], [Value], [SysSchemaId])
    select newid(),@Supervisor, 'AdministratedByColumns', 'False', [Id] from [#SchemaDataList]
--AdministratedByRecords
delete SysSchemaProperty
    where SysSchemaId in (select [Id] from [#SchemaDataListForRecords]) and Name = 'AdministratedByRecords'
insert into [dbo].[SysSchemaProperty] ([Id], [CreatedById], [Name], [Value], [SysSchemaId])
    select newid(), @Supervisor, 'AdministratedByRecords', 'False', [Id] from [#SchemaDataListForRecords]
--SchemaOperationRight
delete SysEntitySchemaOperationRight
    where SubjectSchemaUId in (select [UId] from [#SchemaDataList])
insert into [dbo].[SysEntitySchemaOperationRight] ([Id], [CreatedById], [SysAdminUnitId], [CanRead], [CanAppend], [CanEdit], [Position], [SubjectSchemaUId])
    select newId(), @Supervisor, @AllPortalUsersId, 1, 0, 0, 0, [UId] from [#SchemaDataList]
insert into [dbo].[SysEntitySchemaOperationRight] ([Id], [CreatedById], [SysAdminUnitId], [CanRead], [CanAppend], [CanEdit], [CanDelete], [Position], [SubjectSchemaUId])
    select newId(), @Supervisor, @AllSystemUsersId, 1, 1, 1, 1, 1, [UId] from [#SchemaDataList]
--SysSSPEntitySchemaAccessList
delete SysSSPEntitySchemaAccessList
    where EntitySchemaUId in (select [UId] from [#SchemaDataList])
insert into [dbo].[SysSSPEntitySchemaAccessList] ([Id], [CreatedById], [EntitySchemaUId])
    select newId(), @Supervisor, [UId] from [#SchemaDataList]
--SysEntitySchemaRecordDefRight (Права на существующие записи)
delete SysEntitySchemaRecordDefRight
    where GranteeSysAdminUnitId = @AllPortalUsersId and SubjectSchemaUId in (select [UId] from [#SchemaUIdForRecordDefRightList] where Name <> 'Case' )
insert into SysEntitySchemaRecordDefRight (CreatedById, SubjectSchemaUId, AuthorSysAdminUnitId, GranteeSysAdminUnitId, Position, Operation, RightLevel)
    select @Supervisor, [UId], @AllSystemUsersId, @AllPortalUsersId, '0', '0', '1' from [#SchemaUIdForRecordDefRightList] where Name <> 'Case'
declare @CaseUId uniqueidentifier = (select top 1 [UId] from [#SchemaUIdForRecordDefRightList] where Name = 'Case'
    and [ExtendParent] = 0)
delete SysEntitySchemaRecordDefRight
    where SubjectSchemaUId = @CaseUId
    and AuthorSysAdminUnitId = @AllPortalUsersId
insert into SysEntitySchemaRecordDefRight (CreatedById, SubjectSchemaUId, AuthorSysAdminUnitId, GranteeSysAdminUnitId, Position, Operation, RightLevel)
    values( @Supervisor, @CaseUId , @AllPortalUsersId, @AllSystemUsersId,  '0', '0', '1' )
 
insert into SysEntitySchemaRecordDefRight (CreatedById, SubjectSchemaUId, AuthorSysAdminUnitId, GranteeSysAdminUnitId, Position, Operation, RightLevel)
    values( @Supervisor, @CaseUId , @AllPortalUsersId, @AllSystemUsersId,  '0', '1', '1' )
IF OBJECT_ID('tempdb..#TableList') IS NOT NULL
BEGIN
    DROP TABLE [#TableList]
END
IF OBJECT_ID('tempdb..#SchemaDataList') IS NOT NULL
BEGIN
    DROP TABLE [#SchemaDataList]
END
IF OBJECT_ID('tempdb..#SchemaDataListForRecords') IS NOT NULL
BEGIN
    DROP TABLE [#SchemaDataListForRecords]
END
IF OBJECT_ID('tempdb..#SchemaUIdForRecordDefRightList') IS NOT NULL
BEGIN
    DROP TABLE [#SchemaUIdForRecordDefRightList]
END

 

Нравится

Поделиться

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

Вставляем в элемент "Формула" и передаем в "тело письма"

"<div>Обращение "+[#Получение данных по претензии.Первый элемент результирующей коллекции.Номер#]+", "+[#Получение данных по претензии.Первый элемент результирующей коллекции.Тема#]+" от клиента \""+[#Читать Клиента.Первый элемент результирующей коллекции.Название#]+"\" закрыто.</div><div>Суть обращения: "+[#Получение данных по претензии.Первый элемент результирующей коллекции.Описание#]+"</div><div>Решение: "+[#Получение данных по претензии.Первый элемент результирующей коллекции.Решение#]+"</div><div><a href=https://0349402-sales-enterprise-marketing-service-enterprise-demo.bpmonline.com/0/Nui/ViewModule.aspx#CardModuleV2/CasePage/edit/"+[#Получение данных по претензии.Первый элемент результирующей коллекции.Id#]+">Перейти к претензии</a></div>"

 

Нравится

Поделиться

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

а адрес сайта можно как-то не зашивать, а получить в БП?

Например, завести системную настройку, читать в БП из неё.

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

Спасибо, даже нашёл такую настройку - SiteUrl 

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

1) Типизировать страницы редактирования раздела.

Предположим при типизации раздела "Х" была создана новая пустая страница с названием OldPage.

2) Перейди в конфигурацию.

3) Создать свою схему в конфигурации, назвав ее нужным именем (например – NewPage).

4) Унаследовать ее от нужной страницы редактирования (выбрать уже настроенную страницу нашего раздела Х. Скорее всего она будет называться "Схема страницы редактирования раздела "Х" ") и не забыть добавить определение:

define("NewPage", [], function() {
    return {
        entitySchemaName: "NewPageEntity",//название раздела Х. Можно посмотреть название в обьекте этого раздела.
        details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
        diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
        methods: {},
        rules: {}
    };
});

5) Сохранить изменения.

КОМПИЛИРОВАТЬ ВСЁ

6) Выполнить запрос:

update SysModuleEdit
set CardSchemaUId = (select Uid from SysSchema where name = 'NewPage' and ExtendParent = 0)
where CardSchemaUId = (select Uid from SysSchema where name = 'OldPage' and ExtendParent = 0)

КОМПИЛИРОВАТЬ ВСЁ

7) Очистить кэш. Проверить.

Нравится

Поделиться

0 комментариев
Показать все комментарии
double summ = 0;
string curr = "";
string mailBody = Get<string>("Body"); // Body- параметр БП (описание обращения)
if (mailBody.IndexOf("Валюта: ")>= 0 ) //IndexOf - возвращает позицию подстроки "Валюта: " (если -1 такой строки нет)
    {
        curr = mailBody.Substring(mailBody.IndexOf("Валюта: ")+8,3);// Substring(int1,int2) вырезает подстроку с индекса int1 (+8 "Валюта: "), длиной int2 (3 символ валюты напр.USD)
    }
if (mailBody.IndexOf("Сумма: ")>= 0 ) //IndexOf - возвращает позицию подстроки "Сумма: " (если -1 такой строки нет)
    {
        try
        {
        summ = Double.Parse(mailBody.Substring(mailBody.IndexOf("Сумма: ")+7));// см.MSDN класс Double, метод Parse
        }
        catch
        {
            summ = 0.00;
        }
    }
Set("Summ", summ); // параметр БП Summ
Set("Currency",curr);  // параметр БП Currency
 
return true;
//Пример. Если Body= "Добрый день хочу купить валюту. Валюта: USD Сумма: 45000"
//в итоге Currency="USD", а Summ=45000.00

 

Нравится

Поделиться

0 комментариев
Показать все комментарии
//Добавляем атрибуты и методы
attributes: {
    "UsrINTEGER111": { //Поле куда будет записываться количество дней разницы
        dataValueType: Terrasoft.DataValueType.INTEGER, //Тип поля (INTEGER)в зависимости от типа поля UsrINTEGER111
        dependencies: [
            {
                columns: ["UsrDATE", "UsrDATE1"], //Поля с датами
                methodName: "calculatedate"
            }
        ]
    }
},
methods: {
    calculatedate: function() {
        var D6 = this.get("UsrDATE");
        var D7 = this.get("UsrDATE1");
        if (D6 && D7) {
            this.set("UsrINTEGER111", parseInt(((D7.getTime()-D6.getTime())/86400000)+1)); //Формулу можно редактировать, например убрать +1
        }
    }
},

 

Нравится

Поделиться

0 комментариев
Показать все комментарии
//Добавляем атрибуты и методы
attributes: {
    "UsrDATE1": { //Поле куда будет записываться дата
        dataValueType: Terrasoft.DataValueType.DATE, //Тип поля в зависимости от типа поля UsrDATE1
        dependencies: [
            {
                columns: ["UsrDATE"], //Поле с первоначальной датой
                methodName: "calculatedate"
            }
        ]
    }
},
methods: {
    calculatedate: function() {
        var D6 = this.get("UsrDATE"); //Поле с первоначальной датой
        if (D6) {
            var D7 = new Date ();
            D7.setDate(D6.getDate() - 14); //14 количество дней, которые нужно отнять
            this.set("UsrDATE1", D7);
        }
    }
},

 

Нравится

Поделиться

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

Пример метода из статьи содержит ошибку, проверяется  вводом в первоначальную дату даты одного числа месяца, а затем вводом нового значения увеличенного на любое количество месяцев. Для корректного расчета  используйте  setTime и getTime для правильного отнимания  времени в милисекундах от первоначальной даты. Обновленный сalculatedate метод прилагаю ниже                                                сalculatedate: function() {

        var D6 = this.get("AccountClosingDate"); //Поле с первоначальной датой

        if (D6) {

            var D7 = new Date ();

            D7.setTime(D6.getTime() - (24*60*60*1000)); //24*60*60*1000 =1 день- количество дней, которые нужно отнять

            this.set("BalanceTransferDate", D7); //Поле где меняем дату от первоначальной

            this.save({isSilent: true}); //сохраняем

        }

    }, 

Показать все комментарии
// пример настройки заполнения значений полей детали значениями основной записи
define("ContractPageV2", ["ProcessModuleUtilities"], function(ProcessModuleUtilities) {
    return {
        entitySchemaName: "Contract",
        details: /**SCHEMA_DETAILS*/{
    "CaseDetailf1b0196f": {
        "schemaName": "CaseDetail",
        "entitySchemaName": "Case",
        "filter": {
            "detailColumn": "UsrContract",
            "masterColumn": "Id"
        },// поставить запятую добавить код ниже:
        "defaultValues": {
            "UsrContract": {//колонка детали
                "masterColumn": "Id"//колонка основной записи (Важно! добавление id тоже нужно прописать (если связь не по id, а иначе - ориентироваться на блок "filter":))
            },
            "Account": {//колонка детали
                "masterColumn": "Account"//колонка основной записи
            },
            "UsrProject": {//колонка детали
                "masterColumn": "UsrProject"//колонка основной записи
            }
        }
    },
    "UsrSchema17Detail0e700a70": {
        "schemaName": "UsrSchema17Detail",
        "entitySchemaName": "UsrPaySchedule",
        "filter": {
            "detailColumn": "UsrContract",
            "masterColumn": "Id"
        },
        "defaultValues": {
            "UsrContract": {
                "masterColumn": "Id"
            },
            "UsrProject": {
                "masterColumn": "UsrProject"
            }
        }
    },
    "UsrSchema19Detailde623a55": {
        "schemaName": "UsrSchema19Detail",
        "entitySchemaName": "Contract",
        "filter": {
            "detailColumn": "Parent",
            "masterColumn": "Id"
        },
        "defaultValues": {
            "Parent": {
                "masterColumn": "Id"
            },
            "Account": {
                "masterColumn": "Account"
            },
            "UsrProject": {
                "masterColumn": "UsrProject"
            },
            "CurrencyRate": {
                "masterColumn": "CurrencyRate"
            }
        }
    },
    "UsrSchema13Detail4970b370": {
        "schemaName": "UsrSchema13Detail",
        "entitySchemaName": "UsrDepartmet",
        "filter": {
            "detailColumn": "UsrCredit",
            "masterColumn": "Id"
        }
    }
}/**SCHEMA_DETAILS*/,
//...

 

Нравится

Поделиться

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