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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.01.2009, 10:59   #21  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
В Вашем списке выборочно посмотрел поля - у них тип Контейнер, а не String (MEMO).
О! Отлично. Мне такой способ в голову не приходил.
Получилось два несвязанных списка.

Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
В моем списке 195 полей, есть популярные таблицы EmplTable, AssetTable, CustInvoiceLine, RContractTable.
Щас объединю списки, посмотрю и отвечую подробно.
Но пока мне кажется, что изложенные здесь критерии правильности не изменяются.
__________________
полезное на axForum, github, vk, coub.
Старый 29.01.2009, 11:26   #22  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Посмотрел Ваш список, не нашел некоторых таблиц, сделал свой.
Отлично. Объединил списки.
DAX4SP2_memo_full.xls

Всего получилось 263 таблицы (из них 32 удаленные) и 368 полей (из них 55 удаленных).

Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
есть популярные таблицы EmplTable, AssetTable, CustInvoiceLine, RContractTable.
Я не назвал бы эти таблицы популярными.
Но согласен, что запросы по ним проходят достаточно часто.

По поводу EmplTable я бы поморщился и начал говорить о неправильном проектном решении. Но там предполагается хранить только идентификаторы. Они не такие и большие. Хотя конечно неаккуратненько.

В AssetTable также - неаккуратненько, но особого желания кричать "козлы!" не возникает. Там хранятся текстовые комментарии. И вряд ли действительно большие blob-объекты.

RContract... Ну... блин. плохо. Но терпимо.

А вот RCashTrans, rTax25RegisterTrans, rPayRateTrans - просто отвратительно.
Сделал фильтр по trans. Оказывается в проводках находится 18 memo-полей (из них 7 уже удалено). Среди оставшихся 4 в EPTransactionSumTrans, 3 поля в российских таблицах, и 2 в TaxElectronicDeclarationTrans.
Мне кажется, что это стоит исправлять.

Также мне кажется ошибкой наличие Memo-поля в таблицах InventBatch, InventColor, InventSerial, InventSize. Но тут надо подумать. Поскольку здесь вступает в силу соображение о 256 символах. По этим полям всего-лишь нет поиска и индексов.

Думаю, что критерий правильности остается неизменным
Цитата:
вставить memo-поле в inventTrans, LedgerTrans, Currency, ExchRates и т.п. - будет огромной ошибкой, поскольку трафик будет забит этими мемо-полями.
Вставить memo-поле в CompanyInfo или LedgerParameters - будет огромной ошибкой, поскольку кэш забьется этим мемо-полем и перестанет работать как должно. (Обратите внимание на поле DEL_Logo в CompanyInfo )

А вот вставить memo-поле в специальную таблицу CompanyImage или специальную таблицу DocuField - почему бы и нет?
===================
В связи с появлением нового списка встает вопрос: а как лучше создавать memo-поле - как контейнер или как string с длиной memo?

Так есть таблицы, которые содержат поля, заданные разными способами
SysInetCSS
SysInfolog (!)
tutorial_AuctionItems

В aif-таблицах постоянно разный стиль...

Интересно, это имеет какой-то смысл или так получилось?
__________________
полезное на axForum, github, vk, coub.
Старый 29.01.2009, 11:39   #23  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Граждане-товарищи! Не путайте контейнеры и мемо поля!
Суть в том, что контейнер хранится в поле с типом image (blob) - бинарные данные, а мемо - text (varchar(max), clob). Обрабатываются они сервером по разному и на клиенте тоже работают по разному. Если text еще похож в некотором роде на varchar, от image ваще из другой оперы!
Посему считаю неправильным хранить коментарии и что-то текстовое в контейнерах.
За это сообщение автора поблагодарили: mazzy (5), Ivanhoe (1).
Старый 29.01.2009, 11:46   #24  
alex55 is offline
alex55
MCTS
MCBMSS
 
224 / 145 (5) +++++
Регистрация: 13.02.2007
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
В связи с появлением нового списка встает вопрос: а как лучше создавать memo-поле - как контейнер или как string с длиной memo?
..
В aif-таблицах постоянно разный стиль...

Интересно, это имеет какой-то смысл или так получилось?
Насколько я слышал (сам пока не проверил) в Container можно положить до 60 MB. Выше утверждали что в String (Memo) до 16 MB. Ну и MSSQL типы: image и ntext, соответственно.
За это сообщение автора поблагодарили: mazzy (5).
Старый 29.01.2009, 11:55   #25  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от egorych Посмотреть сообщение
Граждане-товарищи! Не путайте контейнеры и мемо поля!
Пожалуй, таки да!

Цитата:
Сообщение от egorych Посмотреть сообщение
Суть в том, что контейнер хранится в поле с типом image (blob) - бинарные данные, а мемо - text (varchar(max), clob). Обрабатываются они сервером по разному и на клиенте тоже работают по разному.
Проблему то они создают одинаковую - AOS и клиент тащит их целиком.
Разве нет?

Цитата:
Сообщение от egorych Посмотреть сообщение
Посему считаю неправильным хранить коментарии и что-то текстовое в контейнерах.
Таки да!
Однако таблица ясно показывает, что разработчики иногда хранят текстовое и в контейнерах.
Например, HRMApplicationWordBookmark, ReqLog

Но в целом, похоже действительно следуют правилу: текст хранится в string(memo), а объекты/изображения/контейнеры в container.

Снова исключением, стоящим за гранью добра и зла, являются Amounts в книгах покупок и продаж

Клевая получилась ветка.
Удалось узнать что-то новое.
Спасибо!
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: Ivanhoe (2).
Старый 29.01.2009, 13:00   #26  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Цитата:
Сообщение от mazzy Посмотреть сообщение
Проблему то они создают одинаковую - AOS и клиент тащит их целиком.
Разве нет?
Вообще-то нет. Если брать text, то когда на сервер уходит запрос select ... то обратно передается только <= 256 символов поля, потом клиент дополнительно запрашивает данные blob поля, если передалось не все. Насчет image точно не знаю, но думаю, алгоритм тот-же.
Старый 29.01.2009, 13:10   #27  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от egorych Посмотреть сообщение
Вообще-то нет. Если брать text, то когда на сервер уходит запрос select ... то обратно передается только <= 256 символов поля, потом клиент дополнительно запрашивает данные blob поля, если передалось не все. Насчет image точно не знаю, но думаю, алгоритм тот-же.
Как это проверить?

А когда "потом" клиент запрашивает? Это "потом" управляется программистом? Если не управляется, то какая разница - сразу или через десяток милисекунд? Сетевой трафик то все равно будет. Может настройки какие есть?
__________________
полезное на axForum, github, vk, coub.
Старый 29.01.2009, 13:16   #28  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Цитата:
Сообщение от mazzy Посмотреть сообщение
Как это проверить?
сделайте запрос в QueryAnaliser (Management studio) к табличке с мемо полем и посмотрите что вернется, ну только чтобы в поле было текста ну с 1000 символов.

Цитата:
Сообщение от mazzy Посмотреть сообщение
А когда "потом" клиент запрашивает? Это "потом" управляется программистом? Если не управляется, то какая разница - сразу или через десяток милисекунд? Сетевой трафик то все равно будет. Может настройки какие есть?
Потом, это например, когда вы в гриде, например переходите на эту запись, а если не перейти, то оно может и не передться. Хотя признаю - Аксапта может и автоматом все это подтягивать на АОС, чтоб не париться Трафик, есс-но будет!
Старый 29.01.2009, 13:31   #29  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от egorych Посмотреть сообщение
QueryAnaliser...
Хотя признаю - Аксапта может и автоматом все это подтягивать на АОС...
Вот-вот. Поэтому QA не показатель
__________________
полезное на axForum, github, vk, coub.
Старый 29.01.2009, 13:49   #30  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от egorych
Вообще-то нет. Если брать text, то когда на сервер уходит запрос select ... то обратно передается только <= 256 символов поля
Цитата:
сделайте запрос в QueryAnaliser (Management studio) к
табличке с мемо полем и посмотрите что вернется
И что же должно вернуться? (см. вложение)
Цитата:
Суть в том, что контейнер хранится в поле с типом image (blob) - бинарные данные, а мемо - text (varchar(max), clob). Обрабатываются они сервером по разному и на клиенте тоже работают по разному
С точки зрения storage engine (in-row, out-row storage) image и text обрабатываются одинаково
Цитата:
Потом, это например, когда вы в гриде, например переходите на эту запись, а если не перейти, то оно может и не передться
И это подтверждается документацией, профайлером, чем-то еще ?
Миниатюры
Нажмите на изображение для увеличения
Название: stringsize.jpg
Просмотров: 515
Размер:	45.3 Кб
ID:	4241  
__________________
-ТСЯ или -ТЬСЯ ?
Старый 29.01.2009, 15:16   #31  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Еще 5 копеек про мемо-поля. Их нельзя впихнуть в условие Where (следствие их неиндексируемости). А также - по ним невозможен поиск.
Ряд консалтиновых компаний используют в своей работе GPT (General Problem Tracker) - систему запросов клиентов с контролем их исполнения. Не знаю - пошла ли терминология от Колумбуса или нет - это неважно. Важно то, что описания задач и комментарии к ним - руки чешутся сделать мемо-полями (типа информации может быть много). Однако - это решение является архитектурной ошибкой (на мой взгляд), т.к. впоследствии возникает задача поиска по запросам или комментариям, а по мемо-полю этого сделать увы - нельзя. Я говорю о GPT, реализованного на Аксапте.

Это в качестве примера. Ряд остальных доводов хорошо расписал Mazzy
Ну есть такое (что-то типа GPT) и мемо поля есть и поиск по ним есть тупой обычным перебором, и скажу я вам особо не тормозит!
и еще поиск по данным полям достаточно редкое явление, по крайней мере у нас.
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/

Последний раз редактировалось blokva; 29.01.2009 в 15:25.
Старый 29.01.2009, 15:33   #32  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Цитата:
Сообщение от Vadik Посмотреть сообщение
И что же должно вернуться? (см. вложение)
Я в курсе про эту настройку, но когда писал программы на чем-то отличном от Аксапты (типа Delphi), то поведение text полей было такое, как я описал. А вот поля типа varchar(8000) брались сразу полностью.
Теги
ax4.0, memo, string, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
HRM,склонение ФИО и все все все OmenSore DAX: Функционал 22 09.02.2009 17:08
Максимальная длина символьного поля CCADOField Владимир Максимов DAX: Программирование 5 11.01.2008 11:32
dax-dilettante: 15. System Classes \ The Collection Classes Blog bot DAX Blogs 0 26.09.2007 23:51
dax-lessons: Active directory in Axapta Blog bot DAX Blogs 0 27.08.2007 23:00
Как в Design из Reports выводить многострочные Fields типа String? bolt DAX: Программирование 1 19.02.2004 16:57
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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