| 
			
			 | 
		#20 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			В общем, вроде нашел решение. 
		
		
		
		
		
		
			Вот джоб, которым тестировал: Код: static void Tutorial_ChangeFieldId(Args _args)
{
	UtilIdElements uie;
	SQLDictionary dict;
	;
	ttsbegin;
	select forupdate uie
		where uie.name == "Field2" &&
			 uie.parentId == tableNum(Tutorial_ChangeFieldId);
	if (!uie)
		warning("Запись в UtilIdElements не найдена");
	else
	{
		uie.id = 50005;
		uie.update();
	}
//	appl.dbSynchronize(tableNum(Tutorial_ChangeFieldId), false);
//	select forUpdate dict
//		where dict.tabId == tableNum(Tutorial_ChangeFieldId) && dict.fieldId == fieldNum(Tutorial_ChangeFieldId, Field2);
//	if (!uie)
//		warning("Запись в SQLDictionary не найдена");
//	else
//	{
//		dict.fieldId = 50005;
//		dict.update();
//	}
	ttscommit;
}НО: если тупо после этого сделать синхронизацию таблицы - о чудо, все восстановилось! Id поменялся, данные в таблице остались. Абсолютно интуитивно непонятный механизм - смотрим на какую-то фигню (UNKNOWN), после синхронизации получаем конфетку ![]() То, что закомментировал, оказалось ненужным. Программная синхронизация таблицы не помогает, нужно почему-то обязательно через АОТ делать. Так что решение таково: программно изменяем IDшники полей в UtilIdElements и делаем синхронизацию таблицы. Вуаля! Спасибо всем, принявшим участие в эксперименте. 
				__________________ 
		
		
		
		
	Андрей.  | 
| 
	
 |