20.06.2007, 14:58 | #1 |
Участник
|
Их надо знать в лицо
Тут сделал джобик, выводящий все таблицы Axapt-ы, конфигурационный ключ, количество записей в таблице и количество перекрёстных ссылок. Запустил на стандарте с демо базой. Потом сделал фильтр. Ссылок > 100, записей не меньше 1. И модули Логиcтика, Торговля, Главная книга + пустые. Получилось 115 таблиц. Интересно можно ли их считать основными таблицами. Кто как считает?
Последний раз редактировалось miklenew; 26.06.2007 в 10:56. |
|
|
За это сообщение автора поблагодарили: mazzy (5). |
20.06.2007, 15:25 | #2 |
Участник
|
классно.
не все эти таблицы входят в набор основных. например km* сильно сторонняя таблица purchPrintCopies тоже сильно вспомогательная. Но для начала очень правильный подход. Выделить основные и сделать для них схему при помощи Visual MorphXlorer или Reverse Enegeneering в Visio... |
|
20.06.2007, 16:29 | #3 |
Moderator
|
"Записей не меньше 1" - это мне понятно. А "ссылок > 100" - это что за критерий, извиняюсь, "основнистости"?
И ссылки какого рода имеются в виду? Любое упоминание о данной таблице в "Перекрестных ссылках" в любом контексте (поле, релэйшн, метод и т.д.)? Ну и сам джобик, наверное, было б полезно выложить сюда тоже. Спасибо. |
|
21.06.2007, 08:11 | #4 |
Участник
|
Вот job.
X++: static void Job10(Args _args) { FileNameSave fileNameSave = "C:\\1.txt"; AsciiIo File; container oneRecord; UtilElements UtilElements; DictTable dictTable; dictConfigurationKey dictConfigurationKey; LoginProperty loginProperty; ODBCConnection odbcConnection; Statement statement; ResultSet result; SqlSystem sqlSystem; str Query; str countStr; XRefReferences XRefReferences; xRefNames xRefNames; int countRef; ; sqlSystem = new SqlSystem(); loginProperty = sqlSystem.createLoginProperty(); odbcConnection = new odbcConnection(loginproperty); Statement = odbcConnection.createStatement(); file = new AsciiIo(fileNameSave, 'W'); if(file) File.write(""); while select UtilElements group by name, recordType { if (enum2str(UtilElements.recordType)=="Table") { dictTable = new DictTable(tablename2id(UtilElements.Name)); if (!dictTable.isTmp() && dictTable.isSql()) { Query ="Select count(recId) from "+dictTable.name(); Result = statement.executeQuery(Query); try { while ( Result.next() ) { countStr=Result.getString(1); } } catch { countStr = "0"; } xRefNames = xRefNames::find(xRefKind::Table,"",dictTable.name()); select count(RecId)from XRefReferences where XRefReferences.referencePathRecId == xRefNames.xRefPathRecId; countRef = XRefReferences.RecId; oneRecord = connull(); if (dictTable.configurationKeyId()) { dictConfigurationKey = new DictConfigurationKey(dictTable.configurationKeyId()); oneRecord += dictTable.name()+ '; ' + dictTable.label()+'; ' + dictConfigurationKey.name() + '; ' + dictConfigurationKey.label() + '; ' + countStr + '; ' + int2Str(countRef); File.writeExp(oneRecord); } else { oneRecord += dictTable.name()+ '; ' + dictTable.label()+'; ' + '; ' + '; ' + countStr + '; ' + int2Str(countRef); File.writeExp(oneRecord); } } } } } Цитата:
Сообщение от Gustav
"Записей не меньше 1" - это мне понятно. А "ссылок > 100" - это что за критерий, извиняюсь, "основнистости"?
Цитата:
Сообщение от Gustav
И ссылки какого рода имеются в виду? Любое упоминание о данной таблице в "Перекрестных ссылках" в любом контексте (поле, релэйшн, метод и т.д.)?
Сейчас хочу распределить этот список на первичные(т.е. таблицы клиентов, поставщиков), вторичные(Заказы, Закупки,Накладные т.е. те таблицы куда стикаются данные от первичных) и лишние(ошибочно попавшие). Отберу выложу. В любом случае если есть какие-то возражения пишите. |
|
21.06.2007, 09:09 | #5 |
Участник
|
Цитата:
userinfo, exchrate. не вошел весь bank*, bom*, commission*, config* и т.п. в общем, для начала посмотрите в список таблиц в AOT. Цитата:
Сама таблица может не использоваться, но активно используются поля и/или методы этой таблицы |
|
21.06.2007, 09:25 | #6 |
Участник
|
кроме того, могут быть следующие случаи:
1. таблицы могут быть обернуты map'ом, а уже map активно используется 2. таблицы обернуты классом, который используется. А сама таблица напрямую используется редко |
|
21.06.2007, 09:31 | #7 |
Участник
|
Цитата:
Сообщение от mazzy
О!, да, таких дофига и больше.
userinfo, exchrate. не вошел весь bank*, bom*, commission*, config* и т.п. в общем, для начала посмотрите в список таблиц в AOT. bom* - модуль Спецификации commission* - модуль Коммиссионные config* - модуль Номенклатурная аналитика - конфигурация Я специально взял только три модуля (Логиcтика, Торговля, Главная книга) + пустые. Т.к пустые принадлежат всем. И по замыслу наверное должны быть самые основные. Слона надо есть кусками. Цитата:
Сообщение от mazzy
Этого мало.
Сама таблица может не использоваться, но активно используются поля и/или методы этой таблицы |
|
21.06.2007, 09:40 | #8 |
Участник
|
Вобще то конечно правильно. Насчет класов мысли были, но сначало список таблиц доделать хочется. Отобрать первичные и второстепенные. Возможно составить схему. По крайней мере попробую. Не уверен ещё в собственных силах. Но если двигаться в нужном направлении должно получиться. Когда с классами будет хоть какой-то адекватный результат. Можно анализировать информацию 1 и 2. Таблицы+классы. Пока наверное ограничусь без информации от Map-ов и классов. Хотя Map-ы тоже навеное посчитать можно. Подумаю.
|
|
21.06.2007, 09:47 | #9 |
Участник
|
Да если кому-то интересно какая таблица какому модулю принадлежит, вот полный список. Вернее не совсем полный. !dictTable.isTmp() && dictTable.isSql().
|
|
21.06.2007, 09:54 | #10 |
Участник
|
Цитата:
См. Нужна квалифицированная помощь по функционалу MBS Axapta А банк... Рассматривать торговлю и логистику без банка... хм... конечно можно. Но это смелое решение |
|
21.06.2007, 10:00 | #11 |
Участник
|
Я еще раз настаиваю на том, что ваша логика ошибочна.
1. Сама таблица логически не может принадлежать модулю. 2. модулю "принадлежат" данные (вернее, совокупность логически связанных данных образует модуль) 3. данные хранятся в полях 4. т.е. анализировать надо принадлежность полей к тому или иному модулю 5. это значит, что таблица может принадлежать нескольким модулям одновременно 6. параметр ConfigurationKey, указанный в самой таблице дает слишком общую информацию. Этот параметр определяет при покупке какого модуля эта таблица появится. Но он не определяет к какому модулю таблица принадлежит (вот такой вот логический выверт). Например, банк появляется при покупке лицензии Finance I и т.п. См. http://axapta.mazzy.ru/lib/explore/ Этот мир - иллюзия. Вы начали изучайть эту матрицу при помощи внутренних кодов. Не останавливайтесь на полпути. |
|
21.06.2007, 11:33 | #12 |
Участник
|
Цитата:
Сообщение от mazzy
4. т.е. анализировать надо принадлежность полей к тому или иному модулю
|
|
21.06.2007, 11:50 | #13 |
Участник
|
Эти поля физически уничтожаются при помощи Alter Table.
А таблицы физически уничтожаются при помощи Drop Table при выключении ключа. Соответственно данные "обнуляются" Важно, важно. |
|
25.06.2007, 16:37 | #14 |
Участник
|
Цитата:
Сообщение от mazzy
4. т.е. анализировать надо принадлежность полей к тому или иному модулю
1)TableProperty поля: TableName - имя таблицы LabelTable - русское ConfigurationkeyName - имя ключа таблицы LabelConfigurationkey - русское CountRecId - количество записей CountReference - количество ссылок таблиц 2) TableInMaps поля TableName - имя таблицы LabelTable - русское MapsName - имя мапа CountReference - количество ссылок мапа 3)FieldsInTable поля TableName - имя таблицы LabelTable - русское ConfigurationkeyName - имя ключа поля LabelConfigurationkey - русское FieldNum - номер поля FieldName -имя поля FieldLabel - русское CountReference - количество ссылок поля Заполнил их. Из этой информации уже можно определить. Каким ещё модулям принадлежит таблица, если исходить не из ключа таблицы, а из ключей полей таблицы. Можно проссумировать ссылки таблиц и их мапов, для более адэкватного анализа. Будет ли это правильно? А то у меня сомнения ещё остаются. Последний раз редактировалось miklenew; 25.06.2007 в 16:47. |
|
26.06.2007, 09:24 | #15 |
Участник
|
Получился вот такой список. С учётом ключей полей и ссылки таблиц + ссылки мапов в которые входят эти таблицы. Но считаю всё же основные таблицы надо определять из первого списка. А второй иметь ввиду при состовлении связей. Потому что как раз в новых строчках модули и соединяются. Хотя не только в них.
|
|
|
За это сообщение автора поблагодарили: driller (1). |