Есть способ удалить контакт через OData использую api:

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

Т.к. у контакта есть связь с другими сущностями, то контакт не удаляется. При удалении контакта, открывается форма, в которй предлагается удалить запись используя - Do not delete connected records, запись удаляется. Возможно ли использовать этот функционал в api, может добавить какой параметр в запрос надо?

Нравится

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

Изображение не дошло, использую Postman:

DELETE - {{creatio_base_url}}/0/odata/Contact/3a074f61-7e3f-e8dd-87e8-0f65722d0875

Ошибка:

{

    "error": {

        "code": "",

        "message": "An error has occurred."

    }

}

Добрый день, Владимир.

 

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

 

Обратите внимание, что данные настройки будут распространяться не только при удалении записи через OData, но и при удалении записи через интерфейс пользователя в Creatio CRM.

 

Детальнее об этих настройках можно найти в этой статье на Академии:

 

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

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

 

Нравится

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

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