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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.01.2007, 09:49   #1  
36AC is offline
36AC
Участник
Аватар для 36AC
 
28 / 11 (1) +
Регистрация: 30.06.2005
Адрес: город М
? Выравнивание Num влево последствия...
Проблема. У EDT Num поменяли выравнивание, в результате чего. У наследников Num выравнивание поменялось, а на полях таблиц где EDT наследники Num (в свойствах) выравнивание осталось вправо. Но при этом вновь введенные данные в эти поля, выравниваются как завещал NUm, те влево, а те данные которые были в таблицах, добавили перед значимой информацией кучу пробелов (те например вместо "SalesId", получили в результате наших монипуляций " SalesId").
Вопросы:
1. Как не перебирая свойства всех таблиц изменить корректное отображение в свойствах оных выравнивания.
2. Как избавиться от появишихся пробелов
Старый 17.01.2007, 10:16   #2  
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
Опять поставить выравнивание вправо, а потом влево. По-моему, мне так помогало.

Только делать нужно на рабочей базе, а не на разработческой. Если тупо подложить слой, то синхронизация уже не поймет что произошло, и пробелы не порежет.
__________________
С уважением,
glibs®
За это сообщение автора поблагодарили: 36AC (1).
Старый 17.01.2007, 10:26   #3  
36AC is offline
36AC
Участник
Аватар для 36AC
 
28 / 11 (1) +
Регистрация: 30.06.2005
Адрес: город М
Спсб, вечерком попробуем...
Старый 17.01.2007, 11:01   #4  
36AC is offline
36AC
Участник
Аватар для 36AC
 
28 / 11 (1) +
Регистрация: 30.06.2005
Адрес: город М
Цитата:
Сообщение от glibs Посмотреть сообщение
Опять поставить выравнивание вправо, а потом влево. По-моему, мне так помогало.
Не стал ждать до вечера на тестовой базе провел эксперимент. Выровнил вправо влево все стало ОК, так как доктор прописал!
Старый 17.01.2007, 11:24   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от glibs Посмотреть сообщение
Опять поставить выравнивание вправо, а потом влево.
Совет опасный, поскольку после выравнивания уже введены новые записи с выравниванием.

Если вопрос от той компании с которой мы разговаривали вчера , то
мы обсуждали этот вариант, но посчитали его рискованным.

Скорее всего, вы изменили тип, но не выполнили синхронизацию.
Синхронизация при изменении выравнивания на вашей базе и на вашем сервере должна выполняться несколько часов. Я рекомендовал оставить ее на субботу-воскресенье.

Опять же, если вопрос от той компании с которой мы общались вчера,
то для вас сейчас важна надежность решения: После процедуры исправления ВСЕ данные должны быть корректными. К сожалению, выравнивание в обратную сторону не даст надежности, поскольку у вас уже введены новые данные с новым выравниванием.

Я предложил следующий вариант:
1. SQL скриптом перебрать все таблицы и все строковые поля.
2. убрать левые пробелы
3. записать измененную запись (только в том случае, если что-то изменилось)

этот вариант предполагает, что у вас нет данных со значимыми левыми пробелами (если это та компания, о которой я думаю, то похоже это предположение истинно).

В общем, раз уж произошла такая фигня, то
нужно искать вариант, который на 100% надежно решит проблему.
Будет чертовски неприятно, если какие-то таблицы останутся несвязанными.
__________________
полезное на axForum, github, vk, coub.
Старый 17.01.2007, 12:05   #6  
36AC is offline
36AC
Участник
Аватар для 36AC
 
28 / 11 (1) +
Регистрация: 30.06.2005
Адрес: город М
Никаких если) вопрос от той компании с которой Вы разговаривали вчера! Просто тот с кем Вы разговаривали приходит на работу несколько позже других, правда и уходит соответственно! ;-) так вот появилось время спросить, я и спросил, получив ответ glibs изложил его, тому с кем вчера Вы имели беседу, получил ответ ИЗЛОЖЕННЫЙ ВЫШЕ) Но решили поэксперементировать с тестовыми данными, на первый взгляд все ок, прочитав ответ mazzy углублюсь в проверку связей)
Старый 17.01.2007, 12:18   #7  
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
Цитата:
Сообщение от mazzy
...
Совет опасный, поскольку после выравнивания уже введены новые записи с выравниванием.
...
Это как?

Я так понял, что стояла задача избавиться от лидирующих пробелов для полей, которые унаследованы от определенного расширенного типа данных. Причем пробелы сейчас стоят не везде. И ссылочная целостность уже нарушена.
__________________
С уважением,
glibs®
Старый 17.01.2007, 12:25   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от glibs Посмотреть сообщение
И ссылочная целостность уже нарушена.
В том то и дело.
__________________
полезное на axForum, github, vk, coub.
Старый 17.01.2007, 12:28   #9  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от 36AC Посмотреть сообщение
углублюсь в проверку связей
Да.

Никак не могу придумать более-менее быстрый и более-менее надежный способ, который показал бы нарушенные связи. По длительности выполнения и трудоемкости создания проверка сопоставима с исправительным скриптом.

Поэтому, по-моему, проще просто создать исправительный скрипт и прогнать его.
Результат получится гарантированным.

Может кто из участников подскажет, как можно быстро проверить целостность связей в таких случаях?
__________________
полезное на axForum, github, vk, coub.
Старый 17.01.2007, 12:36   #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
Ну и чем плохо решение подрезать лидирующие пробелы везде (во всех полях, которые унаследованы от определенного расширенного типа)?
__________________
С уважением,
glibs®
Старый 17.01.2007, 12:44   #11  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Могли забить что-то с пробелами и это-же без пробелов в поле, входящем в уникальный индекс.
__________________
Axapta v.3.0 sp5 kr2
Старый 17.01.2007, 12:54   #12  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Ручное изменение Adjustment надежнее скрипта (человеческий фактор, так сказать)
__________________
-ТСЯ или -ТЬСЯ ?
Старый 17.01.2007, 12:54   #13  
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
Если это одна и та же сущность, то исправимо. Через Проверка/Синхронизация.

Хотя согласен, неприятно.

Но такого в справочниках быть не должно, если есть порядок в головах. А в транзакционных таблицах такая уникальность для чего-то используется (в смысле есть примеры)?

В общем, не исключено... но не должно по-хорошему.
__________________
С уважением,
glibs®
Старый 17.01.2007, 13:10   #14  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Vadik Посмотреть сообщение
Ручное изменение Adjustment надежнее скрипта (человеческий фактор, так сказать)
После того, как:
1. выравняли влево некорректно (остались записи с левыми пробелами),
2. создали несколько записей с кодами, выровнянными влево

после этого выравнивание вправо везде добавит левые пробелы?
Не останется ли смешанного варианты выравнивания?
Есть ли способ проверить, что во всех полях во всей базе выравнивание одинаковое?
__________________
полезное на axForum, github, vk, coub.
Старый 17.01.2007, 13:19   #15  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от glibs Посмотреть сообщение
Если это одна и та же сущность, то исправимо.
А с чего ты взял, что одна и та же?

Например, InvenDim выравнялся влево, а InventTrans, SalesLine и т.п. - нет.

Есть ли способ проверить для разных сущностей?

Я понимаю, что, скорее всего, произошло следующее.
Изменили выравнивание влево,
Аксапта начала синхронизацию, администратор сказал "ой" (по разным причинам) и прибил транзакцию.
В результате база выравняна одним способом, а в AOT указан другой способ.
Потом начали забивать новые данные.
Скорее всего пользовались lookup'ом и левые пробелы в Foreign Key попадали, а в Primary Key - нет (т.е. новый номер заказа левых пробелов не содержит, а ссылка на номенклатуру - содержит)

Я понимаю, что, скорее всего, Primary Key и Foreign Key выравняны одинаково.
Но нужна 100% уверенность.
Как раз 100% уверенности, лично у меня, нет.
Особенно для технических таблиц (*Settletent, *Posting, InventDim и т.п.)

Самым надежным и пока самым простым способом пока считаю SQL-скрипт, который перебирает все текстовые поля во всех таблицах и убирает левые пробелы.
__________________
полезное на axForum, github, vk, coub.
Старый 17.01.2007, 13:24   #16  
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
Цитата:
Сообщение от mazzy
...
после этого выравнивание вправо везде добавит левые пробелы?
...
Должны. Нужно делать в однопользовательском режиме.
Цитата:
Сообщение от mazzy
...
Не останется ли смешанного варианты выравнивания?
...
Если планируется возврат к выравниванию влево, то это не принципиально.
Цитата:
Сообщение от mazzy
...
Есть ли способ проверить, что во всех полях во всей базе выравнивание одинаковое?
...
Штатный — по-моему нет.
__________________
С уважением,
glibs®
Старый 17.01.2007, 13:36   #17  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от mazzy Посмотреть сообщение
Самым надежным и пока самым простым способом пока считаю SQL-скрипт, который перебирает все текстовые поля во всех таблицах и убирает левые пробелы.
Что бы не трогать все таблицы и поля можно сначала из Axapta'ы пробежаться по AOT'у и выбрать таблицы, в которых есть поля с EDT num или его наследниками.
Сохранить найденные таблицы и поля в промежуточную таблицу и уже по ней вносить исправления в б/д.
__________________
Axapta v.3.0 sp5 kr2
Старый 17.01.2007, 13:43   #18  
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
Цитата:
Сообщение от mazzy
...
А с чего ты взял, что одна и та же?
...
Я имел в виду, что если речь идет о технической ошибке.

Т.е. если под "123" и " 123" пользователь понимает одно и то же, то хорошо.

Но если он под "123" уже понимает одно, а под " 123" — другое, то вот это проблема. И обрезанием пробелов она не вылечится.
__________________
С уважением,
glibs®
Старый 17.01.2007, 13:51   #19  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от mazzy Посмотреть сообщение
После того, как:
1. выравняли влево некорректно (остались записи с левыми пробелами),
2. создали несколько записей с кодами, выровнянными влево
ты же не хочешь написать универсальный скрипт, который проанализирует и исправит все-все ошибки во всех-всех таблицах? это мы уже проходили (тема о дефрагментации RecId)

Цитата:
после этого выравнивание вправо везде добавит левые пробелы?
да

Цитата:
Не останется ли смешанного варианты выравнивания?
"смешанные варианты" - это не запущенная по каким-то причинам или непрошедшая по ошибке (то же нарушение уникальности) синхронизация для таблицы

Цитата:
Есть ли способ проверить, что во всех полях во всей базе выравнивание одинаковое?
DictType.extend()
SQLDICTIONARY.RIGHTJUSTIFY
DictType.setStringRight()
__________________
-ТСЯ или -ТЬСЯ ?
Старый 17.01.2007, 13:58   #20  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от glibs Посмотреть сообщение
Но если он под "123" уже понимает одно, а под " 123" — другое, то вот это проблема. И обрезанием пробелов она не вылечится.
эта проблема - в головах юзеров

Цитата:
просьба увеличить кредитный лимит по клиенту " Вася_Пупкин" (по тому, который с двумя пробелами в коде слева, клиента "Вася_Пупкин" не трогать)
отчеты после этого тоже весьма забавные будут печататься

__________________
-ТСЯ или -ТЬСЯ ?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Выравнивание в репортах Alexanderrrr DAX: Программирование 4 01.04.2009 12:50
Ax 3.0 выравнивание влево Logger DAX: Программирование 9 31.07.2008 14:42
Выравнивание для ItemId exceptor DAX: Программирование 0 17.11.2005 17:39
Изменение выравнивания EDT NUM jaran DAX: Программирование 12 22.04.2005 09:57
Прижатие данных влево или вправо studentLPC DAX: Программирование 1 16.07.2003 11:43
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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