17.01.2007, 09:49 | #1 |
Участник
|
Выравнивание Num влево последствия...
Проблема. У EDT Num поменяли выравнивание, в результате чего. У наследников Num выравнивание поменялось, а на полях таблиц где EDT наследники Num (в свойствах) выравнивание осталось вправо. Но при этом вновь введенные данные в эти поля, выравниваются как завещал NUm, те влево, а те данные которые были в таблицах, добавили перед значимой информацией кучу пробелов (те например вместо "SalesId", получили в результате наших монипуляций " SalesId").
Вопросы: 1. Как не перебирая свойства всех таблиц изменить корректное отображение в свойствах оных выравнивания. 2. Как избавиться от появишихся пробелов |
|
17.01.2007, 10:16 | #2 |
Member
|
Опять поставить выравнивание вправо, а потом влево. По-моему, мне так помогало.
Только делать нужно на рабочей базе, а не на разработческой. Если тупо подложить слой, то синхронизация уже не поймет что произошло, и пробелы не порежет.
__________________
С уважением, glibs® |
|
|
За это сообщение автора поблагодарили: 36AC (1). |
17.01.2007, 10:26 | #3 |
Участник
|
Спсб, вечерком попробуем...
|
|
17.01.2007, 11:01 | #4 |
Участник
|
|
|
17.01.2007, 11:24 | #5 |
Участник
|
Совет опасный, поскольку после выравнивания уже введены новые записи с выравниванием.
Если вопрос от той компании с которой мы разговаривали вчера , то мы обсуждали этот вариант, но посчитали его рискованным. Скорее всего, вы изменили тип, но не выполнили синхронизацию. Синхронизация при изменении выравнивания на вашей базе и на вашем сервере должна выполняться несколько часов. Я рекомендовал оставить ее на субботу-воскресенье. Опять же, если вопрос от той компании с которой мы общались вчера, то для вас сейчас важна надежность решения: После процедуры исправления ВСЕ данные должны быть корректными. К сожалению, выравнивание в обратную сторону не даст надежности, поскольку у вас уже введены новые данные с новым выравниванием. Я предложил следующий вариант: 1. SQL скриптом перебрать все таблицы и все строковые поля. 2. убрать левые пробелы 3. записать измененную запись (только в том случае, если что-то изменилось) этот вариант предполагает, что у вас нет данных со значимыми левыми пробелами (если это та компания, о которой я думаю, то похоже это предположение истинно). В общем, раз уж произошла такая фигня, то нужно искать вариант, который на 100% надежно решит проблему. Будет чертовски неприятно, если какие-то таблицы останутся несвязанными. |
|
17.01.2007, 12:05 | #6 |
Участник
|
Никаких если) вопрос от той компании с которой Вы разговаривали вчера! Просто тот с кем Вы разговаривали приходит на работу несколько позже других, правда и уходит соответственно! ;-) так вот появилось время спросить, я и спросил, получив ответ glibs изложил его, тому с кем вчера Вы имели беседу, получил ответ ИЗЛОЖЕННЫЙ ВЫШЕ) Но решили поэксперементировать с тестовыми данными, на первый взгляд все ок, прочитав ответ mazzy углублюсь в проверку связей)
|
|
17.01.2007, 12:18 | #7 |
Member
|
Цитата:
Сообщение от mazzy
...
Совет опасный, поскольку после выравнивания уже введены новые записи с выравниванием. ... Я так понял, что стояла задача избавиться от лидирующих пробелов для полей, которые унаследованы от определенного расширенного типа данных. Причем пробелы сейчас стоят не везде. И ссылочная целостность уже нарушена.
__________________
С уважением, glibs® |
|
17.01.2007, 12:25 | #8 |
Участник
|
|
|
17.01.2007, 12:28 | #9 |
Участник
|
Да.
Никак не могу придумать более-менее быстрый и более-менее надежный способ, который показал бы нарушенные связи. По длительности выполнения и трудоемкости создания проверка сопоставима с исправительным скриптом. Поэтому, по-моему, проще просто создать исправительный скрипт и прогнать его. Результат получится гарантированным. Может кто из участников подскажет, как можно быстро проверить целостность связей в таких случаях? |
|
17.01.2007, 12:36 | #10 |
Member
|
Ну и чем плохо решение подрезать лидирующие пробелы везде (во всех полях, которые унаследованы от определенного расширенного типа)?
__________________
С уважением, glibs® |
|
17.01.2007, 12:44 | #11 |
Участник
|
Могли забить что-то с пробелами и это-же без пробелов в поле, входящем в уникальный индекс.
__________________
Axapta v.3.0 sp5 kr2 |
|
17.01.2007, 12:54 | #12 |
Модератор
|
Ручное изменение Adjustment надежнее скрипта (человеческий фактор, так сказать)
__________________
-ТСЯ или -ТЬСЯ ? |
|
17.01.2007, 12:54 | #13 |
Member
|
Если это одна и та же сущность, то исправимо. Через Проверка/Синхронизация.
Хотя согласен, неприятно. Но такого в справочниках быть не должно, если есть порядок в головах. А в транзакционных таблицах такая уникальность для чего-то используется (в смысле есть примеры)? В общем, не исключено... но не должно по-хорошему.
__________________
С уважением, glibs® |
|
17.01.2007, 13:10 | #14 |
Участник
|
Цитата:
1. выравняли влево некорректно (остались записи с левыми пробелами), 2. создали несколько записей с кодами, выровнянными влево после этого выравнивание вправо везде добавит левые пробелы? Не останется ли смешанного варианты выравнивания? Есть ли способ проверить, что во всех полях во всей базе выравнивание одинаковое? |
|
17.01.2007, 13:19 | #15 |
Участник
|
А с чего ты взял, что одна и та же?
Например, InvenDim выравнялся влево, а InventTrans, SalesLine и т.п. - нет. Есть ли способ проверить для разных сущностей? Я понимаю, что, скорее всего, произошло следующее. Изменили выравнивание влево, Аксапта начала синхронизацию, администратор сказал "ой" (по разным причинам) и прибил транзакцию. В результате база выравняна одним способом, а в AOT указан другой способ. Потом начали забивать новые данные. Скорее всего пользовались lookup'ом и левые пробелы в Foreign Key попадали, а в Primary Key - нет (т.е. новый номер заказа левых пробелов не содержит, а ссылка на номенклатуру - содержит) Я понимаю, что, скорее всего, Primary Key и Foreign Key выравняны одинаково. Но нужна 100% уверенность. Как раз 100% уверенности, лично у меня, нет. Особенно для технических таблиц (*Settletent, *Posting, InventDim и т.п.) Самым надежным и пока самым простым способом пока считаю SQL-скрипт, который перебирает все текстовые поля во всех таблицах и убирает левые пробелы. |
|
17.01.2007, 13:24 | #16 |
Member
|
Цитата:
Сообщение от mazzy
...
после этого выравнивание вправо везде добавит левые пробелы? ... Цитата:
Сообщение от mazzy
...
Не останется ли смешанного варианты выравнивания? ... Цитата:
Сообщение от mazzy
...
Есть ли способ проверить, что во всех полях во всей базе выравнивание одинаковое? ...
__________________
С уважением, glibs® |
|
17.01.2007, 13:36 | #17 |
Участник
|
Цитата:
Сохранить найденные таблицы и поля в промежуточную таблицу и уже по ней вносить исправления в б/д.
__________________
Axapta v.3.0 sp5 kr2 |
|
17.01.2007, 13:43 | #18 |
Member
|
Цитата:
Сообщение от mazzy
...
А с чего ты взял, что одна и та же? ... Т.е. если под "123" и " 123" пользователь понимает одно и то же, то хорошо. Но если он под "123" уже понимает одно, а под " 123" — другое, то вот это проблема. И обрезанием пробелов она не вылечится.
__________________
С уважением, glibs® |
|
17.01.2007, 13:51 | #19 |
Модератор
|
Цитата:
Цитата:
после этого выравнивание вправо везде добавит левые пробелы?
Цитата:
Не останется ли смешанного варианты выравнивания?
Цитата:
Есть ли способ проверить, что во всех полях во всей базе выравнивание одинаковое?
SQLDICTIONARY.RIGHTJUSTIFY DictType.setStringRight()
__________________
-ТСЯ или -ТЬСЯ ? |
|
17.01.2007, 13:58 | #20 |
Модератор
|
Цитата:
Цитата:
просьба увеличить кредитный лимит по клиенту " Вася_Пупкин" (по тому, который с двумя пробелами в коде слева, клиента "Вася_Пупкин" не трогать)
__________________
-ТСЯ или -ТЬСЯ ? |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Выравнивание в репортах | 4 | |||
Ax 3.0 выравнивание влево | 9 | |||
Выравнивание для ItemId | 0 | |||
Изменение выравнивания EDT NUM | 12 | |||
Прижатие данных влево или вправо | 1 |
|