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

Создал объект: UsrCaseTest

  1. В этом объекте создал справочное поле UsrContact( родительский объект "Contact")
  2. Через мастера все добавил, настроил. Деталь работает справочное поле все показывает,

    Изображение удалено.
  3. После добавления значения не сохраняются. 

    Изображение удалено.
  4. Код схемы детали: 

     

    // Определение схемы и установка ее зависимостей от других модулей.

    define("UsrCaseTestDetail", ["ConfigurationEnums"],

        function(configurationEnums) {

            return {

                // Название схемы объекта детали.

                entitySchemaName: "UsrCaseTest",

                // Методы схемы детали.

                methods: { 

                    //Возвращает колонки, которые выбираются запросом.

                    getGridDataColumns: function() {

                        return {

                            "Id": {path: "Id"},

                            "UsrContact": {path: "UsrContact"},

                            "UsrContact.Name": {path: "UsrContact.Name"}

                        };

                    },

                    openContactLookup: function() {

                        var config = {

                            entitySchemaName: "Contact",

                            multiSelect: true,

                            columns: ["Name"]

                        };

                        // Экземпляр класса [EntitySchemaQuery].

                        var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {

                            // Установка корневой схемы.

                            rootSchemaName: this.entitySchemaName

                        });

                        // Добавление колонки [Id].

                        esq.addColumn("Id");

                        // Добавление колонки [Id] из схемы [Document].

                        esq.addColumn("UsrContact.Id", "UsrContactId");

                        esq.getEntityCollection(function(result) {

                            var existsContactsCollection = [];

                            if (result.success) {

                                result.collection.each(function(item) {

                                    existsContactsCollection.push(item.get("UsrContactId"));

                                });

                            }

                            // Добавление фильтра в конфигурационный объект.

                            if (existsContactsCollection.length > 0) {

                                var existsFilter = this.Terrasoft.createColumnInFilterWithParameters("Id",

                                existsContactsCollection);

                                existsFilter.comparisonType = this.Terrasoft.ComparisonType.NOT_EQUAL;

                                existsFilter.Name = "existsFilter";

                                config.filters = existsFilter;

                            }

                            // Вызов модального окна справочника

                            this.openLookup(config, this.addCallBack, this);

                        }, this);

                    },

                    // Обработчик события сохранения страницы редактирования.

                    onCardSaved: function() {

                        this.openContactLookup();

                    },

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

                    addRecord: function() {

                        var masterCardState = this.sandbox.publish("GetCardState", null, [this.sandbox.id]);

                        var isNewRecord = (masterCardState.state === configurationEnums.CardStateV2.ADD ||

                        masterCardState.state === configurationEnums.CardStateV2.COPY);

                        if (isNewRecord === true) {

                            var args = {

                                isSilent: true,

                                messageTags: [this.sandbox.id]

                            };

                            this.sandbox.publish("SaveRecord", args, [this.sandbox.id]);

                            return;

                        }

                        this.openContactLookup();

                    },

                    // Добавление выбранных продуктов.

                    addCallBack: function(args) {

                        // Экземпляр класса пакетного запроса BatchQuery.

                        var bq = this.Ext.create("Terrasoft.BatchQuery");

                        // Коллекция выбранных в справочнике документов.

                        this.selectedRows = args.selectedRows.getItems();

                        // Коллекция, передаваемая в запрос.

                        this.selectedItems = [];

                        // Копирование необходимых данных.

                        this.selectedRows.forEach(function(item) {

                            item.UsrContactId = item.value;

                            bq.add(this.getDocumentInsertQuery(item));

                            this.selectedItems.push(item.value);

                        }, this);

                        // Выполнение пакетного запроса, если он не пустой.

                        if (bq.queries.length) {

                            this.showBodyMask.call(this);

                            bq.execute(this.onContactInsert, this);

                        }

                    },

                    //Возвращает запрос на добавление текущего объекта.

                    getDocumentInsertQuery: function(item) {

                        var insert = Ext.create("Terrasoft.InsertQuery", {

                            rootSchemaName: this.entitySchemaName

                        });

                        insert.setParameterValue("UsrContact", item.UsrContactId, this.Terrasoft.DataValueType.GUID);

                        return insert;

                    },

                    // Метод, вызываемый при добавлении записей в реестр детали.

                    onContactInsert: function(response) {

                        this.hideBodyMask.call(this);

                        this.beforeLoadGridData();

                        var filterCollection = [];

                        response.queryResults.forEach(function(item) {

                            filterCollection.push(item.id);

                        });

                        var esq = Ext.create("Terrasoft.EntitySchemaQuery", {

                            rootSchemaName: this.entitySchemaName

                        });

                        this.initQueryColumns(esq);

                        esq.filters.add("recordId", Terrasoft.createColumnInFilterWithParameters("Id", filterCollection));

                        esq.on("createviewmodel", this.createViewModel, this);

                        esq.getEntityCollection(function(response) {

                            this.afterLoadGridData();

                            if (response.success) {

                                var responseCollection = response.collection;

                                this.prepareResponseCollection(responseCollection);

                                this.getGridData().loadAll(responseCollection);

                            }

                        }, this);

                    },

                    // Метод, вызываемый при удалении выбранных записей детали.

                    deleteRecords: function() {

                        var selectedRows = this.getSelectedItems();

                        if (selectedRows.length > 0) {

                            this.set("SelectedRows", selectedRows);

                            this.callParent(arguments);

                        }

                    },

                    // Скрыть пункт меню [Копировать].

                    getCopyRecordMenuItem: Terrasoft.emptyFn,

                     // Скрыть пункт меню [Изменить].

                    getEditRecordMenuItem: Terrasoft.emptyFn,

                    // Возвращает имя колонки по умолчанию для фильтра.

                    getFilterDefaultColumnName: function() {

                        return "UsrContact";

                    }

                },

                // Массив модификаций.

                diff: /**SCHEMA_DIFF*/[

                    {

                        // Тип операции — слияние.

                        "operation": "merge",

                        // Название элемента схемы, над которым производится действие.

                        "name": "DataGrid",

                        // Объект, свойства которого будут объединены со свойствами элемента схемы.

                        "values": {

                            "rowDataItemMarkerColumnName": "UsrContact"

                        }

                    },

                    {

                        // Тип операции — слияние.

                        "operation": "merge",

                        // Название элемента схемы, над которым производится действие.

                        "name": "AddRecordButton",

                        // Объект, свойства которого будут объединены со свойствами элемента схемы.

                        "values": {

                            "visible": {"bindTo": "getToolsVisible"}

                        }

                    }

                ]/**SCHEMA_DIFF*/

            };

        }

    );

  5. Код карточки контакта: define("ContactPageV2", [], function() {

        return {

            entitySchemaName: "Contact",

            attributes: {},

            modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,

            details: /**SCHEMA_DETAILS*/{

                "UsrCaseDetail": {

                    "schemaName": "UsrCaseTestDetail",

                    "entitySchemaName": "UsrCaseTest",

                    "filter": {

                        "detailColumn": "UsrContact",

                        "masterColumn": "Id"

                    }

                }

            }/**SCHEMA_DETAILS*/,

            businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,

            methods: {},

            dataModels: /**SCHEMA_DATA_MODELS*/{}/**SCHEMA_DATA_MODELS*/,

            diff: /**SCHEMA_DIFF*/[****]/**SCHEMA_DIFF*/};

Нравится

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

Ислам Ибрагимжанов,

У вас деталь (UsrCaseTest) привязана к карточке Контактов (Contact) по полю UsrContact.

Допустим, вы находитесь в карточке ИвановИван

Выбирая в вашем справочнике значения - вы в базу пишете в ту же колонку UsrContact значения, которые выбрали, допустим вы выбрали 2 значения ПетровПетр и СидоровСидр.

Итого у вас в табличке UsrCaseTest запишутся значения:

ПетровПетр и СидоровСидр

 

Как вы хотите чтобы они отобразились в вашей карточке ИвановИван? У вас на детали стоит фильтр - отображать из таблицы UsrCaseTest те записи, в поле UsrContact лежит Id текущей записи - ИвановИван. Добавленные же записи вы сможете увидеть в карточке ПетровПетр или СидоровСидр (в соответствии с фильтром).

 

Чтобы все работало верно - посмотрите еще раз пример на академии.

Вам нужно 2 поля. Первое - связь с карточкой - по нему у вас привязана деталь UsrContact. Второе - в которое должны складываться выбранные значения. Пусть будет UsrSelectedContact. Исправляете в коде методы которые я говорил - и должно работать

Судя по коду, вы забываете заполнять колонку связи с вашим объектом (основной карточкой). Обратите внимание на функцию getDocumentInsertQuery в примере. Там заполняются 2 поля:

UsrOrder //связь с карточкой
UsrDocument // документ (то что выбираем из справочника)

 

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

 

 

 

 

Fast traslate

 

Icon translate

 

 

 

Дмитрий Антохин,

Я их вырезал, потому что не смог понять зачем мне второй справочник. И после вашего ответа, так же мне не стало понятней, о какой связи идет речь? Можете пожалуйста более понятно описать, что я делаю не так или пропускаю.

Ислам Ибрагимжанов,

У вас деталь (UsrCaseTest) привязана к карточке Контактов (Contact) по полю UsrContact.

Допустим, вы находитесь в карточке ИвановИван

Выбирая в вашем справочнике значения - вы в базу пишете в ту же колонку UsrContact значения, которые выбрали, допустим вы выбрали 2 значения ПетровПетр и СидоровСидр.

Итого у вас в табличке UsrCaseTest запишутся значения:

ПетровПетр и СидоровСидр

 

Как вы хотите чтобы они отобразились в вашей карточке ИвановИван? У вас на детали стоит фильтр - отображать из таблицы UsrCaseTest те записи, в поле UsrContact лежит Id текущей записи - ИвановИван. Добавленные же записи вы сможете увидеть в карточке ПетровПетр или СидоровСидр (в соответствии с фильтром).

 

Чтобы все работало верно - посмотрите еще раз пример на академии.

Вам нужно 2 поля. Первое - связь с карточкой - по нему у вас привязана деталь UsrContact. Второе - в которое должны складываться выбранные значения. Пусть будет UsrSelectedContact. Исправляете в коде методы которые я говорил - и должно работать

Дмитрий Антохин,

Вот теперь я четко понял, что не так. Благодарю за уделенное время. Все сработало с первого раза.

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

 

Доброго времени суток коллеги, столкнулся с проблемой. Мне нужно запустить БП который ставит статус в Обращении -> "Категория" = "Статус из ServieDesk" если обращения было создано в Рабочем месте скажем Портал.  Уточняю свой вопрос. Сотрудники которые создают обращения внутри компании через Рабочие место "Портал", то "Категория" у этого обращения должно автоматом проставляться "Статус из ServieDesk". Для более наглядности приложил скрин тут , так как не мог добавить здесь. Буду благодарен за помощь. Спасибо

 



 

Нравится

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

Добрый день!

 

Ислам, если Вы создаете свое рабочее место, добавляете в нем разделы, тогда можно создать например сигнал на изменение именно этого объекта который создан у Вас для обращений. Если правильно понял, то нужен отличающий идентификатор для этих обращений, например дополнительное поле которое также можно фильтровать в элементе БП сигнал на создание такой записи. Если Вам это не помогло, попробуйте описать с чем именно трудность более детально.

Ярослав Савицкий,

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

Ислам Ибрагимжанов,

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

Sorotiuk Anna,

Спасибо

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

Доброго времени суток коллеги, при сохранении объекта получаю следующую ошибку: Ошибка сохранения: Имя "UsrProjectResourceElement" администрируемого по записям объекта "Элемент ресурсов проекта" превышает 22 символа.  Где я могу увеличить лимит символов? Спасибо. 

Нравится

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

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



Указанный Вами кейс воспроизводится на более ранних версиях приложения. Это вызвано ограничением на уровне ядра количества символов для создания объектов, названия схем (в некоторых случаях и колонок).



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



Вручную на старых версиях изменить этот лимит невозможно.

Евгений Воробьев,

У нас версия 7.13 Customer journey. Как быть в таких случаях?

Ислам Ибрагимжанов,

Ислам, Вам необходимо выполнить обновление решения до актуальной версии Creatio, на текущий момент - это 7.17.4. Это позволит не только решить проблему, про которую Вы написали, но и в целом получить большое кол-во новых возможностей, как в отраслевой банковской функциональности, так и в возможностях платформы. 



Скажите, пожалуйста, нужна ли какая-то помощь с нашей стороны в вопросах обновления системы?

Ivan Malafieiev, Банк уже обговаривает на счет обновления. Спасибо

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

Доброго времени суток уважаемые коллеги. Сегодня вопрос вне темы, но все же очень важен для меня, надеюсь на ваше понимания.

     Столкнутся с мыслю, что вот уже второй месяц сижу изучаю Creatio, но мне кажется, что нет толчка вперед, что стою на одном и том же месте или ещё хуже кружусь на одном месте. В начале пути я просил помощи указать путь у "Алла Савельева" спасибо ей за это. Она мне посоветовала ознакомиться с документацией пройти курсы, которые есть в Академии. Все бы хорошо, но так и ничего толкового не понял. Начал спрашивать у разных каналах в телеграме и по их совету изучаю Ext.js. Но и тут по - моему не поможет или мне кажется, что Creatio как бы переписала Ext.js(могу ошибаться). В общем я в тупике , прощу помощи указать, поделиться или предложить свою путь альтернативу в становление разработчиком Creatio(Я только занимаюсь front-end разработкой). Я работаю в компании пока все хорошо, если так и будет продолжатся через пол года, через год у меня будут спрашивать, что же я могу. Боюсь остаться без ответа и не оправдать их надежды. Буду рад вашей помощи. Спасибо

Нравится

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

С мертвой точки меня сдвинул практикум по разработке "РАЗРАБОТКА В CREATIO". Ну и "АДАПТАЦИЯ И НАСТРОЙКА CREATIO" тоже лишним не был, хотя он для аналитиков.

Офф-топик, но через два месяца уже надо ставить реальные задачи и по мере их выполнения изучать то, чего не хватает. Тогда и не будет ощущения, что стоите на одном месте. Да и через полгода уже будет, что показать

Pavel Litvinovich,

К сожалению, сейчас не имею средств для

приобретения данного практикума( Но принял на заметку, что нужно их проходить.

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

Я так и делаю, пару задач решаю, ну как решаю задаю тут вопрос и пытаюсь их вставить, что-то работает, но как по мне это мелочи за период в 60-70 дней.

Ислам Ибрагимжанов пишет:

Напишите мне в ЛС, сброшу вам кое-что

Ислам Ибрагимжанов,

 

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



- Пройти онлайн курсы по разработке

- Пройти Тестирование разработчика на сайте Академии https://academy.terrasoft.ru/self-assessment-tests?type=2

- работа с реальными проектами



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

Прусаков Алексей,

Спасибо, на счет серверной части действительно не подумал.

Очень хорошо помогает если посмотреть как реализовал логику сам Террасофт, потому разработка в файловой системе это обязательно для начала понимания. Поиск кода в уже реализованных моделях очень помогло мне понять как работает система изнутри, и почему сделало было именно так. Смотрите то что подходит с виду под вашу задачу в коробке, и старайтесь разобрать как это реализовали

И если что-то не понимаете - спрашиваете, тут всегда помогут с ответом

Александр Тыра,

Спасибо большое. Хороший совет будем изучать.

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

Добрый день коллеги, У меня при работе с серверным кодом в VS не работает подсказки при вводе кода еще

некоторые классы и методы не окрашиваются нужным цветом(2)

Подскажите пожалуйста, как исправить эту ситуацию. Спасибо за ранее.

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

Нравится

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

Какая версия системы? Как открыли данный файл - открыли его отдельно, или открыли решение Terrasoft.Configuration, а уже в решении этот файл?

Дмитрий А.,

Windows 10 Enterprise LTSB.

BPM'online 7.13.4.638

Выгрузил пакеты в ФС и открыл солющн Terrasoft.Configuration.sln.

Да, файл уже в решение.

ReSharper отключен

Возможно слишком старая версия Creatio

 

 

Дмитрий А.,

Раньше так не было. В настройках ничего не изменили. В работе в VS с Unity похожая проблема появляется и она решается на стороне самой Unity. Подозреваю, что на стороне BPM'online тоже есть такая настройка. Но не могу найти где

Rahimberdiyev Mirzohid Muhammadjon o'g'li,

Добрый день!

В системе Creatio нет настроек, которые влияют на окрашивание методов и всплывающие подсказки при написании кода в Visual Studio. Вам нужно искать причину в самой Visual Studio.

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

Доброго времени суток коллеги, никак не могу найти в Конфигурации код таких скриптов  и вставку соответственно таких скриптов на страницу. Пожалуйста поделитесь опытом.

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

Второй вопрос: Можно ли в dependencies задать значение чтобы она(функция) срабатывал только при выборе значения у этого поля. У меня она(функция) срабатывает даже если я удалю из поля значения. 

Третий вопрос: Как в Creatio проверить значение полей на пустоту? undefined?

Спасибо.

P.s может это очень элементарно, но я недавно тут надеюсь на ваше понимание.

Нравится

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

1) Это модули , пример в AccountPageV2 есть EnrichmentModule он прописан в modules и diff.

2) Можно указать функцию в onChange в опиисании атрибута. 

"Value": {

    "dataValueType": this.Terrasoft.DataValueType.MAPPING,

    "type": this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,

    "caption": resources.localizableStrings.ValueCaption,

    "onChange": "onMappingValueChanged"

}

Можно в dependecies указать название этого же поля

"BillingInfo": {

    name: "BillingInfo",

    dataValueType: Terrasoft.DataValueType.TEXT,

    dependencies: [

        {

            columns: ["BillingInfo"],

            methodName: onBillingInfoChange"

        }

    ]

}

3) Да можно сравинть с undefined. 

if (this.$Value === undefined)

Можно проверить на пустоту с помощью Ext.isEmpty

if (Ext.isEmpty(this.$Value))

1) Это модули , пример в AccountPageV2 есть EnrichmentModule он прописан в modules и diff.

2) Можно указать функцию в onChange в опиисании атрибута. 

"Value": {

    "dataValueType": this.Terrasoft.DataValueType.MAPPING,

    "type": this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,

    "caption": resources.localizableStrings.ValueCaption,

    "onChange": "onMappingValueChanged"

}

Можно в dependecies указать название этого же поля

"BillingInfo": {

    name: "BillingInfo",

    dataValueType: Terrasoft.DataValueType.TEXT,

    dependencies: [

        {

            columns: ["BillingInfo"],

            methodName: onBillingInfoChange"

        }

    ]

}

3) Да можно сравинть с undefined. 

if (this.$Value === undefined)

Можно проверить на пустоту с помощью Ext.isEmpty

if (Ext.isEmpty(this.$Value))

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

Если Вы открыли мастер раздела и видите её, можно переключиться на вкладку "Исходный код" и там увидеть элемент с этим названием. Если же там он не задаётся, а только меняется (merge), то сверху указано название схемы. Её можно открыть в разделе "конфигурация" и посмотреть её версии в разных пакетах, а также схемы, от которых она наследуется, чтобы выяснить, где именно описана реализация элемента ClientInProfile.

Или же, если есть доступ к SQL-серверу, просто написать запрос:

select *,(select name from sysschema where id = SysSchemaId) from sysschemacontent where content like '%ClientInProfile%'

Станет видно, где в клиентской логике это упоминается.

Коллеги благодарю стало на много понятней. 

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

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

Тут возник два вопроса. Как по мне его лучше сделать просто информационным сообщением нежели модальным окном.  Например через: showInformationDialog.

Вопрос можно ли это сделать так или разумней через модальное окно?

 

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

И после нужно мне поймать нажатия кнопки окей сделать другую логику. Пожалуйста подскажите. Спасибо

Нравится

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

Делайте showInformationDialog, в нем вторым параметром можно передать callback который сработает при нажатии OK или ESC.

https://academy.terrasoft.ru/api/jscoreapi/7.15.0/#!/api/Terrasoft.mode…

Делайте showInformationDialog, в нем вторым параметром можно передать callback который сработает при нажатии OK или ESC.

https://academy.terrasoft.ru/api/jscoreapi/7.15.0/#!/api/Terrasoft.mode…

                        this.showInformationDialog(message, function() {

                            //Ваш код

                        });

Доброе утро.

 

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

Полозюков Евгений Петрович,

Спасибо, сработало.

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

Есть ли у Креатио обнулятор?

Занимают физически место на носителе данные, которые стали не нужны.

Вот размер в мб, таблиц креатио

SysProcessElementData	571.20
SysActivityRight	1524.91
SysProcessElementLog	1021.26
Activity		2914.90
SysPrcPersistentStore	7601.97
TrcLogImportExcel	1074.70
SysPrcElHistoryLog	3771.61

Все устаревшие сущности старше 3 лет хочу выбросить, оставить факт их существования.

Есть ли какая-нибудь штука для этого?

 

Нравится

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

По остальным вопросам может помочь тема https://community.terrasoft.ua/questions/razrastanie-bazy





Старые Activity удалять вряд ли нужно - это всё же история работы с клиентом

Вы хотите сломать конфигурацию из-за 20Гб?

Думаю, что логи импорта из Excel можно очистить, не сломав конфигурацию :)

По остальным вопросам может помочь тема https://community.terrasoft.ua/questions/razrastanie-bazy





Старые Activity удалять вряд ли нужно - это всё же история работы с клиентом

По назначению и возможности безопасной очистки разных таблиц обратите внимание ещё на этот документ.

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

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

Нравится

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

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

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

Добрый день, Ислам!

 

Для реализации Вашей бизнес-задачи, Вам необходимо перейти в Права доступа на объекты, выбрать раздел Контакты и в Использовать доступ по операциям добавить пользователя Supervisor или Системный администратор (в зависимости от Ваших настроек системы), оставив ему право на все операции: Создание, Чтение, Редактирование и Удаление записей. Другим же пользователям/групам пользователей, который входят в определенные функциональный или организационные роли оставить только право на Создание записей. Также прошу обратить внимание на Приоритет разграничения прав.

Детальнее о настройке и управлении доступами в ситеме на сайте Академии: 

https://academy.terrasoft.ru/docs/user/ustanovka_i_administrirovanie/up…



С уважением,

Сидько Елена

Оператор

Группа компаний Terrasoft

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

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

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

Нравится

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

//в карточке

messages: {

    "Message1": {

        mode: this.Terrasoft.MessageMode.PTP,

        direction: this.Terrasoft.MessageDirectionType.SUBSCRIBE

    }

},

methods: {

    this.sandbox.subscribe("Message1", function(args) {

        console.log(args);

    },this, ["Message1"]);

}

//в детали

messages: {

    "Message1": {

        mode: this.Terrasoft.MessageMode.PTP,

        direction: this.Terrasoft.MessageDirectionType.PUBLISH

    }

},

methods: {

    this.sandbox.publish("Message1", args, ["Message1"]);

}

//в карточке

messages: {

    "Message1": {

        mode: this.Terrasoft.MessageMode.PTP,

        direction: this.Terrasoft.MessageDirectionType.SUBSCRIBE

    }

},

methods: {

    this.sandbox.subscribe("Message1", function(args) {

        console.log(args);

    },this, ["Message1"]);

}

//в детали

messages: {

    "Message1": {

        mode: this.Terrasoft.MessageMode.PTP,

        direction: this.Terrasoft.MessageDirectionType.PUBLISH

    }

},

methods: {

    this.sandbox.publish("Message1", args, ["Message1"]);

}

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