04.07.2007, 17:49 | #21 |
Участник
|
Кстати, ограничение в 7 таблиц - аксаптовское или откуда (хотя, наверное, для SQL server это маловато)?
|
|
04.07.2007, 21:35 | #22 |
MCT
|
Понятие 7 как магического числа таблиц для формы было введено wamr. Ссылку найти не смог.
Ключ символьного типа юзается в аксапте из за номерных серий на мой взгляд. Хотя использование integer увеличило бы performance select-а. Например в 1С так и происходит. |
|
04.07.2007, 23:09 | #23 |
Участник
|
Есть ли количественные оценки выгоды от перехода str --> int?
|
|
04.07.2007, 23:21 | #24 |
Member
|
В плане места было тут (там укорачивался символьный код в ключевых полях, но эффект будет такой же)
http://axapta.mazzy.ru/lib/adjustment/ В плане производительности не припоминаю. Но можно поставить какой-нибудь эксперимент. Я не сомневаюсь в преимуществах коротких кодов в целом (даже эксперимент ставить лень).
__________________
С уважением, glibs® |
|
05.07.2007, 01:13 | #25 |
Участник
|
Почему проблема?
Цитата:
Цитата:
И слава богу, что не занимается. Потому что простой select по одной таблице автоматически превратился в грандиозный запрос с кучей join'ов. Кроме того, в Аксапте есть наименования на разных языках... Ты видимо с 1Сv8 не работал и не видел ошибку "в запросе не может быть более 256 таблиц...". В последних релизах патч сделали - собирают несколько разных запросов. И добавлю еще: там где это действительно нужно, Аксапта нисколько не мешает программисту добавить свои join'ы, чтобы показать наименование. Цитата:
Оставляет на откуп программисту. Вот ведь сволочь то какая... А ты считал сколько наименований надо приджойнить для того, чтобы показать например номенклатуру? Нет? Посчитай. Цитата:
Блин, ей богу не ожидал. Ну, не делает она сама запросы. Не нагружает она сервер. И слава богу. Ни в коем случае не программировать как говорят некоторые. Или программировать в крайнем случае, когда клиент уж совсем уперся. Но четко осозновая, что для каждого наименования получится дополнительный join. Со всеми вытекающими последствиями для производительности. Цитата:
Сообщение от belugin
Я встречал два противоположных способа и их горячих сторонников.
1. Идентификаторы делают длинными и осмысленными -- соотвественно они требуют переименования при изменении названия значения 2. Идентификаторы делают неосмысленными или они содержат небольшой условный префикс и номер типа спирт001. а также http://forum.mazzy.ru/index.php?showtopic=82 Цитата:
Какой по вашему должны быть структура справочника?
справочник должен быть линейным с кучей дополнительных таблиц для группировки (см. неоднократные обсуждения здесь и на форуме у маззи про деревья) ты наверное спрашивал про структуру кода. Цитата:
Есть ли у вас проблема того,что пользователи требуют фильтрацию по наименованию прямо в гриде?
Цитата:
Цитата:
Цитата:
Цитата:
Также сделайте поиск по слову суррогатный и естественный. Цитата:
Сообщение от Владимир Максимов
Суть в том, что таблица-справочник цепляется по JOIN к основной таблице и в Grid отображаются напрямую поля из таблицы-справочника. Никаких дисплейных методов и дополнительных полей.
Работают все штатные механизмы поиска и фильтрации. Более того, через расширенное окно поиска можно задать критерии отбора по полям, не отображаемым на форме. Да, но вместо одной таблицы получаем кучу связанных таблиц. Да, но никакого delayed join, только inner. Со всеми вытекающими проблемами произодительности при навигации стрелками. Цитата:
Цитата:
Сообщение от belugin
Мне нравится понятие искусственный ключ.
См. также: http://sql.ru/forum/actualthread.aspx?tid=104535 И еще: Нумератор строковый, а не числовой, чтобы можно было делать суффиксы-префиксы. Числовой был раньше. Еще в конкорде. Там приходилось выделять диапазоны чисел. Например, с 1000 по 3999 идут клиенты, а с 4000 по 6999 - поставщики. В Аксапте 2.1 пошли на компромисс и снижение производительности ради наглядности кода. (но ради совместимости с Конкордом сохранили выравнивание вправо) В Аксапте 4.0 наконец-то отказались от выравнивания вправо (по умолчани все коды выравняны влево) |
|
|
За это сообщение автора поблагодарили: belugin (5). |
05.07.2007, 02:44 | #26 |
Участник
|
Здрассти... известный глюк парсера запросов в трешке. Уже и официально в MBS в 2005-м году писали об этом, и с порядком соединения datasource'ов люди шаманили, и выяснили, что вроде как глюки начинаются только со "2-го уровня" join, и даже что там, где на Ms SQL вылезает данный глюк, при использовании Oracle может быть все ok.
|
|
05.07.2007, 09:50 | #27 |
MCT
|
Цитата:
Есть ли количественные оценки выгоды от перехода str --> int?
|
|
05.07.2007, 10:00 | #28 |
Участник
|
Термины.
Искусственный ключ -- сгенерированный ключ, который используется пользователем и внутри базы данных (например, EmplID) Суррогатный ключ -- сегнерированный ключ, который используется только внутри базы данных. Точки зрения сторонников EK и СК изложены тут: СК: Natural Keys Versus Artificial Keys by Tentser (Russian) ЕК: Ключ или отмычка Цитата:
Цитата:
Ты видимо с 1Сv8 не работал и не видел ошибку "в запросе не может быть более 256 таблиц...". В последних релизах патч сделали - собирают несколько разных запросов.
Еще мне очень нравится понятие graceful degradation -- делаем что можем, если что-то не можем, то делаем только это. Например, если формировальщик запроса видит, что количество таблиц в джоине превышает 256, то он реализует вывод наименований дисплей методами, причем только тех, которые мешаются. Цитата:
И добавлю еще: там где это действительно нужно, Аксапта нисколько не мешает программисту добавить свои join'ы, чтобы показать наименование.
2. Она не дает фильтровать по аутерджоинам Цитата:
Ай-ай-ай... Ну, не создает эта собака дополнительные запросы.
Оставляет на откуп программисту. Вот ведь сволочь то какая... X++: display InventName inventName() { return InventTable::find(this.ItemID).Name; } Цитата:
А ты считал сколько наименований надо приджойнить для того, чтобы показать например номенклатуру?
Нет? Посчитай. 1. Опционально 2. Не обязательно джоинить Цитата:
Ай-ай-ай... А в запросе CTRL+F3 добавить таблицу руками и записать запрос никак?
Блин, ей богу не ожидал. Цитата:
Ни в коем случае не программировать как говорят некоторые.
Или программировать в крайнем случае, когда клиент уж совсем уперся. Но четко осозновая, что для каждого наименования получится дополнительный join. Со всеми вытекающими последствиями для производительности. Вопрос про ЕК такой: что вы делаете когда он меняется? Например был клиент "Светик" а стал "Мотылек"? Или изменилось структура групп номенклатуры вместо ПЛ0001 (Группа "плюшевые игрушки", изделие 0001 "Медвежонок "Миша"") МЛ0001 (Группа "плюшевые игрушки для младшего возраста", , изделие 0001 "Медвежонок "Миша"") переименовываете первичный ключ, даже если он участвует в InventTrans и иногда его надо сопоставлять с распечатанными год назад документами? |
|
|
За это сообщение автора поблагодарили: Logger (1). |
05.07.2007, 10:38 | #29 |
Участник
|
Цитата:
А каково твое определение для ЕК? А... с этим согласен. Цитата:
Сообщение от belugin
Еще мне очень нравится понятие graceful degradation -- делаем что можем, если что-то не можем, то делаем только это.
Понятно, что они могут все в рамках заданного бюджета (и в пределах разумного ) А реально, что мы можем с этим сделать? Написать скрипты редактора по созданию таких методов? Цитата:
Не, этот пример не катит. Если уж я чего-то пишу в коде, то не стоит сваливать на аксапту, по-моему А вот если я не пишу, а работаю только свойствами и объектами AOT... Цитата:
Нужно показывать одно поле Name? Вместе с полем NameAlias? Вместе с полем, которое показывает Название на текущем/другом языке? Цитата:
Сообщение от belugin
Вопрос про ЕК такой: что вы делаете когда он меняется? Например был клиент "Светик" а стал "Мотылек"? Или изменилось структура групп номенклатуры вместо
... переименовываете первичный ключ, даже если он участвует в InventTrans и иногда его надо сопоставлять с распечатанными год назад документами? Если сохранять историю обязательно, то создается новая запись, а старая блокируется от использования. |
|
05.07.2007, 10:52 | #30 |
Участник
|
ЕК ключ который генерируется вне системы => вне нашего контроля (типа наименование, или ИНН или что-то еще). Т.е. имеет бизнес-значение.
Цитата:
Хм... Понятно, что мы можем громко кричать и требовать от разработчиков Аксапты.
Понятно, что они могут все в рамках заданного бюджета (и в пределах разумного ) Цитата:
А реально, что мы можем с этим сделать?
Написать скрипты редактора по созданию таких методов? Цитата:
чтобы "собака аксапта выбирала не все поля, а только Name" надо не find вызывать, а делать select по одному полю.
Цитата:
Не, этот пример не катит.
Если уж я чего-то пишу в коде, то не стоит сваливать на аксапту, по-моему А вот если я не пишу, а работаю только свойствами и объектами AOT... Цитата:
Как именно? Показывать наименование?
Нужно показывать одно поле Name? Вместе с полем NameAlias? Вместе с полем, которое показывает Название на текущем/другом языке? Цитата:
Если сохранять историю не обязательно (как с группами номенклатуры), то переименование.
|
|
05.07.2007, 11:27 | #31 |
Участник
|
Цитата:
Сообщение от belugin
Вопрос про ЕК такой: что вы делаете когда он меняется? Например был клиент "Светик" а стал "Мотылек"? Или изменилось структура групп номенклатуры вместо
ПЛ0001 (Группа "плюшевые игрушки", изделие 0001 "Медвежонок "Миша"") МЛ0001 (Группа "плюшевые игрушки для младшего возраста", , изделие 0001 "Медвежонок "Миша"") переименовываете первичный ключ, даже если он участвует в InventTrans и иногда его надо сопоставлять с распечатанными год назад документами?
Цитата:
Да, еще приходилось в заголовках форм выводить управленческие названия вместо TitleField2... Последний раз редактировалось gl00mie; 05.07.2007 в 11:33. Причина: typo |
|
|
За это сообщение автора поблагодарили: belugin (3). |
05.07.2007, 11:47 | #32 |
Moderator
|
Цитата:
Есть ли количественные оценки выгоды от перехода str --> int?
Ну и по хорошему - надо еще помнить о том что в странице на каждый ключ еще добавляется 6-8 байтов служебной информации со ссылками. Поэтому - если ключи и так были короткие, то особого прорыва не случиться. |
|
05.07.2007, 11:47 | #33 |
Участник
|
Цитата:
А... да, почему бы не сделать это? Цитата:
И где они распространены? Здесь я пытался понять почему же проклятые буржуи используют код, а не наименование. http://axapta.mazzy.ru/lib/autonumber/ А ведь действительно, клиенты-поставщики у них просто нумеруются. Причем не только в Аксапте/Навижине. Погляди на интернет магазины, посмотри на другие системы (кстати, а как это делается в BAAN?) Цитата:
Сообщение от belugin
Я уже предложил см. Правильные справочники
Да. Это разовая процедура. Требуется раз в полстолетия. А ты предлагаешь делать join каждый раз? Цитата:
Поскольку: нарушается нормализация первой формы. Цитата:
Сообщение от gl00mie
На это все накладывалась еще одна особенность, связанная с тем, что для одной номенклатуры необходимо поддерживать три различных названия: бухгалтерское, управленческое для AX, схожее с тем, что пишут поставщики в своих документах, и управленческое для 1С, к которому привыкли все кладовщики и другого понимать они не хотят.
Максим, будешь создавать 3 EDT или просить добавить в EDT массив наименований? Цитата:
http://axapta.mazzy.ru/lib/tree/ http://axapta.mazzy.ru/lib/tree2/ http://axapta.mazzy.ru/lib/tree3/ а также: http://forum.mazzy.ru/index.php?showtopic=1275 Цитата:
Особенно согласен с формулировкой "ряд форм". Немножко смущает, что нет формулировки "ряд отчетов". |
|
05.07.2007, 11:50 | #34 |
Участник
|
Цитата:
Сообщение от belugin
Я уже предложил см. Правильные справочники
|
|
05.07.2007, 12:09 | #35 |
Участник
|
Цитата:
Цитата:
|
|
05.07.2007, 13:11 | #36 |
Участник
|
В баане геренирование идентификаторов, насколько я знаю, польностью возложено на пользователей. Т.к. я работал в-основном с нестандартным функционалом, то не знаю, как там с клиентами...
|
|
05.07.2007, 13:35 | #37 |
Участник
|
Ну ИК может иметь, а СК - нет.
Цитата:
Что такое "распространненные вещи"?
И где они распространены? Здесь я пытался понять почему же проклятые буржуи используют код, а не наименование. Цитата:
А ты предлагаешь делать join каждый раз?
Цитата:
Максим, будешь создавать 3 EDT или просить добавить в EDT массив наименований?
|
|
05.07.2007, 13:38 | #38 |
Axapta
|
|
|
05.07.2007, 13:42 | #39 |
Участник
|
|
|
05.07.2007, 14:13 | #40 |
Участник
|
Цитата:
Про Абрамову уже говорили. Если она замуж выйдет, то стандартная процедура RenamePrimaryKey для изменения КОДА |
|