Добрый день.

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

Нравится

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

Андрей, это скорее всего произошло из-за того, что тот пользователь который настраивал интеграцию с LDAP автоматически стал "Ответственным" за БП "Синхронизировать данные о пользователях с LDAP"(Так как был в орг.роли "System administrators" ). И так как его учетная запись стала неактивной - то и процесс соответственно.

 

Вам необходимо войти в систему под пользователем у которого организационная роль "System administrators" , перейти в настройки LDAP и достаточно будет повторно ввести "Логин администратора" и "Пароль" от сервера. Учтите что если сервер Creatio установлен на Linux, то используйте формат “domain\login“. И сохранить настройки.

Андрей, это скорее всего произошло из-за того, что тот пользователь который настраивал интеграцию с LDAP автоматически стал "Ответственным" за БП "Синхронизировать данные о пользователях с LDAP"(Так как был в орг.роли "System administrators" ). И так как его учетная запись стала неактивной - то и процесс соответственно.

 

Вам необходимо войти в систему под пользователем у которого организационная роль "System administrators" , перейти в настройки LDAP и достаточно будет повторно ввести "Логин администратора" и "Пароль" от сервера. Учтите что если сервер Creatio установлен на Linux, то используйте формат “domain\login“. И сохранить настройки.

Kurylo Pavel, Спасибо, сработало

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

Здравствуйте, помогите решить конфликт. После updatePackedgeFromRepository на продакшине вижу конфликты ресурсов, там же нет разработки, поетому не понимаю, как ети конфликты решить, правой кнопкой мыши решить не вийдет, возможно у вас есть решение. Спасибо 

Нравится

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

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

Литвинко Павел, каким образом я могу их решить локально, может знаете? если откріть ети ресурсы локально и на проде (в папке темп iis), то вижу что они одинаковые по контексту

Nataliia, добрый день!
Попробуйте перераздать права Full Сontrol для пользователя под которым запущен IIS.
Также, проверьте, существуют ли эти файлы по пути указанному в ошибках.

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

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

 

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

 

Пробую прописать вот так (прилагаю), но фильтр не срабатывает. Скорее всего я не правильно пытаюсь узнать, к какому департаменту относится текущий пользователь, посредством EntitySchemaQuery. Информация о департаменте содержится в объекте Contact.

 

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

Как это более правильно сделать, подскажите, пожалуйста?

 

 

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

Нравится

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

Там идет асинхронный запуск, потому Ваш "return" не попадает в него. Вам необходимо сделать Join в колонке по которой делаете фильтр. Если напишите какие колонки в объекте этого раздела, то могу помочь верно сделать фильтр

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

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

Мне нужно при удалении элемента детали проверять последняя это строка или нет. Я в событии Deleting проверяю и если строка последняя, то бросаю эксепшен:   

throw new Exception("У СОба единственный застройщик. Его нельзя удалять. Перед удалением добавьте другого!");

При этом удаление не происходит, но пользователь видит сообщение: "Выделенные записи не получилось удалить" и по кнопке "посмотреть подробнее" ничего нет. Как я могу пробросить текст ошибки в отображаемое сообщение?

Нравится

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

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

Пример отправки сообщения есть в исходном коде BaseVisa из пакета NUI, метод PublishClientVisaInfo. Пример обработки есть в клиентской схеме MLModelPage, функция subscribeServerChannelEvents.

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

Пример отправки сообщения есть в исходном коде BaseVisa из пакета NUI, метод PublishClientVisaInfo. Пример обработки есть в клиентской схеме MLModelPage, функция subscribeServerChannelEvents.

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

Коллеги, прошу Вашей помощи!

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

 

Я попробовал в конфигурации страницы активности ActivityPageV2 переопределить метод save() и прописать там проверку на вложенный документ таким образом: 

 

save: function() {

    var activityStatus = (this.get("Status").value).toString();
    
    var activityTitle = (this.get("Title")).toString();
    
    if (activityTitle === "Активность для Управления оценки рисков")
    {
        if (activityStatus === "4bdbb88f-58e6-df11-971b-001d60e938c6") {
            
            var activityId = this.get("Id");    
            
            var checkInfo = false;
            
            var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
                rootSchemaName: "ActivityFile"
            });
            
            esq.addColumn("Name","actName");
            
            var esqFirstFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Activity", activityId);
            
            esq.filters.add("esqFirstFilter", esqFirstFilter);
            
            esq.getEntityCollection(function(result) {
                if (result.success) {
                    
                    checkInfo = true;
                    
                }
            }, this);
            
            if (checkInfo) {
                this.callParent(arguments); //если документ есть сохраняем страницу
            } else {
                this.showInformationDialog(Ошибка. Не добавлен документ в файлы и ссылки!); //если документа нет - выводим сообщение
            }
            
        }
        else {
            this.callParent(arguments);
        }
        
    }
    else
    {
        this.callParent(arguments);
    }                                   
}

 

После долгих проверок выяснилось, что  параметр checkInfo не передает измененное значение с false на true внутри esq.getEntityCollection(function(result) {},this) и остается в значении false, хотя проверка в ActivityFile отрабатывает корректно. 

Вопрос: как передать измененное значение checkInfo из esq.getEntityCollection обратно на страницу, чтобы далее можно было прописывать различные условия проверки? Или может я вообще не правильно осуществляю проверку вложенного документа и есть другие способы?

Нравится

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

Вот один из примеров, как это можно реализовать:

 

 define("ActivityPageV2", [],
	function() {
		return {
			entitySchemaName: "Activity",
			attributes:{
				"isSecond": {
					"dataValueType": Terrasoft.DataValueType.BOOLEAN,
					"type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
					"value": false
				}
			},
			methods: { 
				save: function() {
 
					if(this.get("isSecond")){
						this.callParent(arguments);
						this.set("isSecond", false);
					}else{
						var activityStatus = (this.get("Status").value).toString();
 
						var activityTitle = (this.get("Title")).toString();
 
						if (activityTitle === "Активность для Управления оценки рисков")
						{
							if (activityStatus === "4bdbb88f-58e6-df11-971b-001d60e938c6") {
 
								var activityId = this.get("Id");    
 
								var checkInfo = false;
 
								var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
									rootSchemaName: "ActivityFile"
								});
 
								esq.addColumn("Name","actName");
 
								var esqFirstFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Activity", activityId);
 
								esq.filters.add("esqFirstFilter", esqFirstFilter);
 
								esq.getEntityCollection(function(result) {
 
									if (result.success && result.collection.collection.length > 0) {
										this.set("isSecond", true);
										this.save();//если документ есть сохраняем страницу
									} else {
										this.showInformationDialog("Ошибка. Не добавлен документ в файлы и ссылки!"); //если документа нет - выводим сообщение
									}
 
								}, this);
 
							}
							else {
								this.callParent(arguments);
							}
 
						}
						else
						{
							this.callParent(arguments);
						}  
					}
				}, 
				test: function(){
 
				}
			},
			diff: /**SCHEMA_DIFF*/[
			]/**SCHEMA_DIFF*/
		};
	});

 

Вот один из примеров, как это можно реализовать:

 

 define("ActivityPageV2", [],
	function() {
		return {
			entitySchemaName: "Activity",
			attributes:{
				"isSecond": {
					"dataValueType": Terrasoft.DataValueType.BOOLEAN,
					"type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
					"value": false
				}
			},
			methods: { 
				save: function() {
 
					if(this.get("isSecond")){
						this.callParent(arguments);
						this.set("isSecond", false);
					}else{
						var activityStatus = (this.get("Status").value).toString();
 
						var activityTitle = (this.get("Title")).toString();
 
						if (activityTitle === "Активность для Управления оценки рисков")
						{
							if (activityStatus === "4bdbb88f-58e6-df11-971b-001d60e938c6") {
 
								var activityId = this.get("Id");    
 
								var checkInfo = false;
 
								var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
									rootSchemaName: "ActivityFile"
								});
 
								esq.addColumn("Name","actName");
 
								var esqFirstFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Activity", activityId);
 
								esq.filters.add("esqFirstFilter", esqFirstFilter);
 
								esq.getEntityCollection(function(result) {
 
									if (result.success && result.collection.collection.length > 0) {
										this.set("isSecond", true);
										this.save();//если документ есть сохраняем страницу
									} else {
										this.showInformationDialog("Ошибка. Не добавлен документ в файлы и ссылки!"); //если документа нет - выводим сообщение
									}
 
								}, this);
 
							}
							else {
								this.callParent(arguments);
							}
 
						}
						else
						{
							this.callParent(arguments);
						}  
					}
				}, 
				test: function(){
 
				}
			},
			diff: /**SCHEMA_DIFF*/[
			]/**SCHEMA_DIFF*/
		};
	});

 

Mykhailo Storozhuk,

Супер! Спасибо большое!!! А то 3 дня мучался, пытаясь найти решение)) Тоже через атрибут пробовал, но не додумался перевызывать метод save() c проверкой этого атрибута. Благодарю!

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

Есть JSON на 35 000+ строк.
На стороне сервера запрос принимается и обрабатывается 118 – 124 секунды.

Во время обработки запроса к нам приходит ошибка:

Received an unexpected EOF or 0 bytes from the transport stream. Trace at System.Net.ConnectStream.Read(Byte[] buffer, Int32 offset, Int32 size) at System.IO.StreamReader.ReadBuffer() at System.IO.StreamReader.ReadToEnd() at Terrasoft.Configuration.UsrCustomNamespace.UsrHelperForAuction.SendRequest[T](String api, T requestObject, Guid auctionId)

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

В CRM при отправке запроса, HTTP Request был добавлен таймаут = 600 * 1000.

Ошибка осталась та же.

Нравится

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

Добрый день.

Подскажите, сколько по времени занимает выполнение запроса в Postman?
Если у вас закрывается сессия до выполнения запроса, я бы рекомендовал обратить внимание на системную настройку UserSessionTimeout. Максимальное значение данной настройки - 720 мин.

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

Добрый день!

Подскажите, по какой причине не отображается раздел [Обращения] в рабочем месте?

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

Нравится

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

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

Здесь стоит проверять сразу несколько нюансов:

- проверьте что объект не имеет ошибок публикации, скомпилируйте приложение. 

- проверьте права, на раздел/рабочее место, а также что пользователь обладает нужной лицензией.

- проверьте привязку в таблице SysModul. Может быть такое, что раздел был добавлен в одно рабочее место два раза и на уровне базы данных образовались дубли, в таком случае раздел просто не отобразиться. Нужно удалить записи на уровне БД и добавить раздел снова.

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

 

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

Добрый день!

У сотрудника перестали отображаться данные в канбан, хотя записи в наработках присутствуют

Нравится

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

Лариса, если это дополнение Kanban view for Creatio, то лучше будет уточнить у его авторов по ссылке. Из общих соображений, проверьте, все ли у него есть права на записи этого раздела, где Вы строите канбан, и нет ли при переходе в этот режим в консоли браузера ошибок, которые могут сказать больше о причине.

 

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

Ошибка возникает из-за того что в замещающих схемах BaseSectionV2 вызывается CloseCard, в котором обращется к this.$SelectedRows.length, но инициализация $SelectedRows происходит позже. 
Ошибка решается изменением метода: 

    closeCard: function() {
                this.hideCard();
                this.removeCardHistoryState();
                this.updateCardHeader();
                const isMultiSelectMode = this.$MultiSelect && this.$SelectAllMode;
                const isNotSelected = !isMultiSelectMode && this.$SelectedRows && this.$SelectedRows.length === 0;
                if (isNotSelected) {
                    this.switchActiveRowActions();
                }
                this.reloadGridColumnsConfig(true);
                this.ensureActiveRowVisible();
            }

 

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

спасибо за ответ! наверное, если бы ошибка возникла из-за обновления, то тогда пропало бы отображание у всех, а здесь только у некоторых

Если у некоторых, то похоже на отсутствие каких-то прав. Для эксперимента, можно сделать их админами и проверить снова.

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

К сожалению, не помогло

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

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

Добрый день, подскажите пожалуйста, как заместить модуль DuplicatesSearchUtilitiesV2 на пользовательский. Прочитал что модули замещать нельзя. Создал новый модуль DevDuplicatesSearchUtilitiesV2, изменив прежний. Но никак не могу понять, как теперь заместить схему AccountPageV2, так чтобы в ней использовался новый модуль вместо прежнего, не смог нигде найти ответа на этот вопрос. Подскажите пожалуйста как можно реализовать такое замещение.

Нравится

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

Добрый день.
После того как вы создали свой модуль по аналогии с DuplicatesSearchUtilitiesV2, вам необходимо указать его в зависимости в замещенной схеме AccountPageV2.

Инициализировать его как миксин и использовать в методах как любой другой миксин.

 

Пример:

https://i2.paste.pics/8754cbb41c209e369590912c418fbfbb.png

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

Добрый день!

После запуска процесса Генерация структуры БД в браузере не появился файл, где его искать?

Спасибо!

Нравится

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

Открывайте консоль разработчика и смотрите ошибку. Перекомпилируйте все.

Перейдите на преднастроенную страницу, при нажатии должен скачаться файл.

Полозюков Евгений Петрович, перешла на страницу, нажимаю, но файл не появляется

Открывайте консоль разработчика и смотрите ошибку. Перекомпилируйте все.

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

Спасибо!

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