Доброго времени суток! Возник затык с казалось бы простой задачей.

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

Вопрос: возможно ли реализовать обновление страницы после завершения активности? Используя для этого только клиентскую часть?

Пробовала прикрутить методы this.reloadEntity(), но проблема в том, что не удается "поймать" момент завершения активности. Подскажите, пожалуйста, возможно ли в странице редактирования получить значение состояния активности?

Способ с ActivityEventListener не подходит. 

 

Нравится

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

Добрый день,

 

Я тут вижу два варианта:

 

1) На событии после сохранения активности в DCM

(доступно из расширеных настроек активности

) сделать логику отправки серверного сокет сообщения на клиент, а на клиенте на карточке оформить подписку (и уничтиожение) на определенное сообщение. По получению сообщения обновлять страницу редактирования.

 

2) При отработке метода save из ActivityMiniPage реализовать отправку sandbox сообщения в модуль нужной страницы редактирования и обновлять страницу по получению этого сообщения.

Oscar Dylan,

спасибо за ответ. Выбрала второй способ через сообщения. Реализовала отправку сообщения , но при попытке завершить активность нажатием на кнопку "сохранить" выпадает ошибка: message name_message is not define in MiniPageModule (ViewModule_MiniPageListener_MiniPage_ActivityMiniPage) module.

Не понимаю где ещё  нужно объявить это сообщение, кроме как в activityMiniPage и нужной страницы редактирования ?

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

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

Добрый день, 

Подскажите, пожалуйста, как можно запретить редактирование полей в Активности в разделе Connected to. Выглядит, что при помощи бизнес -правил невозможно это сделать.

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

 

Нравится

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

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

 

В мастере разделов нет пользовательской возможности добавлять новые поля, настраивать, перемещать или удалять существующие поля на детали Connected to/Связи (EntityConnections).



Изменения сделанные мастером детали на детали Connected To не применяются на клиент. Мастер делает изменения в модуль ContactRelationshipDetailPageV2, а деталь использует BaseRelationshipDetailPageV2

Добавить или изменить поле на детали [Связи] возможно лишь средствами разработки. Дело в том, что деталь "Связи" это специализированная группа полей. Эта деталь отличается от обычных деталей, так как реализована с помощью программного кода.



Касательно настройки, решение опубликовано здесь:

https://community.terrasoft.ua/questions/dobavit-svyazi (В п.3 заменить на более корректный скрипт).



Примерный порядок действий, для обходного решения удаления поля:

  1. Найти UId колонки добавленной в первом пункте, в метаданных справочника (скриншоты во вложении);
  2. Выполнить запрос:

    Select * from EntityConnection where ColumnUid='UId из метаданных'

    Проверяем, что на сайте одна такая запись;
  3. Делаем бекап;
  4. Удаляем эту запись:

    delete EntityConnection where ColumnUid='UId из метаданных'
  5. После этого, почистить кэш браузера. В результате поле удалится из детали "Связи."

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

https://community.terrasoft.ua/articles/kak-udalit-element-iz-detali-sv…

А в чём преимущества этих полей в реализации как детали? В итоге, чтобы управлять с помощью бизнес-правил доступностью этих полей, мы просто удалили данную деталь со страницы и добавили эти поля в новую группу полей "Связи"

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

Добрый день,

Подскажите, пожалуйста, где можно добавить новое поле на данную форму. Форма открывается, если в action dashboard нажать на кнопку "Complete" на активности.

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

Нравится

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

Ищите пример в ActivityMiniPage (UIv2).

Вам нужно будет кодом добавить элемент в родительский контейнер ResultsContainer и в ResultInfoContainer. Или вообще сделать свой контейнер (или или элемент), настроить "видимость" через bindTo на метод isEditableResultsVisible

 

Пример элемента:

{

                "operation": "insert",

                "parentName": "ResultsContainer",

                "propertyName": "items",

                "name": "ProcessResult",

.........

 

если это справочник с "выпадающим списком", то нужно повторять свою логику, как методах onPrepareProcessResultList и ProcessResultList.

 

или вот еще пример элемента  

  

 {

                "operation": "insert",

                "parentName": "MiniPage",

                "propertyName": "items",

                "name": "DetailedResult",

........

 

В принципе можно добавить элемент через мастер, а потом в коде прописать видимость. 

"visible": {  "bindTo": "isEditableResultsVisible" // или какой-то другой метод.

 

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

"wrapClass": ["container-mini-wrap"],
"controlWrapConfig": {
	"classes": {
		"wrapClassName": ["control-mini-wrap"]
	}
},

 

Ищите пример в ActivityMiniPage (UIv2).

Вам нужно будет кодом добавить элемент в родительский контейнер ResultsContainer и в ResultInfoContainer. Или вообще сделать свой контейнер (или или элемент), настроить "видимость" через bindTo на метод isEditableResultsVisible

 

Пример элемента:

{

                "operation": "insert",

                "parentName": "ResultsContainer",

                "propertyName": "items",

                "name": "ProcessResult",

.........

 

если это справочник с "выпадающим списком", то нужно повторять свою логику, как методах onPrepareProcessResultList и ProcessResultList.

 

или вот еще пример элемента  

  

 {

                "operation": "insert",

                "parentName": "MiniPage",

                "propertyName": "items",

                "name": "DetailedResult",

........

 

В принципе можно добавить элемент через мастер, а потом в коде прописать видимость. 

"visible": {  "bindTo": "isEditableResultsVisible" // или какой-то другой метод.

 

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

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

 

 

Нравится

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

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

 

необходимо решение для версии 7.16

Jana Sergejenko,

Долго и много наворачивать. При этом теряется возможность использовать элемент "Выполнить задачу". Потому из своего опыта скажу, что легче перейти на 7.18

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

Добрый день!

Нужно создать новую категорию Активности "Нормативный Срок"- создал в справочнике "Категории активностей"  выставил  "Тип активности"-"Задача"

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

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

Но не могу найти как и где наполнить результаты для созданной категории . 

Т.е если я создаю задачу задачу с категорией "Нормативный Срок" то внутри задачи справочник в поле "Результат пустой"

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

 

Прикрепленные файлы

Нравится

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

Tigran Gevorgyan, а посмотрите какие еще справочники можно вывести через добавить по слову "Результат активности"?

 

Я пока не могу развернуть демо-стенд, что посмотреть — Тормозит демка террасофт.

Попробуйте вывести справочник "Результат активности по категории" и добавить туда название ваших результатов под вашу новую категорию

Николай Ходаковский,

Посмотрел в справочнике 

"Результат активности по категории" такого справочника у меня нет . Есть "Результат активности по категориЯМ" и этот справочник отвечает за исход 

Tigran Gevorgyan, Да, это оно, у меня просто старая версия Creatio. В новой они переименовали раздел, видимо

Tigran Gevorgyan,

 Добавьте в этот справочник запись с названием, например, "Выполнено" и укажите вашу категорию "Нормативный Срок" — должно помочь ;)

Николай Ходаковский,

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

Tigran Gevorgyan,

А категория задачи записывается в этом справочнике 

Tigran Gevorgyan, а посмотрите какие еще справочники можно вывести через добавить по слову "Результат активности"?

 

Я пока не могу развернуть демо-стенд, что посмотреть — Тормозит демка террасофт.

Я правильно понял вопрос ?) 

Tigran Gevorgyan,

Не очень понял как через Добавить можно вывести справочники по слову . Включил фильтр по слову Результат .

Вверху нажмите кнопку "Добавить справочник" и введите в поиск "Результат" - что там выдает?

Николай Ходаковский,

Нет, пусто 

А если на английском Result то показывает те 2 справочника 

Tigran Gevorgyan,

Нашел Result by Activity , добавил и вот она радость ))) Спасибо за помощь )))!!!

У вас на скрине, обратите внимание, Результат активности по категорИИ :)

 

В общем, террасофт в своем духе, взял справочник, который называется "Результат активности" и переименовал его в "Результат активности по категориЯМ", а справочник "Результат активности по категорИИ" просто не вывел и в итоге путает людей. В каждом справочнике всегда можно посмотреть свойства и его реальное название. Удачи

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

Сейчас время на активность по умолчанию 30 минут, хотим сделать чтобы было 15. Подскажите как настроить, не нашли настроек

Нравится

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

Переопределили метод в ActivityPageV2, добавили настройку с кодом UsrDefaultActivityDuration. В результате можно задавать в настройке

 

setDefActivityValues: function() {
	var startDate = this.get("StartDate");
	var dueDate = this.get("DueDate");
	var millisecondsInMinute = this.Terrasoft.core.enums.DateRate.MILLISECONDS_IN_MINUTE;
	if (!dueDate || this.Ext.Date.getElapsed(startDate, dueDate) < 4 * millisecondsInMinute) {
		this.setDefaultDueDate(startDate);
    } else {
		this.setDifferStartDueDate(startDate, dueDate);
	}
	var currentViewName = this.sandbox.publish("GetActiveViewName");
	this.set("ShowInScheduler", (currentViewName === "SchedulerDataView"));
	this.clearSeconds(null, "StartDate");
	this.clearSeconds(null, "DueDate");
},
 
setDefaultDueDate: function(startDate) {
	this.Terrasoft.SysSettings.querySysSettingsItem("UsrDefaultActivityDuration", function(sysSettingValue) {
		if (sysSettingValue) {
			this.set("DueDate", this.Ext.Date.add(startDate, this.Ext.Date.MINUTE, sysSettingValue));
		} else {
			this.set("DueDate", this.Ext.Date.add(startDate, this.Ext.Date.MILLI,
				this.Terrasoft.TimeScale.THIRTY_MINUTES * this.Terrasoft.DateRate.MILLISECONDS_IN_MINUTE));
		}
				}, this);
			},









 

Владимир Соколов пишет:

Переопределили метод в ActivityPageV2, добавили настройку с кодом UsrDefaultActivityDuration. В результате можно задавать в настройке

 


 
setDefaultDueDate: function(startDate) {
	this.Terrasoft.SysSettings.querySysSettingsItem("UsrDefaultActivityDuration", function(sysSettingValue) {
		if (sysSettingValue) {
			this.set("DueDate", this.Ext.Date.add(startDate, this.Ext.Date.MINUTE, sysSettingValue));
		} else {
			this.set("DueDate", this.Ext.Date.add(startDate, this.Ext.Date.MILLI,
				this.Terrasoft.TimeScale.THIRTY_MINUTES * this.Terrasoft.DateRate.MILLISECONDS_IN_MINUTE));
		}
				}, this);
			},

 

а без кода можно системными настройками где-то это настроить?

Влад Короп,

насколько я понимаю, никак - это значение "зашито"

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

Влад Короп,

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

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

Добрый день,

При создании активности из процесса на форме активности не отображается поле статус. Если вручную создавать активность, то поле присутствует. Тип активности- task.

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

Нравится

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

Добрый день. Уточните версию приложения. Вы используете группу Действия пользователя, элемент Выполнить задачу (Perform task)? Какую категорию задачи выбираете? Пришлите, пожалуйста, скриншот панели настройки элемента.

Elena Sidko,

Добрый день,

версия 7.16.2.1600

Да, использую группу Действия пользователя, элемент Выполнить задачу - 

Категория- to do.

Жанна, добрый день.

В базовой версии приложения 7.16.2.1600 при создании активности через бизнес-процесса, состояние активности отображается. Рекомендуем проверить есть ли ошибки в консоли при открытии активности, вносились ли какие изменения в системе?

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

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

 

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

Добрый день коллеги, хотелось бы узнать возможно ли вывести раздел "Активности" на портал как раздел или хотя бы Деталь Активности в Обращении. В права на объект Активность добавил All portal users, в справочнике "Список объектов, доступных пользователям портала" объект есть.

Нравится

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

Добрый день, Евгений!



Большинство базовых разделов нельзя вынести на портал. Раздел "Активности" и другие процессы связанные с объектами данного раздела недоступны пользователям с портальными лицензиями. Для работы с данным разделом необходимо иметь полноценную лицензию нашего продукта.

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

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

Спасибо за ответ.

А детали (объекты, на базе которых не зарегистрированы разделы) не считаются в ограничениях?

Владимир Соколов, добрый день!



В зависимости от конфигурации портала возможности управления разделами различаются.

На клиентском портале можно добавить до 3 пользовательских разделов. На страницу раздела можно добавить объекты системы, например, детали, поля и т. д. Количество объектов зависит от конфигурации портала и регулируется условиями лицензии. Например, на портале самообслуживания можно добавить на страницу не больше 25 объектов, на пользовательском порталене больше 125.



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



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



С уважением,

Станислав

 

 

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

Добрый день, подскажите, может кто уже решал этот вопрос.

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

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

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

Место указал. Подскажите как это делается и почему не отражается. Добавил поле во всех 3-х видах мини-карточки - "Добавление" "Редактирование" и "Просмотр", но не помогло. Куда дальше смотреть не знаю.

Нравится

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

Александр, перезапуск, чистка Redis и кэша браузера не помогли?

Как именно добавили для разных видов?

Зверев Александр, Добавил через мастер раздела, в редактировании мини-карточки сначала. А затем нашёл вот такой код:  

Но и с его помощью получилось добиться лишь такого результата: 

 

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

 

Что Вы имеете в виду под «мини-версией этой мини-карточки», режим просмотра (третий в мастере)?

Если так, то зачем там вообще возможность редактирования?

У Вас проблема, что поля нет или что оно заблокировано?

 

Если открыть в мастере стандартную карточку, например, контакта, видно, что в режиме просмотра нет большинства добавленных в мастере полей, а есть разработанные кодом блоки, например, JobInfoContainer. В схеме ContactMiniPage в пакете UIv2 видно его логику:

{
	"operation": "insert",
	"name": "JobInfoContainer",
	"parentName": "MiniPage",
	"propertyName": "items",
	"values": {
		"id": "JobInfoContainer",
		"visible": {"bindTo": "isViewMode"},
		"selectors": {"wrapEl": "#JobInfoContainer"},
		"itemType": Terrasoft.ViewItemType.CONTAINER,
		"wrapClass": ["jobinfo-mini-wrap"],
		"items": [],
		"layout": {
			"column": 0,
			"row": 10,
			"colSpan": 24
		}
	}
},
{
	"operation": "insert",
	"parentName": "JobInfoContainer",
	"propertyName": "items",
	"name": "JobInViewMode",
	"values": {
		"labelConfig": {
			"visible": false
		},
		"bindTo": "JobViewValue",
		"isMiniPageModelItem": true
	}
},
{
	"operation": "insert",
	"parentName": "JobInfoContainer",
	"propertyName": "items",
	"name": "AccountInViewMode",
	"values": {
		"labelConfig": {
			"visible": false
		},
		"bindTo": "Account",
		"isMiniPageModelItem": true
	}
},
...
/**
 * Job value in view mode.
 * @type {String}
 */
"JobViewValue": {
	"dataValueType": Terrasoft.DataValueType.TEXT,
	"type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN
},

В них для чтения отображается либо текст обычного поля (Account), либо вычисляемого при открытии в onEntityInitialized виртуального поля JobViewValue.

 

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

 

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

 

Или нужно там иметь именно редактирование? Стандартные поля в этом виде карточки тоже все недоступны для изменений?

 

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

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

В разделе есть несколько типов страницы редактирования. Как установить условия на видимость кнопки добавления для одного из типов? В каком модуле определены данные кнопки? Заранее спасибо!

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

Нравится

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

В diff схемы реестра раздела добавляем 

{

            "operation": "merge",

            "name": "SeparateModeAddRecordButton",

            "parentName": "SeparateModeActionButtonsLeftContainer",

            "propertyName": "items",

            "values": {

                "itemType": Terrasoft.ViewItemType.BUTTON,

                "style": Terrasoft.controls.ButtonEnums.style.GREEN,

                "caption": {"bindTo": "AddRecordButtonCaption"},

                "click": false,

                "visible": {"bindTo": "IsAddRecordButtonVisible"},

                "classes": {

                    "textClass": ["actions-button-margin-right"],

                    "wrapperClass": ["actions-button-margin-right"]

                },

                "controlConfig": {

                    "menu": {

                        "items": {

                            "bindTo": "EditPages",

                            "bindConfig": {

                                "converter": function(editPages) {

                                    if (editPages.getCount() === 0) {

                                        return null;

                                    }

                                    var operationHash = {

                                        "38d26ca1-ab6a-474c-950d-f9ac9b630967": "CanAbilityToAdd1", //здесь guid это id справочника по которому определяется страница редактирования

                                        "2495b17d-2465-41cb-b625-ac36d9aef931": "CanAbilityToAdd2"

                                    };

                                    

                                    var allowedPages = [];

                                    

                                    if (this.get("CanAbilityToAdd1")) {

                                        allowedPages.push("CanAbilityToAdd1");

                                    }

                                    

                                    if (this.get("CanAbilityToAdd2")) {

                                        allowedPages.push("CanAbilityToAdd2");

                                    }

                                    for (var key in operationHash) {

                                        var hashItem = departmentToOperationHash[key];

                                        if (allowedPages.indexOf(hashItem) === -1) {

                                            editPages.collection.remove(editPages.collection.getByKey(key));

                                        }

                                    }

                                    return editPages;

                                }

                            }

                        }

                    }

                }

            }

        }

}

 

В init добавляем к примеру проверку на доступ по операции, либо другую функциональность

initCanAbilityToAdd1: function() {

                RightUtilities.checkCanExecuteOperation({

                    operation: "CanAbilityToAdd1"

                }, function(result) {

                    this.set("CanAbilityToAdd1", result);

                }, this);

            },

Добрый вечер.

Кнопки для добавления разных типов записей генерируются автоматически в зависимости от информации в таблице SysModuleEdit и поля TypeColumnValue в этой таблице.

Названия пунктов меню для разных страниц редактирования берутся из поля ActionKindCaption.

Более подробную информацию посмотрите в этом посте.

Пользовательскими настройками (без внесения дополнительных изменений в программный код) настроить видимость пункта меню в кнопке [Добавить] этого сделать не получится.

Базовая логика добавления пунктов меню для кнопки [Добавить] раздела реализована в схеме 'BaseDataView' пакета NUI.

Для реализации Вашей задачи Вы можете попробовать внести изменения в методы, которые отвечают за добавление пунктов меню в кнопку [Добавить] в Вашем разделе.

Надежда, ещё есть радикальный пользовательский способ: включить администрирование по записям для объекта справочника типов этого раздела и убрать у ненужного типа права на чтение для всех (кроме администраторов). Так нельзя будет выбрать этот тип при создании записи в разделе. Но нужно убедиться, корректно ли в этом случае будут видимы существующие записи с этим типом в разделе.

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

Не уверенна, что разграничение прав доступа, как-то повлияет на видимость пункта меню кнопки [Добавить] для этого типа.

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

В diff схемы реестра раздела добавляем 

{

            "operation": "merge",

            "name": "SeparateModeAddRecordButton",

            "parentName": "SeparateModeActionButtonsLeftContainer",

            "propertyName": "items",

            "values": {

                "itemType": Terrasoft.ViewItemType.BUTTON,

                "style": Terrasoft.controls.ButtonEnums.style.GREEN,

                "caption": {"bindTo": "AddRecordButtonCaption"},

                "click": false,

                "visible": {"bindTo": "IsAddRecordButtonVisible"},

                "classes": {

                    "textClass": ["actions-button-margin-right"],

                    "wrapperClass": ["actions-button-margin-right"]

                },

                "controlConfig": {

                    "menu": {

                        "items": {

                            "bindTo": "EditPages",

                            "bindConfig": {

                                "converter": function(editPages) {

                                    if (editPages.getCount() === 0) {

                                        return null;

                                    }

                                    var operationHash = {

                                        "38d26ca1-ab6a-474c-950d-f9ac9b630967": "CanAbilityToAdd1", //здесь guid это id справочника по которому определяется страница редактирования

                                        "2495b17d-2465-41cb-b625-ac36d9aef931": "CanAbilityToAdd2"

                                    };

                                    

                                    var allowedPages = [];

                                    

                                    if (this.get("CanAbilityToAdd1")) {

                                        allowedPages.push("CanAbilityToAdd1");

                                    }

                                    

                                    if (this.get("CanAbilityToAdd2")) {

                                        allowedPages.push("CanAbilityToAdd2");

                                    }

                                    for (var key in operationHash) {

                                        var hashItem = departmentToOperationHash[key];

                                        if (allowedPages.indexOf(hashItem) === -1) {

                                            editPages.collection.remove(editPages.collection.getByKey(key));

                                        }

                                    }

                                    return editPages;

                                }

                            }

                        }

                    }

                }

            }

        }

}

 

В init добавляем к примеру проверку на доступ по операции, либо другую функциональность

initCanAbilityToAdd1: function() {

                RightUtilities.checkCanExecuteOperation({

                    operation: "CanAbilityToAdd1"

                }, function(result) {

                    this.set("CanAbilityToAdd1", result);

                }, this);

            },

Да, Алла права, похоже, права на запись в справочнике типов не влияют, ведь выпадающий список формируется по объекту «Страница редактирования». А он общий для всех разделов. В таком случае лучше воспользоваться доработкой по предложению Евгения.

 

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

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

 пытаюсь сделать что-то подобное, все проверила 10 раз, но отладчик выдает:

Uncaught (in promise) TypeError: RightUtilities.checkCanExecuteOperation is not a function

А Вы добавили в начале в квадратных скобках и параметрах ссылку на RightUtilities? Посмотреть, как это сделано, можно в других схемах, где её используют:

define("SysOperationAuditSectionV2", ["BaseFiltersGenerateModule", "SysOperationAudit", "SysOperationAuditArch",
	"RightUtilities"],
function(BaseFiltersGenerateModule, SysOperationAudit, SysOperationAuditArch, RightUtilities) {
	return {

 

Зверев Александр, да, была проблема с последовательностью схем и параметров, передаваемых в схему)

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

 

Спасибо, что подсказали на тему замещения BaseDataView. Натолкнули на верный путь!

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

define("ActivitySectionV2", ["ConfigurationConstants","RightUtilities","ProcessModuleUtilities","BaseDataView"],
function(ConfigurationConstants,RightUtilities,ProcessModuleUtilities) {
	return {
		entitySchemaName: "Activity",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		attributes: 
		{ 
			"UsrCanManageItTask": {
				dataValueType: this.Terrasoft.DataValueType.BOOLEAN,
				type: this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
				value: false
			}
		},
		diff: /**SCHEMA_DIFF*/[
 
			]/**SCHEMA_DIFF*/,
		methods: {
			init: function()
			{
					this.getUserSettingsOperationRight();
					window.console.log("Инициализация");
					this.callParent(arguments);
					window.console.log("Права");
 
			},
 
			initEditPages: function() {
				window.console.log("Определение кнопок начало");
 
				var enabledEditPages = new this.Terrasoft.Collection();
 
					this.callParent(arguments);
					var editPages = this.get("EditPages");
 
					window.console.log("Получение страниц");
					var flag = this.get("UsrCanManageItTask");
					this.Terrasoft.each(editPages.getItems(), function(item) {
						window.console.log("Проверка типа");
						window.console.log(item.get("Id"));
						//window.console.log(ConfigurationConstants.Activity.Type.Email);ConfigurationConstants.Activity.Type.Call
						if (item.get("Id") !== "e2831dec-cfc0-df11-b00f-001d60e938c6" &&
							item.get("Id") !== "e1831dec-cfc0-df11-b00f-001d60e938c6") {
 
							if (item.get("Id") !== "f5921924-3e81-4a5f-ae4c-5a6f1b6e7661")
							{
								enabledEditPages.add(item);
								//window.console.log("ок");
							}
							else { 
								if (flag)
								{
										enabledEditPages.add(item);
										//window.console.log("ок");
								}
							}
						}
					});
					window.console.log("Проверка типа конец");
					this.set("EnabledEditPages", enabledEditPages);
 
					window.console.log("Определение кнопок конец");
			},
 
			getFilters: function() {
						window.console.log("Добавление фильтра");
						var filters = this.callParent(arguments);
						if (!this.get("UsrCanManageItTask"))
						{
							filters.add("NotItTask", this.Terrasoft.createColumnFilterWithParameter(
							this.Terrasoft.ComparisonType.NOT_EQUAL, "Type", "f5921924-3e81-4a5f-ae4c-5a6f1b6e7661"
							));
							window.console.log("Добавление фильтра");
						}
						return filters;
			},
 
			getUserSettingsOperationRight: function() {
				//debugger;
				var operationsToRequest = ["UsrCanManageItTask"];
				//operationsToRequest.push("UsrCanManageItTask");
				window.console.log("Права");
 
				RightUtilities.checkCanExecuteOperations(operationsToRequest, function(result) {
					if (result) {
						this.set("UsrCanManageItTask", result.UsrCanManageItTask);
						window.console.log("Права на ит-задачи: "+result.UsrCanManageItTask);
					}
				}, this);
			}
		}
 
	};
});

 

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