| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Ax 3.0 выравнивание влево
			 
			
			Коллеги поделитесь информацией как безболезненно перевести базу с правого выравнивания строковых полей на левое. 
		
		
		
		
		
		
		
	Мы попробовали стандартный способ, тот который идет в поставке с Ax 4.0 - 5.0 в файле PrivateProject_LeftJustified.xpo Но есть непонятки. Указанный скрипт, выдает к базе данных запросы которые применяют к полям операцию ltrim и меняет выравнивание в АОТ на расширенных типах и полях таблиц. При этом не меняется свойство rightJustify в таблице SqlDictionary Это приводит к тому, что при следующей синхронизации ядро аксапты генерит запросы вида Select From Insert Into ... Ltrim() ... т.е. делает то же самое что и PrivateProject_LeftJustified.xpo более тяжелым для БД способом. Что это ? недоработка программистов ? Или так и нужно и нельзя пропускать запросы, которые напрямую к БД генерит скрипт? Мне кажется что правильный скрипт по переводу на левое выравнивание должен еще и сбрасывать флажок rightJustify в SqlDictionary - чтобы не было проблем с последующей синхронизацией.  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Правильно и безболезненно можно так - в Аксапте изменить свойство выравнивание у типа num, сохранить изменения. Запустится одна большая транзакция с блокировкой схемы данных. В этот момент transaction log может вырасти до размеров самой базы. Работающих пользователей в этот момент лучше выгнать поскольку с огромной вероятностью работающие пользователи дадут deadlock. Тип num является базовым для большинства кодов в Аксапте. Изменение выравнивания в базовом типе приведет к изменению выравнивания очень многих типов (см. иерархию объектов, начиная с num). После изменения num, стоит поискать среди типов свойство Align со значением Right при помощи стандартного поиска. В стандартном приложении останется с десяток типов (среди них коды журналов), которые также перещелкнуть влево. См. также http://axapta.mazzy.ru/lib/adjustment/ и примечания внизу.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Logger (2). | |
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Я так понимаю что скрипт был сделан для того чтобы можно было перейти на Ax 4.0 - 5.0 Но ведь они тоже используют информацию из SQLDictionary и в контрольном списке обновления для них есть пункт Синхронизация. Так что даже если старое приложение не работает, проблема остается. Единственное возможное решение - то что процедура обновления Ax 4.0 принудительно меняет свойства в SQLDictionary. Но проверить так это или нет я сейчас не могу.  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Я думаю что скрипт скорее всего кривой. Забыли про SQLDictionary 
		
		
		
		
		
		
		
	Он не делает запросы select from Insert Into, а просто обновляет записи в таблицах. По идее это должно работать быстрее - меньше нагрузка на БД.  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Пардон, поспешил - ядро тоже генерит запросы вида Update... ltrim 
		
		
		
		
		
		
		
	Никаких Select from Insert into в нем нет. Так что скрипт получается нафиг не нужен.  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Угу. 
		
		
		
		
		
		
			
		
		
		
		
	Я промолчу про разработчиков, которые зачастую Аксапты не знают. Хотя очень хочется что-нибудь гадкое сказать  
		 | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Скрипт нужен. Но только для обновления. Дело в том, что согласно процедуре обновления после выполнения скрипта на старой БД - необходимо запустить файл AxDbUpgrade.exe - код которого скрыт в EXE-шнике. По своему опыту скажу - что этот EXE-шник в основном только что и делает - как переливает таблицы из одной БД в другую. Т.е. тупо CREATE TABLE ..., INSERT INTO ... Нюанс состоит в том, что он делает не только переливание. Он еще правит SQLDictionary и еще делает ряд отметок. Что конкретно - не изучал - но то что он делает еще что-то - с этим сталкивался. 
		
		
		
		
		
		
			Зачем разработчики в MS сделали именно так? Не знаю. Пусть это останется на их совести. Нам лишь нужно знать, как выполнять процедуру обновления и что этот скрипт LeftJustify больше применять нигде нельзя кроме как при обновлении. Кстати - еще один момент - о котором забыли разработчики этого скрипта. Декларировав, что в 4-ке (я говорю о переходе 3->4) нет типов с выравниванием вправо разработчики "забыли" о российских модулях (Зарплата и Кадры, ОСы). Там ничего не поменялось. В связи с этим этот скрипт пришлось дописывать, чтобы исключить выравнивание влево типов данных из российских модулей. 
				__________________ 
		
		
		
		
	Возможно сделать все. Вопрос времени  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Member 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от sukhanchik
			
			 
... 
		
	В связи с этим этот скрипт пришлось дописывать, чтобы исключить выравнивание влево типов данных из российских модулей. ... 
				__________________ 
		
		
		
		
	С уважением, glibs®  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			В идеологии буржуйского МС - да. Но как раз лучше ничего не трогать. Ибо нечего делать работу за сотрудников российского МСа. Они же все равно рано или поздно эту работу проделают. А если проделают - то сами же будем мучаться - удалять код из слоя из приложения. Если не проделают - значит и нам трудиться не надо. Нам - пользователям системы - какая фиг разница куда все выровнено?
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Возможно сделать все. Вопрос времени  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Member 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от sukhanchik
			
			 
... 
		
	Нам - пользователям системы - какая фиг разница куда все выровнено? ... Насчет не трогать... да, действительно. Есть места. В кассе, например, строковые типы сравниваются на "<", ">" (больше или меньше). 
				__________________ 
		
		
		
		
	С уважением, glibs®  | 
| 
	
 | 
| Теги | 
| ax2009, ax3.0, ax4.0 | 
| 
	
	 | 
	
		
  |