Есть неправильно созданная деталь, уже добавленная на страницу, связанная с определённым кастомным объектом, еще парочу клиенских модулей, которые используют этот объект. Необходимо удалить это всё.
МОи действия:
1. Удаляю деталь из дизайнера страницы, сохраняю.
2. Удаляю страницы детали, которые ссылаются на объект детали.
3. Удаляю объект.
Вроде всё.
После этого захожу в мастер деталей - ошибка! Пишется, что объект с определённым GUID не существует, это GUID того удалённого объекта. Пытаюсь открыть визуальный редактор страницы, где ранее была деталь - так же ошибки. И после этого страницы конфигурации тоже валятся с ошибками. Не смог решить проблему. Пришлось брать бэкап DB и ресторить. И так несолько раз.
Подскажите, в чем может быть проблема.
Нравится
Здравствуйте.
После удаления схем необходимо выполнить действие "Компилировать всё".
По завершению публикации - проверить суть проблемы.
Удалил объект, выполнил "Компилировать всё". При попытке зайти в визард деталей, или визард секций, скорее всего еще куда-то, или открыть редактор визуальный редактор страницы - то же самое.
Есть ли какой то способ, возможно, с помощью SQL запроса, узнать, где используется объект с определённым именем / GUID ? Почему вообще падает визард деталей в этом случае, не баг ли?
Exception Message: Item with Id "04a74226-e7ef-4615-a334-0dfd3abdb93b" not found. Exception Type: Terrasoft.Common.ItemNotFoundException Exception Source: Terrasoft.Core Exception Stack Trace: at Terrasoft.Core.ManagerItemCollection`1.GetByUId(Guid uid) at Terrasoft.Core.Manager`2.GetItemByUId(Guid uid) at Terrasoft.Core.Manager`2.Terrasoft.Core.IManager.GetItemByUId(Guid uid) at Terrasoft.UI.WebControls.ClientUnitSchemaDecorator.GetClientUnitSchemaHash(ISchemaManagerItem item) at Terrasoft.UI.WebControls.ClientUnitSchemaDecorator.GetSchemaHash(ISchemaManagerItem item) at Terrasoft.UI.WebControls.ClientUnitSchemaDecorator.GetCommonSchemaHash(ISchemaManagerItem item) at Terrasoft.UI.WebControls.ClientUnitSchemaDecorator.GetSchemaPath(ISchemaManagerItem item) at Terrasoft.UI.WebControls.ClientUnitSchemaDecorator.GetSchemaDescriptor(ISchemaManagerItem item, String identifiersQuote) at Terrasoft.Configuration.ConfigurationSectionHelper.GetClientUnitSchemaDescriptors(UserConnection userConnection) at Terrasoft.Configuration.ConfigurationSectionHelper.GetConfigurationScript(UserConnection userConnection) at Terrasoft.WebApp.Nui.ViewModuleHelper.CreateModulesConfigScript(UserConnection userConnection, HttpResponse response) at Terrasoft.WebApp.Nui.ViewModule.SetupModulesConfig() at Terrasoft.WebApp.Nui.ViewModule.Page_Load(Object sender, EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
trickbz
Скрипт ниже покажет все таблицы, в которых указанный идентификатор находится в колонке с именем Id:
DECLARE @COLUMN_NAME NVarChar(100) = 'Id' -- попробуйте с Id и с Uid DECLARE @COLUMN_VALUE NVarChar(100) = '04a74226-e7ef-4615-a334-0dfd3abdb93b' DECLARE @tableName VARCHAR(50) DECLARE tablesCursor CURSOR LOCAL FORWARD_ONLY STATIC FOR SELECT table_name = sysobjects.name FROM sysobjects JOIN syscolumns ON sysobjects.id = syscolumns.id WHERE sysobjects.xtype='U' and syscolumns.name = @COLUMN_NAME OPEN tablesCursor FETCH NEXT FROM tablesCursor INTO @tableName WHILE @@FETCH_STATUS = 0 BEGIN EXEC ('DECLARE @recordCount INT; DECLARE @quotesChar CHAR = char(39); DECLARE @tabChar CHAR = char(9); BEGIN TRY SET @recordCount = (SELECT COUNT(*) FROM [' + @tableName + '] where ' + @COLUMN_NAME + ' = ''' + @COLUMN_VALUE + ''') IF @recordCount > 0 BEGIN PRINT '''' PRINT ''-- ' + @tableName + ':'' PRINT '' SELECT * FROM ' + @tableName + ' WHERE ' + @COLUMN_NAME + ' = '' + @quotesChar + ''' + @COLUMN_VALUE + ''' + @quotesChar + '''' PRINT '' -- Количество строк в запросе: '' + CAST(@recordCount as VARCHAR(5)) END END TRY BEGIN CATCH END CATCH; '); FETCH NEXT FROM tablesCursor INTO @tableName END CLOSE tablesCursor DEALLOCATE tablesCursor