| 
			
			 | 
		#1 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
			
			
			Синхронизация программно
			 
			
			Добрый вечер! 
		
		
		
		
		
		
		
	Не подскажите как программмно синхронизировать таблицу?  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Banned 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Application::dbSynchronize(...)
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Спасибо! 
		
		
		
		
		
		
		
	Немного зациклился как передать в dbSynchronize() tableId.. Я перебираю таблицы, у меня есть treeNode.  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			ну, всегда можно в крайнем случае воспользоваться 
		
		
		
		
		
		
			
		
		
		
		
	AOTgetProperties() - он вернет строку, и в ней должен быть первым свойством как раз tableid Думаю, просто, что есть и более изящный способ  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			можно воспользоваться стандатртными средствами: 
		
		
		
		
		
		
			X++: SysTableBrowser::treeNode2TableId(TreeNode treeNode); 
				__________________ 
		
		
		
		
	Возможно сделать все. Вопрос времени  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Большое Спасибо!!  
		
		
		
		
		
		
		
	 
		 | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Извиняюсь за оффтоп: 
		
		
		
		
		
		
		
	Вот таким извращением можно менять свойства treeNode (Здесь свойства типа NoYes): PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			можно ... но сложно как-то ... 
		
		
		
		
		
		
			Вот пример попроще: X++: static void superJob(Args _args) { TreeNode treeNode = TreeNode::findNode('\\Data Dictionary\\Tables\\Address'); str properties = treeNode.AOTgetProperties(); str property; #Properties ; property = findproperty(properties, #PropertyTemporary); if (property == #PropertyValueYes) { properties = setproperty(properties, #PropertyTemporary, #PropertyValueNo); } treeNode.AOTsetProperties(properties); } 
				__________________ 
		
		
		
		
	Возможно сделать все. Вопрос времени  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
			
			 
			
			Спасибо! Действительно проще. 
		
		
		
		
		
		
		
		
			После моего кода, таблицы остаются не синхронизированными: PHP код: 
	
			
	Последний раз редактировалось DreamCreator; 25.01.2006 в 11:06.  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Помимо того что не синхронизируется, не могу понять такую закономерность: 
		
		
		
		
		
		
		
	Если мой класс (наследник RunBaseBatch, в нем весь алгоритм, и он вызывается) имеет RunOn: -- Server : не синхронизирует и не изменяет свойства у таблиц! (т.е. вообще не работает) -- CalledFrom,Client -- изменяет свойства, но не синхронизирует! Оставляю возможность, что я чего не досмотрел, но пока вопрос!  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			посмотрите параметры метода dbSynchronize. Второй параметр отвечает именно за принудительную синхронизацию. 
		
		
		
		
		
		
			И еще. Нет необходимости создавать экземпляр класса Application. Уже есть в системе глобальная переменная appl, созданная на сервере. 
				__________________ 
		
		
		
		
	Возможно сделать все. Вопрос времени  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Спасибо! Проблема полностью решена!  
		
		
		
		
		
		
		
	![]() PHP код: 
	
			
	 | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: CHESER85 (1). | |