Всем добрый день!

Возник такой вопрос:

Существуют в системе Directum Типовые маршруты где необходимо работать с документами, то есть есть возможность прямо на серверном уровне открывать документ Word и Excel и его редактировать, затем после редактирования  все правки сохраняются в тех же файлах. А есть ли подобный функционал в Creatio или плагин.

Нравится

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

Анатолий, интеграции с Directum в маркете нет, но есть ряд других дополнений для работы с файлами в браузере в самой системе или коннекторов со сторонними системами документооборота. Например:

  • File X (Расширенная работа с файлами: просмотр, редактирование и версионность);
  • File core (Расширенные возможности работы с файлами через интеграцию с Google Suite. Создание / редактирование / просмотр файлов в интерфейсе Creatio);
  • Sharepoint connector (Хранение и совместная работа с файлами с помощью SharePoint);
  • Files extended (Предпросмотр, совместное онлайн-редактирование и версионность файлов);
  • Docs (Система управления корпоративной информацией на платформе Creatio).

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

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

При установке приложения Data binding tool for Creatio на 7.17.1 выходит ошибка:

2021-01-12 16:19:07,505 При компиляции конфигурационной библиотеки возникли ошибки и (или) предупреждения
2021-01-12 16:19:07,545 Autogenerated\Src\GlbDataBindingHelper.GlbDataBinding.cs(323,47) ошибка CS0246: The type or namespace name 'EntityDataSource' could not be found (are you missing a using directive or an assembly reference?)

 

Нравится

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

Ещё и при его использовании в 7.17 появляются ошибки, которые в итоге открывают старые формы привязки данных 

Алексей, Владимир,

 

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

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

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

Нравится

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

Добрый день! что касается добавления кнопки к полю, то подобное описано в данной статье. Что касается осуществление звонка, то Вам нужно подключить миксин CommunicationOptionsMixin в своем модуле откуда будете осуществлять звонок и привязать на кнопку метод обработчик, в результате выполнения которого будет вызываться один из методов миксина: callContact(number, contactId) или же callAccount: function(number, accountId)

Нигрескул Алексей,

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

Александр, эта функция в CommunicationOptionsMixin в конечном счёте посылает сообщение через «песочницу»:

this.sandbox.publish("CallCustomer", {
	number: number,
	customerId: customerId,
	entitySchemaName: entitySchemaName,
	callRelationFields: relationFields
});

А обработчик — в CtiPanelModelUtilities:

/**
 * Handler of call to the subscriber event.
 * @param {Object} numberInfo Call parameters information.
 * @param {String} numberInfo.number Subscribers phone number.
 */
onCallCustomer: function(numberInfo) {
	if (!this.get("IsConnected")) {
		this.sandbox.publish("SelectCommunicationPanelItem", {selectedItem: "CtiPanel"});
		this.logInfo(this.getResourceString("NotConnectedMessage"));
		return;
	}
	var phoneNumber = numberInfo.number;
	if (numberInfo.customerId) {
		this.set("AdvisedIdentifiedSubscriberInfo", numberInfo);
	}
	this.callByNumber(phoneNumber);
},

То есть параметр «customerId» не является обязательным и можно попробовать вызвать с одним лишь номером. А о добавлении связей, нужно смотреть, в каком формате при нормальном звонке передаётся callRelationFields и заполнить аналогичным.

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

CustomerId не обязательный, так как cti все равно определяет по номеру контакт , но если надо привязать ещё ссылку на запись раздела (в деталь связи) то обязательно как оказалось. Другими словами - что бы к звону привязать запись какого-то раздела, нужно что бы в системе обязательно существовал контакт которому звоните, так как если контакт не существует то и привязать к звонку нельзя не запись контакта не запись раздела из которого звоните. Ограничение зачем такое сделано не знаю, так как у меня рассмотрение анонимных обращений, и контакта нет, но звонки делают и привязать обращение к звонку надо, а нельзя

Если штатными API звонков не получится, можно вычислить Id нового звонка и создать записи или заполнить поля связей как обычные данные, заполнив поля по аналогии. Более подробно увидеть, что создаётся, можно, отловив уходящие к серверам HTTP или SQL-запросы.

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

Добрый день!

Помогите разобраться.

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

В итоге уведомления уходят с основного ящика контакту обращения и системному почтовому ящику 2.

Поддержка ничего не может ответить внятного :(

В поле "кому" указываю емаил контакта в бизнес процессе, отправитель = системная настройка. Отправку делаю так:

var activityId = Get<Guid>("activityId");//AddActivityDataUserTask.RecordId;
var emailClientFactory = ClassFactory.Get<EmailClientFactory>(new ConstructorArgument("userConnection", UserConnection));
var activityEmailSender = new ActivityEmailSender(emailClientFactory, UserConnection);
activityEmailSender.Send(activityId);
return true;

 

Нравится

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

Добрый день.

В каком состоянии у вас настройка "AutoNotifyOnlyContact"? попробуйте поставить в True, после перезапустить приложение, и почистить редис. т.к. настройка кэшируется.

Добрый день.

В каком состоянии у вас настройка "AutoNotifyOnlyContact"? попробуйте поставить в True, после перезапустить приложение, и почистить редис. т.к. настройка кэшируется.

спасибо большое! судя по статье на академии должно помочь. попробую и напишу по результату.

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

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

Установка закончилась ошибкой. 

Откатиться тоже не удалось - ошибка. 

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

42703: column "labJiraTask" of relation "Case" does not exist (на скриншоте). 

 

Что делать, как быть?

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

Нравится

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

Сергей, добрый день!

 

уточните, пожалуйста, продукт и версию для воспроизведения ошибки.

 

Выполните полную компиляцию приложения и сообщите по результатам, осталась или нет ошибка.

CRM bundle

7.17.0.2147
Компиляцию и генерацию исходного кода (в обратном порядке) выполнял уже несколько раз. 

Сергей, добрый день!

 

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

 

Ошибка при удалении пакета будет исправлена в версии 7.17.1. Для исправления в текущей версии необходимо сгенерировать исходных код для всех схем и скомпилировать все приложение.

Генерировал исходный код для всех схем. 

Пришлось залезть в пакеты и почистить вручную всё, что касалось приложения. 

Устанавливать повторно не рискнул.

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

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

Вопросы:

1. Допустима ли работа кластера серверов приложений при схеме: 1 и более серверов CRM, 1 и более серверов клиентского Портала, 1 сервер Портала с отключенными вебсокетами и СУБД?

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

 

 

Нравится

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

Во-первых, не «пользовательские бизнес-процессы», а действия пользователя в бизнес-процессах: открытие ему разных страниц.

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

 

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

 

Более подробно об этой технологии и её настройке есть в статье.

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

 

Ясно. Будем тестировать работу Портала с отключенной поддержкой веб-сокетов.

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

Здравствуйте! Возник такой вопрос: Как добавить отображение ещё одного поля для справочника. Допустим, к примеру, нужно отобразить Id напротив каждого значения Name, ну или любую другую колонку. Можно ли это сделать прям при выборе в справочнике? 

Версия мобильного приложения:7.16.5 основного:7.14

 

Нравится

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

Есть Terrasoft.sdk.LookupGridPage. Работает по аналогии с sdk реестра.

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

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

Есть Terrasoft.sdk.LookupGridPage. Работает по аналогии с sdk реестра.

Николай Кузьмин пишет:

Есть Terrasoft.sdk.LookupGridPage. Работает по аналогии с sdk реестра.

 

 Благодарю за подсказку. Помогло.

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

Добрый день

 

Поставлена задача контролировать статус активностей по обращению на момент перехода в статус "IsResolved". Сделал на CasePage в methods 2 функции:

asyncValidate: function(callback, scope) {
	this.callParent([function(response) {
		if (!this.validateResponse(response)) {
			return;
		}
		Terrasoft.chain(
			function(next) {
				this.validateActivities(function(response) {
					if (this.validateResponse(response)) {
						next();
					}
				}, this);
			},
			function() {
				callback.call(scope, response);
			}, this);
	}, this]);
},
validateActivities: function(callback, scope) {
	var result = {success: true};
	if (this.get("Status").IsResolved===true) {
		var esq = Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "Activity" });
		esq.addColumn("Status.Finish", "Isfinished");
		esq.filters.addItem(esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, 
			"Status.Finish", "0"));
		esq.filters.addItem(esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, 
			"Case", this.get("Id")));
		esq.getEntityCollection(function(response) {
			if (response.success && response.collection.getCount() > 0) {
					result.message = this.get("Resources.Strings.CantChangaStatus");
					result.success = false;
			}
			callback.call(scope || this, result);
		}, this);
	}
}

Если обращение существует, то все отлично. Проверка идет, сохранять обращение не дает.

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

Нравится

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

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

 

А если заменить проверку с ESQ на заглушку, тоже зависает? Может, дело в асинхронности получения ответа от него, а выполнение проверки в asyncValidate ожидало результата сразу?

 

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

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

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

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

Нравится

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);
			}
		}
 
	};
});

 

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

Доброго дня.

 

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

Раньше такого сообщения никогда не получал.

Раздел в рабочее место не добавляется, на портале его нет. В мастере раздела вкладки "Портал" тоже нет.

Также как и нет в списке разделов для выбора в настройке рабочего места раздела "Сотрудник портала"

Нравится

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

Константин, я начал смотреть в коде, почему так.

 

Логика этой проверки и показа сообщения в SysModuleInWorkplaceDetailV2 в функции:

 

/**
* Processed receiving general and portal sections from service.
* @overridden
* @param {Object} result General and portal sections.
* @param {Object} selectedRows Selected rows in section lookup page.
*/
processedGeneralAndSspSections: function(result, selectedRows) {
                var generalAndSspSections = result.GetGeneralAndSspSectionsResult;
                if (generalAndSspSections) {
                                var sectionId = selectedRows.getByIndex(0).value;
                                if (generalAndSspSections.length === 2) {
                                                var isSelectedSectionSSP = Ext.Array.findBy(generalAndSspSections, function(item) {
                                                                var selectedSection = JSON.parse(item);
                                                                var sectionTypes = this.$SectionTypes || {};
                                                                return selectedSection.Id === sectionId && selectedSection.Type === sectionTypes.SSP;
                                                }, this);
                                                if (isSelectedSectionSSP) {
                                                                this._addSectionsToWorkplace(selectedRows);
                                                } else {
                                                                this.showInformationDialog(
                                                                                this.get("Resources.Strings.SelectedSectionAlreadyRegisteredAsSSP"));
                                                }
                                } else {
                                                this.openSectionWindow(sectionId, "SspMainSettings", null,
                "/AddSsp/" + this.get("MasterRecordId"));
                                }
                }
},

 

Тут в GetGeneralAndSspSectionsResult — результат запроса к /0/rest/SectionService/GetGeneralAndSspSections, на вход подают Id EBF36756-7854-4169-B2CC-8BC0EA25F391 этого раздела в SysModule, на выходе получаем две строки:

{
   "GetGeneralAndSspSectionsResult":[
      "{\r\n  \"Id\": \"ebf36756-7854-4169-b2cc-8bc0ea25f391\",\r\n  \"Type\": 0,\r\n  \"Caption\": \"Employees\",\r\n  \"SysModuleEntityId\": \"adfb879a-7065-4416-9379-3a0d63295dba\",\r\n  \"Code\": \"Employee\",\r\n  \"SchemaName\": \"EmployeeSection\",\r\n  \"EntityUId\": \"fb1c2bed-91d4-4b06-a28c-621a3d187008\",\r\n  \"TypeColumnName\": \"\",\r\n  \"SysModuleVisaEntityUId\": \"00000000-0000-0000-0000-000000000000\"\r\n}",
      "{\r\n  \"Id\": \"b3c1469a-26b2-4b76-a4c6-f6f0056c9972\",\r\n  \"Type\": 0,\r\n  \"Caption\": \"HR\",\r\n  \"SysModuleEntityId\": \"adfb879a-7065-4416-9379-3a0d63295dba\",\r\n  \"Code\": \"HR\",\r\n  \"SchemaName\": null,\r\n  \"EntityUId\": \"fb1c2bed-91d4-4b06-a28c-621a3d187008\",\r\n  \"TypeColumnName\": \"\",\r\n  \"SysModuleVisaEntityUId\": \"00000000-0000-0000-0000-000000000000\"\r\n}"
   ]
}

Вместе с искомым разделом Employees получаем какой-то раздел HR, которого я в интерфейсе нигде не вижу и нет в лукапе выбора раздела для добавления.

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

 

Если добавлять обычный раздел (например, «Продукты»), то либо в результате будет 1 строка и пойдёт по нижней ветке добавления портального раздела для этого раздела, либо в результате запроса к GetGeneralAndSspSections будет 2 записи по одному и тому же разделу, обычная и портальная, и если пользователь в лукапе выбрал портальную, она успешно добавится.

 

А так, из-за раздела HR логика отрабатывает не так, как ожидалось.

 

Судя по дате создания записи в 2013 году, он мог остаться от старых версий и не использоваться. Но это не точно.

 

Удалил в таблице SysModule запись с Caption, равным «HR»,  после чего портальный раздел сотрудников создался. После выбора раздела в мастере заполнил свойства и поля в портальной карточке, сохранил и он появился:

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