Собираюсь использовать службу DataService с клиентской части, так как совсем не разбираюсь в С#. Но в документации для чтения и добавления примеры для JS есть, а для удаления и обновления записей -
нет. Прошу помощи: буду очень признателен за пример удаления и обновления записи через DataService на из клиентской части)

Нравится

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

Для обновления ищите по конфигурации слова "Terrasoft.UpdateQuery"
примеров множество, вот из OpportunityManagementEndOfStagePreconfiguredPage:

var updateQuery = Ext.create("Terrasoft.UpdateQuery", {
	rootSchemaName: "Activity"
});
updateQuery.filters.addItem(this.Terrasoft.createColumnFilterWithParameter(
		Terrasoft.ComparisonType.EQUAL, "Id", activityId));
updateQuery.setParameterValue("Status",
		ConfigurationConstants.Activity.Status.Cancel,
		this.Terrasoft.DataValueType.LOOKUP);
updateQuery.execute(function() {
	this.loadActivities();
}, this);

Удаление по словам "Terrasoft.DeleteQuery", примеров так же очень много, вот из DocumentRelationshipDetailV2:

var deleteQuery = this.Ext.create("Terrasoft.DeleteQuery", {
	rootSchemaName: "DocumentRelationship"
});
var masterRecordId = this.get("MasterRecordId");
var filters = this.getDeleteRelationFilters(masterRecordId, selectedRows);
deleteQuery.filters.add("DocumentsFilter", filters);
deleteQuery.execute(function() {
	this.hideBodyMask();
	this.deselectRows();
	this.reloadGridData();
}, this);

"Максим Шевченко" написал:

Для обновления ищите по конфигурации слова "Terrasoft.UpdateQuery"

примеров множество, вот из OpportunityManagementEndOfStagePreconfiguredPage:

var updateQuery = Ext.create("Terrasoft.UpdateQuery", {

        rootSchemaName: "Activity"

});

updateQuery.filters.addItem(this.Terrasoft.createColumnFilterWithParameter(

                Terrasoft.ComparisonType.EQUAL, "Id", activityId));

updateQuery.setParameterValue("Status",

                ConfigurationConstants.Activity.Status.Cancel,

                this.Terrasoft.DataValueType.LOOKUP);

updateQuery.execute(function() {

        this.loadActivities();

}, this);

Удаление по словам "Terrasoft.DeleteQuery", примеров так же очень много, вот из DocumentRelationshipDetailV2:

var deleteQuery = this.Ext.create("Terrasoft.DeleteQuery", {

        rootSchemaName: "DocumentRelationship"

});

var masterRecordId = this.get("MasterRecordId");

var filters = this.getDeleteRelationFilters(masterRecordId, selectedRows);

deleteQuery.filters.add("DocumentsFilter", filters);

deleteQuery.execute(function() {

        this.hideBodyMask();

        this.deselectRows();

        this.reloadGridData();

}, this);


Большое спасибо!

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

Пытаюсь установить бизнес-процесс на регулярное исполнение при помощи API описанного на сайте академии вот в этой статье

// Задание интервала запуска процесса (в минутах).
int minutleyInterval = 2;

// Добавление задания по запуску процесса в планировщик.
AppScheduler.ScheduleMinutelyProcessJob("TestJob", "TestGroup", "TestProcess",
    UserConnection.Workspace.Name, UserConnection.CurrentUser.Name, minutleyInterval);

return true;

В БД в таблицах QRTZ_JOB_DETAILS и QRTZ_TRIGGERS
появляются соответствующие записи.
Но в указанном периоде бизнес-процесс не вызывается на исполнение.
Подскажите "куда копать" в чем может быть проблема ?

PS: Пробовали так же явное использование CronTriggerImpl и SimpleTriggerImpl которые аналогично - всё регистрируют но задания не выполняются.

Нравится

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

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

Нужно проверить Identity/Удостоверение – расширенные настройки Application pool’а в IIS.
Если указаны некорректные данные – планировщик не будет работать корректно.
Для проверки можно создать процесс с 1 элементом [Таймер] (2 сек). Запустить процесс. Если через 2 секунды экземпляр процесса не завершится – нужно смотреть настройки в IIS.

Если по прежнему будут возникать трудности напишите в поддержку.

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

Здравствуйте уважаемое сообщество!
Возникла необходимость открывать для пользователя InputBox в котором отображались бы поля типа "Дата и время". Но при попытке реализации, клиентский модуль падает в ошибку.

Попытка реализации:

var controls = {
                        title: {
                            dataValueType: Terrasoft.DataValueType.TEXT,
                            caption: resources.localizableStrings.SxActivityTitleCaption
                        },
                        start: {
                            dataValueType: Terrasoft.DataValueType.DATE_TIME,
                            caption: resources.localizableStrings.SxActivityStartCaption
                        },
                        due: {
                            dataValueType: Terrasoft.DataValueType.DATE_TIME,
                            caption: resources.localizableStrings.SxActivityDueCaption
                        }
                    };
                    Terrasoft.utils.inputBox(
                        resources.localizableStrings.SxUpSaleBoxCaption,
                        this.runUpSaleProcess,
                        ["ok", "cancel"],
                        this,
                        controls,
                        { defaultButton: 0 }
                    );

Ошибка:
Ошибка

Подскажите чего не хватает и как это добавить? Или как можно реализовать задачу?

Нравится

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

Добрый день.

Судя по всему, Вы не указали пространство имен при создании контрола. Коробочные обьявления контролов:

Ext.define("Terrasoft.controls.HtmlEdit", {
extend: "Terrasoft.Container",
alternateClassName: "Terrasoft.HtmlEdit",

В метод должна прийти строка "Terrasoft.controls." или же "Terrasoft".

"Мотков Илья" написал:

Добрый день.

Судя по всему, Вы не указали пространство имен при создании контрола. Коробочные обьявления контролов:

Ext.define("Terrasoft.controls.HtmlEdit", {

extend: "Terrasoft.Container",

alternateClassName: "Terrasoft.HtmlEdit",

В метод должна прийти строка "Terrasoft.controls." или же "Terrasoft".

Прошу прощения не понял, где что указать требуется. Я ведь создаю контролы не нативным Ext. Я использую "Terrasoft.utils.inputBox", куда пятым параметрам передаю объект с описанием контролов.

И вот такой контрол работает. DATE

start: {
          dataValueType: Terrasoft.DataValueType.DATE,
          caption: resources.localizableStrings.SxActivityStartCaption
}

А вот так уже нет. DATE_TIME

start: {
          dataValueType: Terrasoft.DataValueType.DATE_TIME,
          caption: resources.localizableStrings.SxActivityStartCaption
}
Показать все комментарии

Коллеги, добрый день.

Неожиданно появилась ошибка "Ошибка авторизации" при попытке зайти под любым пользователем в систему. Под Supervisor также.

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

С уважением,
Дмитрий

Нравится

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

Добрый день,

Просьба указать название сайта.

С уважением,
Наталия

Добрый день!

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

Рекомендуем Вам внести его в данную орг.роль и актуализировать роли.
Вы можете найти дополнительную информацию по работе с пользователями здесь - https://academy.terrasoft.ru/documents/sales-enterprise/7-10/razdel-upr…

В случае, если Вам понадобится дополнительная помощь - рекомендуем обратиться в службу технической поддержки по адресу support@terrasoft.ru.

Спасибо!

Добрый день.
Попробуйте очистить сессии не завершенные.

use DBNAME
delete from SysUserSession Where SessionEndDate is null

Добрый день.

Очистите сессии незавершенные.

use DBNAME
delete from SysUserSession Where SessionEndDate is null

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

Добрый день!

Подскажите,возможно кто-то сталкивался с аналогичной проблемой, как можно решить следующую задачу:

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

Возможно ли что-то с этим сделать?

Нравится

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

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

Элемент "Открыть страницу редактирования" создает техническую активность, которая открывает нужную страницу. Однако для страницы раздела "Активности" такая запись не создается. Соответственно, при завершении технической задачи (например, сохранением), система идет по процессу далее и в результате завершает открываемую активность.

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

Спасибо за разъяснение!

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

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

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

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

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

Нравится

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

Здравствуйте, элемент "Выполнить задачу" после себя предоставляет все свои колонки включая Id, следовательно по этому Id можно данную задачу видоизменять после создания, см. скр:

"Максим Шевченко" написал:

Здравствуйте, элемент "Выполнить задачу" после себя предоставляет все свои колонки включая Id, следовательно по этому Id можно данную задачу видоизменять после создания, см. скр:


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

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


Либо если нужных колонок нет в списке, то можете вообще создать свою версию элемента "Выполнить задачу" расширив его нужными колонками, и дописав их заполнение в методе "CreateActivity". Либо если бизнес логика позволяет, то заполнить их по какому-то условию в событийном бп перед сохранением объекта "Активность".

А скрипт о котором говорится вначале, все равно работает после сохранения и аналогичен тому что я предложил в своем первом комментарии.

"Максим Шевченко" написал:А скрипт о котором говорится вначале, все равно работает после сохранения и аналогичен тому что я предложил в своем первом комментарии.

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

Кисловский Михаил Андреевич,

Доброго дня. Подскажите, получилось ли решить Вашу задачу?

У меня такая же, и не могу найти вариантов, если действительно код в элементе не видит параметров процесса..

 

Как вариант, можно создавать запись в таблице активностей со всеми значениями нужных полей в коде. А потом открывать пользователю её карточку при помощи элемента БП «Открыть страницу». Или даже не создавать, а перед открытием наполнить коллекцию defValues, сохранить в данных сессии и передать в элемент открытия страницы ссылку. См. логику скрипта в стандартных БП «Создать активность для контакта», «Создать активность для контрагента» или «Создать активность для документа».

Мамлютов Виктор Александрович, разобрались давно.

Пример того как можно делать Update через данную вкладку:

 

activity.SetColumnValue("IsCheckOfTerms", true); //название параметра в объекте активности, потом значение которое необходимо установить

activity.Save();

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

Добрый день
Возникла потребность связать статью БЗ с определенным сервисом. Т.е.: при создании Обращения с таким-то Сервисом нужно, чтобы к этому Обращению подцеплялась определенная статья БЗ. Подскажите, пожалуйста, каким образом это возможно сделать.

Нравится

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

Вы можете реализовать справочник, в котором будет хранится информация, какому сервису, какая статья базы знаний соответствует.
А в самой карточке обращения нужно будет реализовать аттрибут, в котором определить зависимость колонки [Статья БЗ] от колонки [Сервис] и указать метод, который будет обрабатывать изменение колонки [Сервис] и устанавливать нужное значение в колонку [Статья БЗ].
В качестве примера посмотрите статью на Академии https://academy.terrasoft.ru/documents/technic-sdk/7-10/atributy-svoyst…

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

Добрый день

В 7-ой версии:
подскажите, пожалуйста, как сделать заполнение полей в активности с типом Задача/Звонок по умолчанию:
1) При изменении состояния активности с "Не начата" на "В работе" : поле Начало заполнялось текущими датой/временем и это поле становилось не редактируемым.
2) При создании Активности с типом Задача/Звонок : поле Напоминание Ответственному заполнялось текущими датой/временем и это поле становилось не редактируемым.

Заранее спасибо

Нравится

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

Татьяна, здравствуйте.

Заполнения полей значениями по умолчанию планируется в рамках развития функционала бизнес-правил, предварительно - в 7.11. В данный момент можно воспользоваться обходным решением:

1) Вам необходимо переопределить метод onStatusChanged у ActivityPageV2. Построить update:
https://academy.terrasoft.ru/documents/technic-sdk/7-10/postroenie-zapr…
запрос в базу данных, и установить поле StartDate равное текущей дате и времени, отфильтровав по Id активности. Получить Id записи можно с помощью this.get("Id"). Сделать поле нередактируемым можно с помощью бизнес-правил:
https://academy.terrasoft.ru/documents/sales-enterprise/7-10/nastroyka-… - например, сделать поле StartDate редактируемым, только если состояние "Не начата". Возможнее, в Вашем случае также подойдет вариант с полным блокированием поля на редактирование(для этого необходимо построить заведомо ложное условие, например, поле редактируемо если 0=1).

2) Этот кейс проще, достаточно заместить объект Activity в конфигурации, и указать полю RemindToAuthorDate значение по умолчанию Системная переменная-Текущее значение даты и времени(пример есть в том же объекте - поле StartDate). Блокирование поля с помощью бизнес-правил аналогично пункту 1.

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

Добрый день
В карточке Активности есть Деталь:Связи объекта системы. Подскажите, пожалуйста, где настраиваются эти связи? Поскольку Активность привязана к конкретному Обращению, то в Активности нужно отобразить Контакт, Контрагент и КЕ из карточки Обращения.

Нравится

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

Деталь связи по сути отображает лукапные колонки самой активности, к примеру если в активности на детали связи вы видите "Контакт" это значит что лукапное поле "Контакт" заполнено в самом объекте "Активность".

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

Сделать это вы можете к примеру бизнес процессом.
https://academy.terrasoft.ru/documents/technic-bpms/7-10/sozdanie-bizne…

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

Всем привет, подскажите пожалуйста как поменять текст в label с помощью кода, например при нажатии кнопки

Нравится

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

И ещё вопрос можно ли добавить целочисленное поле не связанное с колонкой в БД на страницу?

Добрый день.

Самым простым способом будет в diff, в свойстве values элемента добавить labelConfig. Пример:

labelConfig: {
	caption: {
		bindTo: "LabelCaption"
	}
}

Также необходимо создать виртуальный атрибут в attributes:

"LabelCaption": {
	dataValueType: this.Terrasoft.DataValueType.TEXT,
	type: this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
	value: "Default caption"
},

Значение атрибута уже менять через метод this.set.

Целочисленное поле аналогично можно завязать на виртуальный атрибут через свойство bindTo. Значение type атрибута должно быть Terrasoft.DataValueType.INTEGER.

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