Показать сообщение отдельно
Старый 09.06.2015, 17:20   #19  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Кстати, не так уж много таблиц в системе, задействованных в большом количестве форм. Чтобы примерно оценить, стоит ли игра свеч, можно воспользоваться таким джобом (как пользоваться - см. комментарии):
X++:
static void ShowMostUsedTables(Args _args)
{
////////////////////////////////////////////////////////////////
// С заданными ниже параметрами Job работает около 5-7 секунд, меняйте с осторожностью:)

    #define.DSCountCriteria     (10)        // критерий попадания в "ТОП" (минимальное количество ссылающихся DS)
    #define.TableFilter         ("*")       // доп. фильтр, например: "Invent*", "Ledger*", "Vend*"
////////////////////////////////////////////////////////////////
    xRefReferences      xref;
    xRefPaths           forms, tables;

    RecordSortedList    sortedList = new RecordSortedList(tablenum(xRefPaths));

    ;
    sortedList.sortOrder(fieldnum(xRefPaths, ApplObjectPathRecId), fieldnum(xRefPaths, RecId));
    
    // перебрать таблицы
    while select Path, RecId from tables
        group by tables.Path, RecId
        where     tables.Path like "\\\\Data Dictionary\\\\Tables\\\\" + #TableFilter   
            &&  !(tables.Path like "*\\\\Tables\\\\?*\\\\*")                            // исключить все подузлы
    // подсчитать ссылки "Чем используется"
    join    count (RecId) from xref                                                     
        where   xref.referencePathRecId     == tables.RecId
            &&  xref.line                   == 0                                        // исключить ссылки из X++ кода
    // наложить фильтр на ссылки
    exists join forms                                                                   
        where   forms.RecId     == xref.xRefPathRecId
            &&    forms.Path    like "\\\\Forms\\\\?*\\\\Data Sources\\\\*"             // интересуют DS форм
            &&  !(forms.Path    like "*\\\\Fields\\\\*")                                // не интересуют поля и прочее
            &&  !(forms.Path    like "*\\\\Ranges\\\\*")
            &&  !(forms.Path    like "*\\\\Sorting\\\\*")                    
    {
        if (xref.RecId >= #DSCountCriteria)
        {
            tables.ApplObjectPathRecId = -xref.RecId;  // минус - для убывающей сортировки
            sortedList.ins(tables);
        }
    }
    setprefix(strfmt("Найдено %1 таблиц (по фильтру %2) с количеством ссылающихся FormDS >= %3", sortedList.len(), #TableFilter, #DSCountCriteria));
    info("Сount of FormDS; TableName");

    sortedList.first(tables);
    do{
        info(strfmt("%1; %2", -tables.ApplObjectPathRecId, tables.pathName()));
    } 
    while (sortedList.next(tables));
}
На кастомизированной DAX2009 "Топ" выглядит примерно так (см. вложение):
Изображения
 
__________________