AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 31.10.2013, 11:08   #1  
RVS ist offline
RVS
Сенбернар
Benutzerbild von RVS
Злыдни
 
696 / 130 (6) +++++
Registriert seit: 27.02.2003
Ort: Королев МО
Забавная задачка
Дано :

- есть кастомный функционал, который не описан (совсем), но как-то (достаточно криво и не слишком надежно) работает
- есть табличка в нем, которая, понятно, тоже не описана.. и в которой пара миллионов записей

Требуется получить : описание использования (наполнения) таблицы. То есть :

- какие поля используются, какие - нет. По наполнению, перекрестные ссылки - не предлагать )
- что в какие поля пишется. То есть - если это Enum - получить по одной записи для каждого значения этого Enum-а, упоминаемого в наполнении таблицы. Если это поле Id клиента - достаточно одной записи, где оно заполнено, все - не надо )

Вот как-то так.

Вопросы :

- оно вообще, кроме как "глазами и руками" + Ёксель - решаемо?
- если решаемо, то как, хотя бы примерно (я без идей пока)

Если нужны подробности - добавлю.
__________________
Best Regards,
Roman
Alt 31.10.2013, 11:18   #2  
gl00mie ist offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.684 / 5813 (201) ++++++++++
Registriert seit: 28.11.2005
Ort: Москва
Blog-Einträge: 3
А почему "перекрестные ссылки не предлагать"? Если уж заниматься реверс-инжинирингом, то перекрестные ссылки тут - первейший инструмент Они не помогут разве что в случае, когда "кастомный функционал" работает с использованием механизмов отражения и/или написан вне приложения, скажем, в сторонней системе, работающей через Business Connector. Это - ваш случай?..
This post has been rated by: mazzy (2).
Alt 31.10.2013, 11:54   #3  
RVS ist offline
RVS
Сенбернар
Benutzerbild von RVS
Злыдни
 
696 / 130 (6) +++++
Registriert seit: 27.02.2003
Ort: Королев МО
Zitat:
Zitat von gl00mie Beitrag anzeigen
А почему "перекрестные ссылки не предлагать"?
Они не дадут наполнения. Требуется именно описание типа "что может быть записано в это поле" пока что. И все комбинации заполнения, имеющиеся в жизни (из тех, что сейчас есть в таблице)
Zitat:
Zitat von gl00mie Beitrag anzeigen
Они не помогут разве что в случае, когда "кастомный функционал" работает с использованием механизмов отражения и/или написан вне приложения, скажем, в сторонней системе, работающей через Business Connector. Это - ваш случай?..
Нет, по счастью. Но - есть порядка 40 классов, использующих эту табличку. Есть десяток классов, которые туда пишут. Разматывать все это по коду - слуга покорный )

Единственное, что пока на голову приходит - выгрузить всю эту беду в Ёксель, и там уже шаманить с фильтрами etc..

===

PS : Это там интеграция с типа "интернет-магазином" так классно сделана..
__________________
Best Regards,
Roman

Geändert von RVS (31.10.2013 um 11:57 Uhr) Grund: PS
Alt 31.10.2013, 13:03   #4  
Ivanhoe ist offline
Ivanhoe
Участник
Benutzerbild von Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4.143 / 2161 (81) +++++++++
Registriert seit: 29.09.2005
Ort: Санкт-Петербург
Zitat:
Zitat von RVS Beitrag anzeigen
Они не дадут наполнения. Требуется именно описание типа "что может быть записано в это поле" пока что. И все комбинации заполнения, имеющиеся в жизни (из тех, что сейчас есть в таблице)
Excel, сводная таблица. По скорости надо проверить, что быстрее - выгрузить в ексель и там строить сводную или напрямую к SQL подключиться.
__________________
Ivanhoe as is..
Alt 31.10.2013, 13:24   #5  
Logger ist offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
4.001 / 3298 (118) ++++++++++
Registriert seit: 12.10.2004
Ort: Москва
Blog-Einträge: 2
Zitat:
Zitat von RVS Beitrag anzeigen
Нет, по счастью. Но - есть порядка 40 классов, использующих эту табличку. Есть десяток классов, которые туда пишут. Разматывать все это по коду - слуга покорный )
Ну а как вы хотели ?
Чтобы ничего не делать и все было готово ?

Так не бывает.
Алгоритм заполнения все равно придется разбирать и понимать. Вам все равно по результатам предоставления этой таблички начнут задавать каверзные вопросы.
Alt 31.10.2013, 15:30   #6  
sukhanchik ist offline
sukhanchik
Administrator
Benutzerbild von sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.343 / 3563 (125) ++++++++++
Registriert seit: 13.06.2004
Ort: Москва
Zitat:
Zitat von RVS Beitrag anzeigen
Они не дадут наполнения. Требуется именно описание типа "что может быть записано в это поле" пока что. И все комбинации заполнения, имеющиеся в жизни (из тех, что сейчас есть в таблице)
А почему это перекрестные ссылки такую информацию не дадут? Фильтруемся по Write и получаем список мест (те 10 классов, которые туда пишут).

Ну да, получается разматывание по коду. Зато есть некоторая гарантия полноты. Все равно эмпирически придется догадываться. Так что, если какие-то "ветки" кода удастся легко размотать - это будет 100%-е обоснование - что туда пишется.
__________________
Возможно сделать все. Вопрос времени
Alt 31.10.2013, 16:25   #7  
mnt_dx ist offline
mnt_dx
Участник
Axapta Retail User
Лучший по профессии 2014
 
1.749 / 158 (9) ++++++
Registriert seit: 17.02.2011
Ort: К Северу через Северо-Запад
Zitat:
Zitat von Ivanhoe Beitrag anzeigen
Excel, сводная таблица. По скорости надо проверить, что быстрее - выгрузить в ексель и там строить сводную или напрямую к SQL подключиться.
А как обойти ограничение в миллион строк в экселе?
Alt 31.10.2013, 16:28   #8  
Ace of Database ist offline
Ace of Database
Участник
Benutzerbild von Ace of Database
 
877 / 649 (23) +++++++
Registriert seit: 14.10.2004
На языке SQL для каждого поля таблицы пишете свой отдельный запрос:
select count(*), Field1 from MyTable group by Field1
select count(*), Field2 from MyTable group by Field2
select count(*), Field3 from MyTable group by Field3
и так далее.
С помощью этих запросов узнаете, какие значения записываются в каждое поле, и как часто встречаются те или иные значения.

Если считать частоту использования конкретных значений не надо, а просто получить уникальные значения для каждого поля, то такой запрос:
select distinct Field1 from MyTable

Geändert von Ace of Database (31.10.2013 um 16:31 Uhr)
Alt 31.10.2013, 16:29   #9  
Ivanhoe ist offline
Ivanhoe
Участник
Benutzerbild von Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4.143 / 2161 (81) +++++++++
Registriert seit: 29.09.2005
Ort: Санкт-Петербург
Предварительной группировкой или двумя - тремя листами
__________________
Ivanhoe as is..
Alt 31.10.2013, 16:47   #10  
RVS ist offline
RVS
Сенбернар
Benutzerbild von RVS
Злыдни
 
696 / 130 (6) +++++
Registriert seit: 27.02.2003
Ort: Королев МО
Zitat:
Zitat von sukhanchik Beitrag anzeigen
А почему это перекрестные ссылки такую информацию не дадут? Фильтруемся по Write и получаем список мест (те 10 классов, которые туда пишут).
Я и так эти классы уже знаю. Прикол в том, что не все они (и уж точно - не все "ветки" в них.. я пока понятен? ))) реально используются. Это я - тоже знаю..

Zitat:
Zitat von Logger Beitrag anzeigen
Ну а как вы хотели ?
Чтобы ничего не делать и все было готово ?
Я, я.. натюрлих.. и можно - без хлеба )))) Позабавили, спасибо..

Zitat:
Zitat von Logger Beitrag anzeigen
Алгоритм заполнения все равно придется разбирать и понимать. Вам все равно по результатам предоставления этой таблички начнут задавать каверзные вопросы.
Вот не поверите - этих-то вопросов я и хочу добиться.. осмысленных.. от клиента.. Чтобы не у меня, а у пользователя голова болела на тему - "а .. зачем вот здесь у нас взялась вот такая .. фигня".. Мечты, мечты..

Тему снимаю, проблему не решил, но .. обошел.
__________________
Best Regards,
Roman
Alt 31.10.2013, 17:37   #11  
fed ist offline
fed
Moderator
Benutzerbild von fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2.914 / 5737 (197) ++++++++++
Registriert seit: 13.03.2002
Ort: Hüfingen,DE
В общем - по моему собственному опыту борьбы с недокументированным кодом: Это - не программистская задача. Попытка проанализировать код и понять чего он делает очень трудоемка даже для граммотно написаного кода, а уж для безграмотно - она заведомо тупиковая. Надо сначала долго трясти пользователей с вопросами о том что система делает и что она должна делать. После сличения показаний многих пользователей, можно лезть в код и разбираться (с отладчиком) как оно работает. Всякие перекрестные ссылки помогают, но основной инструмент - допрос пользователей и отладчик...
This post has been rated by: RVS (5).
Alt 31.10.2013, 18:05   #12  
BOAL ist offline
BOAL
Участник
Benutzerbild von BOAL
MCBMSS
Злыдни
1C
Лучший по профессии 2015
 
627 / 460 (17) +++++++
Registriert seit: 28.04.2003
Ort: Москва
Малопонятный недокументированный код нужно просто тереть, сделав бэкап кода и данных, и потом по конкретному ТЗ, проснувшегося индивида (или он уволен уже и не проснется) и его ору "а где такая кнопочка??!!" вытрясять ТЗ и сценарии использования.

Таким образом переходил как-то с АХ2.5 на АХ3.0 потеряв кучищу разных модов по пути, перенося сперва все нужно-понятное, а далее еще пяток по принципу 3-4 мес использования и запроса "а вот раньше тут было..".

Конечно, предварительно проверить по перекрестным ссылкам (и я туда же), где эти самые данные используются дальше (то есть, чем и почему они там пишутся не столь важно), куда дальше идут.
Явно же есть отчеты или обработки, где они на входе.
Если данные только пишутся... то однозначно тереть, как диверсию.
(проверив до кучи, не юзаются ли они внешним обменом или ОЛАПОМ....) - но метод их стирания (переимонования таблицы) однозначно это выявит за пару дней (месяцев )
This post has been rated by: S.Kuskov (3).
Alt 31.10.2013, 18:16   #13  
RVS ist offline
RVS
Сенбернар
Benutzerbild von RVS
Злыдни
 
696 / 130 (6) +++++
Registriert seit: 27.02.2003
Ort: Королев МО
Zitat:
Zitat von fed Beitrag anzeigen
Надо сначала долго трясти пользователей с вопросами о том что система делает и что она должна делать
Вот именно этим сейчас и пытаемся заняться..

Zitat:
Zitat von BOAL Beitrag anzeigen
Малопонятный недокументированный код нужно просто тереть, сделав бэкап кода и данных, и потом по конкретному ТЗ, проснувшегося индивида (или он уволен уже и не проснется) и его ору "а где такая кнопочка??!!" вытрясять ТЗ и сценарии использования.
...
Все очень верно, осложняется только одним : это интеграция с внешним приложением, тестовой версии такого приложения - не предусмотрено (и не спрашивайте меня - почему.. я вообще - аутсорсер )), а проделывать такие вещи на рабочей базе - приложении.. "да хто ж ему (мне в данном случае) даст"..

Вот и выкручиваемся, как только можно..
__________________
Best Regards,
Roman
Alt 01.11.2013, 11:35   #14  
George Nordic ist offline
George Nordic
Модератор
Benutzerbild von George Nordic
Злыдни
 
4.480 / 1255 (50) ++++++++
Registriert seit: 17.12.2003
Ort: Moscow
Blog-Einträge: 9
Zitat:
Zitat von RVS Beitrag anzeigen
Я и так эти классы уже знаю. Прикол в том, что не все они (и уж точно - не все "ветки" в них.. я пока понятен? ))) реально используются. Это я - тоже знаю..
В молодости ставил брэйк (или инфолог) на инсерт. Перехватывал и смотрел.

С Уважением,
Георгий
Alt 01.11.2013, 11:48   #15  
RVS ist offline
RVS
Сенбернар
Benutzerbild von RVS
Злыдни
 
696 / 130 (6) +++++
Registriert seit: 27.02.2003
Ort: Королев МО
Zitat:
Zitat von George Nordic Beitrag anzeigen
В молодости ставил брэйк (или инфолог) на инсерт. Перехватывал и смотрел.

С Уважением,
Георгий
Проблема в том, что вариантов много, работает пакетник, которые что-то отрабатывает, что-то - нет (из того, что в коде.. неясно еще, что "извне" могут передать, из того, что в Аксе в коде прописано.. тоже - люди не в курсе ))

Неделя времени на детальное описание процесса ) Которого, как сейчас выясняется, не понимает никто. Все, кто это писал (IBS), и кто это принимал (на клиенте) - давно уже об этом забыли..

Смоделировать все руками - просто времени нет понять, что, вообще, там творится. Отсюда, собственно, и возник вопрос о наполнении буферной таблички, куда данные из внешней системы валятся..

Сабж был - "забавная задачка". Она реально забавная, правда )
__________________
Best Regards,
Roman
Alt 01.11.2013, 11:59   #16  
Logger ist offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
4.001 / 3298 (118) ++++++++++
Registriert seit: 12.10.2004
Ort: Москва
Blog-Einträge: 2
Еще как вариант (если конечно производительность позволит) настроить логирование этой таблички в sysDatabaseLog
А в sysDatabaseLog добавить еще поле со стеком вызова и с числовым хешем от этого стека вызова.

Дать поработать, затем проанализировать историю изменений.
Alt 01.11.2013, 13:01   #18  
BOAL ist offline
BOAL
Участник
Benutzerbild von BOAL
MCBMSS
Злыдни
1C
Лучший по профессии 2015
 
627 / 460 (17) +++++++
Registriert seit: 28.04.2003
Ort: Москва
Вместо совета вешать инфо в инсерт посоветую вешать в инсерт свой разбор полетов - в табличку (потом ее читать, тк инфо в пакетнике будет тормозить и не видно, да и после ххх записей повиснет)
Писать в свой лог
дату, время, какие-то ТТХ записи (может дельту с ориг(), и стек вызова, откуда эта запись приехала.

Тогда через пару дней наблюдений отловятся конкретные сценарии использования: кто что пишет, когда, как часто.
И только по ним уже ручками (головой) получить ответ "зачем".

Ну и код этих внешних обработчиков поизучать или, куда они дальше это дают\берут.

====
О пока писал, не обновлял форум, а этот совет выше уже дали
Alt 01.11.2013, 13:10   #19  
RVS ist offline
RVS
Сенбернар
Benutzerbild von RVS
Злыдни
 
696 / 130 (6) +++++
Registriert seit: 27.02.2003
Ort: Королев МО
Коллеги, повторяю - там есть срок. Неделя. Не-де-ля..

С логами - напомнило - "поздно пить боржоми"..

Мои извинения. Решу - отпишусь, если кому интересно )
__________________
Best Regards,
Roman
Alt 01.11.2013, 13:34   #20  
Logger ist offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
4.001 / 3298 (118) ++++++++++
Registriert seit: 12.10.2004
Ort: Москва
Blog-Einträge: 2
Ну почему же поздно.
Если это инет магазин то даже однодневная статистика может дать неплохую выборку.
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Задачка с запросом в форме SHiSHok DAX: Программирование 16 17.07.2014 13:50
Интересная задачка, сможете помочь?) Cardagant DAX: Программирование 7 05.02.2012 18:55
order by и group by PavelX DAX: Программирование 19 22.11.2007 15:44
Интересная задачка по getFirst - getNext Wamr DAX: Программирование 12 26.04.2005 15:13

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 12:20 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.