Здравствуйте, есть ли возможность у портального пользователя удалять прикрепленные файлы в обращениях (вкладка обработка)?

 

Нравится

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

Добрый день, 

 

Подскажите пожалуйста какой портал имеется в виду: self-service или success?

 

Ожидаю ответ, 

Игорь

Здравствуйте, немного не понимаю разницы, но вероятно, что self-service

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

Добрый день!

Может ли кто-то пояснить как работает контроль целостности?
 

Есть объект "журнал", в котором есть колонка Контакт. 

1) заполняем колонку Контакт в записи "журнал".

2) удаляем запись контакта.

 

1. Если стоит радиобаттон"удалять" у поля "Контакт" в Журнале, то по идее должна удаляться запись журнала -- удаляется

2. Если стоит радиобаттон "блокировать" у поля "Контакт" в Журнале, то выходит окно с контролем целостности с указанием на страницу Журнала. Тут есть возможность удалить связанные записи, но в нашем случае происходит какое-то зацикливание и после ожидания "подготовки данных к удалению" мы снова попадаем в окно контроля целостности

 

Самое интересное как работает галка "не контролировать целостность"

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

- если будет поставлена галка "не контролировать" и радиобаттон "блокировать", то при удалении объекта все равно попадаем в окно контроля целостности

- если стоит галка "не контролировать" и радиобаттон "удалять"  -- только в этом случае обычно все нормально работает.

Почему вообще при постановке галки "не контролировать" доступны радиобаттоны? не было бы логичнее делать их тдч и вообще не учитывать при удалении?

В общем какое-то странное поведение, которое не дает нам полностью реализовать необходимую логику.

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

Нравится

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

Добрый день.
Ниже описано как в приложении Creatio реализованы три стратегии удаления.

Блокировать удаление (RESTRICT):
Если установлен признак "Блокировать удаление", то при наличии связей будет выводиться диалоговое окно.

При этом у пользователя остается возможность выполнить удаление связанной записи, то-есть остается возможность использовать 2 стратегии удаления: удалять связанный объект (CASCADE) и очищать связь со связанным объектом (SET NULL)

Удалять связанный объект (CASCADE):
Если установлен признак "Удалять записи из...", то при наличии связей с этим объектом, диалогового окна не будет и связанная запись будет удалена.

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

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

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

Как можно удалить файл в ходе БП ?

Пример: 

Нужно в  ходе БП удалить все файлы кроме файла который загрузили в конце (По дате ) 

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

Нравится

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

Добрый день.

 

Можно в БП реализовать такую логику 2-мя стандартными элементами.

1. С помощью элемента 'Чтение данных' получить Id последней загруженной записи:

2. С помощью элемента 'Удаление данных':

Добрый день.

 

Можно в БП реализовать такую логику 2-мя стандартными элементами.

1. С помощью элемента 'Чтение данных' получить Id последней загруженной записи:

2. С помощью элемента 'Удаление данных':

Спасибо 

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

Есть раздел, в нем деталь. Как запретить добавление детали в зависимости от значения поля раздела? Вот здесь описано как сделать на клиенте а здесь как на сервере, но не могу понять как достучаться до конкретного элемента раздела где отображается деталь и надо сделать запрет, как получить значения поля в контексте BaseGridDetailV2 или во встроенном БП процеса?

Нравится

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

В baseGridDetail поищите что-то вроде this.sandbox.publish("GetColumnsValues", ...

запрос позволяет тянуть данные аттрибутов со страницы. Ну а дальше в addRecord-методе ветвите логику как хотите

 

В целом работа с песочницей описана здесь.

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

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

Добрый день!

 

Коллеги, возможно ли запретить определенным пользователям удалять значение справочного поля крестиком?

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

 

Спасибо! 

Нравится

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

а права доступа на объект не подойдут?

Dima Avdoshin, пользователь должен иметь возможность создавать объект, видеть значение колонки Инвойс, но не иметь возможности ее менять. Когда делаю через запрет на редакт колонки, то не видят ее содержимое. Хотел добавить свою логику на крестик. 

Сергей Хоменко,
вариант , который у меня сейчас перед глазами

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

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

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

Вместо initModelColumns, можешь вешать другие ивенты, к примеру при выделении записи
Пример

define("qrtqrtTestObj31ff6c52Page", ["RightUtilities"], function(RightUtilities) {
	return {
		entitySchemaName: "qrtTestObj",
		attributes: {
			"Name": {
				//dataValueType: Terrasoft.dataValueType.FLOAT,
				dependencies: [
					{
						columns: ["Name"],
						methodName: "changeName"
					}
				]
			},
		},
		modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,
		methods: {
			initModelColumns: function() {
				this.callParent(arguments);
				this._setColumnsDataModelName();
				this._setResourceColumns();
				this.console.log("initModelColumns");
				var self = this;
				RightUtilities.checkCanExecuteOperation({
                    operation: "qrtRulesSalesInInvoice"
                  }, function(result) {
                      self.console.log("RESULT" + result);
                      self.set("qrtSalesRules", result);
                  }, this);
			},
 
			changeName : function name() {
				if(!this.isNewMode()) {
					var isOk = this.get("qrtSalesRules")
					if(isOk) {
						this.showInformationDialog("У вас нет права на редактирование этой колонки")
						//отменяем действие
						this.onDiscardChangesClick();
					}
				}
			}
        },
      dataModels: /**SCHEMA_DATA_MODELS*/{}/**SCHEMA_DATA_MODELS*/,
		diff: /**SCHEMA_DIFF*/[
			{
				"operation": "insert",
				"name": "Name1cacb119-4c62-4e85-929a-e7a877e24794",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 0,
						"row": 0,
						"layoutName": "Header"
					},
					"bindTo": "Name"
				},
				"parentName": "Header",
				"propertyName": "items",
				"index": 0
			},
			{
				"operation": "insert",
				"name": "Description5836d8b4-157f-49bf-a943-3e6d3c28cf1e",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 0,
						"row": 1,
						"layoutName": "Header"
					},
					"bindTo": "Description"
				},
				"parentName": "Header",
				"propertyName": "items",
				"index": 1
			}
		]/**SCHEMA_DIFF*/
	};
});

 

Dima Avdoshin,

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

clearSupplyPaymentElementProducts, переопределение которой решает часть задачи без лишних маневров.

Самый простой способ использовать бизнес-правила. БП проверяете со значением булевого атрибута. А атрибуту устанавливаете значение true/false в зависимости от того, входит ли текущий пользователь в коллекцию тех, кому доступ запрещен (коллекцию можно сформировать через справочник, либо в зависимости от группы/роли, либо даже захаркодить(что не рекомендую)). Такое решение будет самым быстрым и легким, на мой взгляд 

Спасибо!

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

Добрый день!

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

 

Спасибо!

Нравится

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

Каскадная связь при настройке детали по полю контрагент должна помочь

Каскадная связь при настройке детали по полю контрагент должна помочь

Алексей Следь, спасибо большое!))) В 7.17 не могу её найти((( 

"Удалять записи" не помогает.

 

 

Екатерина, непонятно, почему у Вас подписи переключателей такие, а не «Блокировать удаление, если есть связанные записи в текущем объекте с этим значением» и «Удалять записи из текущего объекта с этим значением», как написано при открытии в дизайнере стандартной детали, вроде «Контрагент в группе». Там у поля связи с разделом выбрано второе значение.

На всякий случай, старая конфигурация доступна на /0/dev_old и можно включить каскадную связь там.

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

Cпасибо большое! Помогло переключение на старую конфигурацию!)

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

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

Устал искать, инфоромации нигде не нашел.

Есть ли способ почистить этот фильтр от лишних полей, не использующихся в системе в целом, чтобы было удобнее пользоваться быстрым фильтром? 

Нашел в QuickFilterModuleV2 метод initCustomFilterConfig, в котором существует свойство allowedColumns, но если я туда что либо пишу, пропадают вообще все поля без исключения (пробовал писать как-то так:
this.filtersConfig.customFilterConfig.allowedColumns = ["Name", "Owner"];

Нигде использований не нашел. Может кто нибудь пользовался\знает?

Нравится

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

Ответ оказался прост

Ответ оказался прост

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

Коллеги, всем доброго дня!

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

Буду признателен за любые идеи в решении данного вопроса!

Нравится

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

Добрый день. Ошибка возникает при процессе удаления? Пару вариантов, которые могут быть причинами ошибки:

- у пользователя под которым выполняется данная операция (удалить), нет соответствующих прав;  

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

Добрый день. Ошибка возникает при процессе удаления? Пару вариантов, которые могут быть причинами ошибки:

- у пользователя под которым выполняется данная операция (удалить), нет соответствующих прав;  

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

Добрый день.

 

Часто такая ошибка возникает, когда происходит свал по тайм ауту.

 

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

 

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

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

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

На тайм аут это действительно больше всего похоже. Но пока не знаем как выйти из положения, разве что написать кастомный сервис зачистки данного справочника. Удаление частями выход, но это крайне неудобно пользователям (как бить записи на группы, если их 3000, и помечать их к удалению)?

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

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

 

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

 

Ещё длительное удаление может быть связано с логикой, которая добавлена во встроенном или отдельном БП на событии удаления для этого объекта.  В таком случае она отработает только при удалении средствами EntiteSchemaQuery (оно происходит и при удалении пользователем вручную). А при удалении средствами класса Delete она не вызывается: будет намного быстрее, но логика не отработает, что нужно будет учесть и реализовать нужные вычисления отдельно.

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

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

Каким-то образом после создания детали, при добавлении детали на раздел в списке выбора две детали с одинаковым именем. Решил удалить через конфигуратор и потом создать заново.

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

Как пофиксить?

Нравится

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

Сергей, здравствуйте!

Инструкцию по удалению детали Вы найдете на Академии: https://academy.terrasoft.ru/documents/sales-enterprise/7-11/chasto-zadavaemye-voprosy-po-masteru-razdelov

Ошибка, скриншот которой Вы предоставили, может возникать в том случае, если одно из полей, которое заполняется на детали, ссылается или на несуществующий справочник, или на удаленное значение справочника. Для более детального анализа проблем напишите нам на support@terrasoft.ru, и мы обязательно рассмотрим Ваше обращение.

Одеяненко Юлия,

Спасибо, со справочником, да, накосячил frown

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

Коллеги, подскажите.

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

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

Нужно именно убрать данную опцию, а не отключить права.

Нравится

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

как вариант заместить BasePageV2, код

define("BasePageV2", [],
	function() {
		return {
			messages: {},
			mixins: {},
			attributes: {},
			modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,
			methods: {
				onLookupDataLoaded: function(config) {
					config.collection.each(function (item) {
						var key = item.get("value");
						config.objects[key] = item.model.attributes;
					}, this);
				}
			},
			diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
		};
	});

 

В своё время получили ответ, что убрать невозможно.
В итоге сделали в карточках (не в справочниках) хоть одно обязательное поле кроме главного. Тогда хотя бы не "по-тихому" создается новая запись, а пользователь осознанно и ответственно нажимает Save

Варфоломеев Данила пишет:
как вариант заместить BasePageV2, код

А это можно сделать для конкретных  lookup'ов?

Владимир Соколов пишет:
А это можно сделать для конкретных lookup'ов?

В config.columnName приходит название колонки, так что в теории - да.

Варфоломеев Данила,

 Большое спасибо, все получилось

 

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