AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.07.2008, 19:11   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Ax 3.0 выравнивание влево
Коллеги поделитесь информацией как безболезненно перевести базу с правого выравнивания строковых полей на левое.

Мы попробовали стандартный способ, тот который идет в поставке с Ax 4.0 - 5.0 в файле PrivateProject_LeftJustified.xpo

Но есть непонятки.

Указанный скрипт, выдает к базе данных запросы которые применяют к полям операцию ltrim и меняет выравнивание в АОТ на расширенных типах и полях таблиц.

При этом не меняется свойство rightJustify в таблице SqlDictionary
Это приводит к тому, что при следующей синхронизации ядро аксапты генерит запросы вида Select From Insert Into ... Ltrim() ...

т.е. делает то же самое что и PrivateProject_LeftJustified.xpo более тяжелым для БД способом.

Что это ? недоработка программистов ?
Или так и нужно и нельзя пропускать запросы, которые напрямую к БД генерит скрипт?


Мне кажется что правильный скрипт по переводу на левое выравнивание должен еще и сбрасывать флажок rightJustify в SqlDictionary - чтобы не было проблем с последующей синхронизацией.
Старый 30.07.2008, 19:22   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Logger Посмотреть сообщение
Коллеги поделитесь информацией как безболезненно перевести базу с правого выравнивания строковых полей на левое.

Мы попробовали стандартный способ, тот который идет в поставке с Ax 4.0 - 5.0 в файле PrivateProject_LeftJustified.xpo
Этот скрипт рассчитан на то, что выравнивание делается в базе, а дальше старое приложение не работает. Лично мне он категорически не понравился.

Правильно и безболезненно можно так - в Аксапте изменить свойство выравнивание у типа num, сохранить изменения. Запустится одна большая транзакция с блокировкой схемы данных. В этот момент transaction log может вырасти до размеров самой базы. Работающих пользователей в этот момент лучше выгнать поскольку с огромной вероятностью работающие пользователи дадут deadlock.

Тип num является базовым для большинства кодов в Аксапте. Изменение выравнивания в базовом типе приведет к изменению выравнивания очень многих типов (см. иерархию объектов, начиная с num).

После изменения num, стоит поискать среди типов свойство Align со значением Right при помощи стандартного поиска. В стандартном приложении останется с десяток типов (среди них коды журналов), которые также перещелкнуть влево.

См. также http://axapta.mazzy.ru/lib/adjustment/
и примечания внизу.
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: Logger (2).
Старый 30.07.2008, 19:27   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от mazzy Посмотреть сообщение
Этот скрипт рассчитан на то, что выравнивание делается в базе, а дальше старое приложение не работает.
хм.
Я так понимаю что скрипт был сделан для того чтобы можно было перейти на Ax 4.0 - 5.0

Но ведь они тоже используют информацию из SQLDictionary и в контрольном списке обновления для них есть пункт Синхронизация.

Так что даже если старое приложение не работает, проблема остается.

Единственное возможное решение - то что процедура обновления Ax 4.0 принудительно меняет свойства в SQLDictionary. Но проверить так это или нет я сейчас не могу.
Старый 30.07.2008, 19:30   #4  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Я думаю что скрипт скорее всего кривой. Забыли про SQLDictionary
Он не делает запросы select from Insert Into, а просто обновляет записи в таблицах. По идее это должно работать быстрее - меньше нагрузка на БД.
Старый 30.07.2008, 19:43   #5  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Пардон, поспешил - ядро тоже генерит запросы вида Update... ltrim

Никаких Select from Insert into в нем нет.

Так что скрипт получается нафиг не нужен.
Старый 30.07.2008, 19:52   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Logger Посмотреть сообщение
Так что скрипт получается нафиг не нужен.
Угу.

Я промолчу про разработчиков, которые зачастую Аксапты не знают. Хотя очень хочется что-нибудь гадкое сказать
__________________
полезное на axForum, github, vk, coub.
Старый 31.07.2008, 09:03   #7  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Logger Посмотреть сообщение
Так что скрипт получается нафиг не нужен.
Скрипт нужен. Но только для обновления. Дело в том, что согласно процедуре обновления после выполнения скрипта на старой БД - необходимо запустить файл AxDbUpgrade.exe - код которого скрыт в EXE-шнике. По своему опыту скажу - что этот EXE-шник в основном только что и делает - как переливает таблицы из одной БД в другую. Т.е. тупо CREATE TABLE ..., INSERT INTO ... Нюанс состоит в том, что он делает не только переливание. Он еще правит SQLDictionary и еще делает ряд отметок. Что конкретно - не изучал - но то что он делает еще что-то - с этим сталкивался.

Зачем разработчики в MS сделали именно так? Не знаю. Пусть это останется на их совести. Нам лишь нужно знать, как выполнять процедуру обновления и что этот скрипт LeftJustify больше применять нигде нельзя кроме как при обновлении.

Кстати - еще один момент - о котором забыли разработчики этого скрипта. Декларировав, что в 4-ке (я говорю о переходе 3->4) нет типов с выравниванием вправо разработчики "забыли" о российских модулях (Зарплата и Кадры, ОСы). Там ничего не поменялось. В связи с этим этот скрипт пришлось дописывать, чтобы исключить выравнивание влево типов данных из российских модулей.
__________________
Возможно сделать все. Вопрос времени
Старый 31.07.2008, 12:02   #8  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Сообщение от sukhanchik
...
В связи с этим этот скрипт пришлось дописывать, чтобы исключить выравнивание влево типов данных из российских модулей.
...
Правильнее было бы в 4.0 отечественные типы выровнять влево, не правя при этом скрипт. IMHO.
__________________
С уважением,
glibs®
Старый 31.07.2008, 14:34   #9  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от glibs Посмотреть сообщение
Правильнее было бы в 4.0 отечественные типы выровнять влево, не правя при этом скрипт. IMHO.
В идеологии буржуйского МС - да. Но как раз лучше ничего не трогать. Ибо нечего делать работу за сотрудников российского МСа. Они же все равно рано или поздно эту работу проделают. А если проделают - то сами же будем мучаться - удалять код из слоя из приложения. Если не проделают - значит и нам трудиться не надо. Нам - пользователям системы - какая фиг разница куда все выровнено?
__________________
Возможно сделать все. Вопрос времени
Старый 31.07.2008, 14:42   #10  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Сообщение от sukhanchik
...
Нам - пользователям системы - какая фиг разница куда все выровнено?
...
Ну... как скажете.

Насчет не трогать... да, действительно. Есть места. В кассе, например, строковые типы сравниваются на "<", ">" (больше или меньше).
__________________
С уважением,
glibs®
Теги
ax2009, ax3.0, ax4.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX: Managing Your Supply Chain Using Microsoft Dynamics AX 2009 - Book Review Blog bot DAX Blogs 0 31.03.2009 23:06
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
Arijit Basu: AX 2009 - Quick Overview Blog bot DAX Blogs 4 19.05.2008 14:47
Arijit Basu: Reporting & BI in AX: An Overview [Level 100] Blog bot DAX Blogs 0 07.01.2008 16:01
Выравнивание Num влево последствия... 36AC DAX: Программирование 31 09.06.2007 16:13

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 06:03.