Добрый день!



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

 

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

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

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

 

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

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

 

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

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

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

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



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



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



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

Нравится

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

Добрый день.

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



Блокировать удаление (RESTRICT):

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



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







Удалять связанный объект (CASCADE):

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



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







Очищать связь со связанным объектом (SET NULL):

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

 

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

Добрый день. Подскажите, пожалуйста, как разрешить следующую проблему.

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

 

PS. Может, я чего-то не знаю и возможность удаления без удаления связанных записей можно отключить?

Нравится

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

Здравствуйте, Александр!

Запуск механизма массового удаления осуществляется при помощи GridUtilitiesService. метод DeleteRecordsAsync который принимает массив идентификаторов записей, название сущности и словарь, который отвечает за конфигурирование параметров, так же метод подготавливает параметры и запускает MultiDeleteExecutor. Особенностью метода является управляемый запуск операции удаления при помощи системной настройки с кодом DefaultNumberItemsReturned, которая отвечает за запуск операции в фоне или в общем потоке.

Вы можете полностью заместить и изменить схему GridUtilitiesService для решения вашей бизнес цели.

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