|  23.10.2025, 14:31 | #1 | 
| Участник | AX09 как через Job поменять тип поля с Enum на String 
			
			Привет.  По каким то странным причинам было изменено тип поля у таблицы. Было String а стало Enum. Благо что данное приложение не прод, но ситуация нехорошая. Не смог найти Job по смене типа поля через Код. Нашел только Job по смене Id у поля. А как поменять тип поля? X++: static void gvz_SQLDictionary_ChangeFieldId(Args _args) { SQLDictionary sqlDictionary; UtilIdElements ue_Table; UtilIdElements ue_Fields; TableName tableName; FieldName fieldName; TableId tableId; FieldId fieldId; // FieldId fieldId_New; ; // --------------------- ВВОД --------------------- tableId = tableNum(Table1); fieldId = fieldNum(Table1, FieldId); fieldId = 50002; //fieldId_New = 50030; // если указано то смена Id // ------------------------------------------------ tableName = tableId2name(tableId); fieldName = fieldId2name(tableId, fieldId); select firstonly ue_Table where ue_Table.RecordType == UtilElementType::Table && ue_Table.Name == tableName; if (!ue_Table) throw error(strFmt("Таблица с Id = %1, не найдена", tableId)); if (fieldId_New) { select ue_Fields where ue_Fields.recordType == UtilElementType::TableField && ue_Fields.ParentId == ue_Table.id && ue_Fields.id == fieldId_New; if (ue_Fields) throw error(strFmt("Id %1 уже занят полем %2.%3", fieldId, ue_Table.Name, ue_Fields.name)); } ttsbegin; select forupdate ue_Fields where ue_Fields.recordType == UtilElementType::TableField && ue_Fields.ParentId == ue_Table.id && ue_Fields.id == fieldId; if (!ue_Fields) throw error(strFmt("Поле в Id = %1, в таблице %2, не найдено", fieldId, ue_Table.Name)); if (fieldId_New) ue_Fields.id = fieldId_New; ue_Fields.update(); /* ttscommit; appl.dbSynchronize(tableId, false); ttsbegin; */ select forUpdate sqlDictionary where sqlDictionary.TabId == tableId && sqlDictionary.fieldId == fieldId; if (!sqlDictionary) throw error("Запись в SQLDictionary не найдена"); else { sqlDictionary.fieldId = fieldId_New; sqlDictionary.update(); } ttscommit; if (fieldId_New) info(strFmt('Id поля %1.%2 изменен: %3 -> %4', tableName, fieldName, fieldId, fieldId_New)); info("Закройте клиент AX, после открытия выполните синхронизацию данной таблицы"); } | 
|  | 
|  23.10.2025, 15:42 | #2 | 
| Участник | 
			
			А в SQL-то какой тип?
		 | 
|  | 
|  23.10.2025, 15:50 | #3 | 
| Участник | 
			
			Проще удалить поле и создать новое с правильным типом. И поменять идентификатор на нужный. | 
|  | 
|  23.10.2025, 20:30 | #4 | 
| Участник | |
|  | 
|  24.10.2025, 12:24 | #5 | 
| Участник | 
			
			А в UtilIdElements и SQLDictionary аналогично айдишнику тип поля не указывается разве?
		 | 
|  | 
|  24.10.2025, 15:06 | #6 | 
| Участник | 
				__________________ - Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... | 
|  | 
|  27.10.2025, 12:38 | #7 | 
| Участник | |
|  |