Страница 1 из 2

DCT -убрать лишнее

Добавлено: 24 Май 2016, 10:11
gopstop2007
Подскажите способ быстрого поиска не используемых полей в DCT. Спасибо!

DCT -убрать лишнее

Добавлено: 24 Май 2016, 11:32
Дед Пахом
В Total Commander быстро нажать Alt-F7.

DCT -убрать лишнее

Добавлено: 24 Май 2016, 11:41
kreator
gopstop2007 писал(а):Подскажите способ быстрого поиска не используемых полей в DCT.
Переведи.

DCT -убрать лишнее

Добавлено: 24 Май 2016, 11:44
gopstop2007
Дед Пахом писал(а):В Total Commander быстро нажать Alt-F7.
Таким решением и пользуюсь :D, когда знаю, что искать. Я не знаю какие поля не используются! У меня таблиц в dct около 60 умножить на количество полей в каждой таблице, то есть используя Alt-F7 - мудрое решение :)
kreator писал(а):Переведи.
Найти поля в DCT которые нигде в приложении(app+dll) не используются

DCT -убрать лишнее

Добавлено: 24 Май 2016, 11:47
Дед Пахом
gopstop2007 писал(а): У меня таблиц в dct около 60 умножить на количество полей в каждой таблице, то есть используя Alt-F7 - мудрое решение
Вообще-то я, например, могу с уверенностью сказать, какие поля из словаря у меня ИСПОЛЬЗУЮТСЯ, а если есть подозрение, что поле НЕ используется, то смотри мой первый ответ :-) И сколько таких полей, 2? 3?

DCT -убрать лишнее

Добавлено: 24 Май 2016, 11:52
kreator
Словарь - это хранилище избыточной информации. Им могут пользоваться несколько приложений. У этих приложений могут быть пересекающиеся таблицы. У нас, например, в словаре хранятся таблицы 1С-серверов, с которым работает только одно приложение (синхронизация с 1С). Проблема (если так можно сказать) в том, что App нельзя подсунуть несколько словарей. Поэтому есть один и он избыточный. Поэтому, думаю, нельзя автоматом сделать то, что Вы хотите.

DCT -убрать лишнее

Добавлено: 24 Май 2016, 11:55
gopstop2007
Дед Пахом писал(а):Вообще-то я, например, могу с уверенностью сказать, какие поля из словаря у меня ИСПОЛЬЗУЮТСЯ, а если есть подозрение, что поле НЕ используется, то смотри мой первый ответ :-) И сколько таких полей, 2? 3?
Если приложение одно и с ним работаешь постоянно, согласен. И завидую Вашей памяти :D

DCT -убрать лишнее

Добавлено: 24 Май 2016, 11:58
gopstop2007
kreator писал(а): Словарь - это хранилище избыточной информации. Им могут пользоваться несколько приложений. У этих приложений могут быть пересекающиеся таблицы. У нас, например, в словаре хранятся таблицы 1С-серверов, с которым работает только одно приложение (синхронизация с 1С). Проблема (если так можно сказать) в том, что App нельзя подсунуть несколько словарей. Поэтому есть один и он избыточный. Поэтому, думаю, нельзя автоматом сделать то, что Вы хотите.
Согласен. А может так :cat:, как получить список не используемых полей, а потом можно (не)нужные таблицы исключить?

DCT -убрать лишнее

Добавлено: 24 Май 2016, 12:08
Игорь Столяров
gopstop2007 писал(а): как получить список не используемых полей
Если память не подводит, то можно в проект вставить параметр "wdnu=>1"
Вот только не помню обрабатывает он не используемые локальные переменные или поля таблиц тоже ...
(попробуй или посмотри в справке)

DCT -убрать лишнее

Добавлено: 24 Май 2016, 12:17
kreator
gopstop2007 писал(а):А может так :cat:, как получить список не используемых полей, а потом можно (не)нужные таблицы исключить?
Есть SQL таблица, в ней несколько никогда неиспользуемых полей (типа DateTime, их заполняет SQL триггер). Мы всё равно их тянем в словарь для защиты от дурака (запрос "select * from table" приведёт к непредсказуемым результатам, если в словаре не все поля). Как бы ребёнка не выплеснуть.

DCT -убрать лишнее

Добавлено: 24 Май 2016, 12:27
gopstop2007
Спасибо всем кто принимал участие в обсуждении и особое спасибо Игорю - оно :cat:. Хоть начало, буду знать куда плыть :)

DCT -убрать лишнее

Добавлено: 24 Май 2016, 12:54
RaFaeL
Игорь Столяров писал(а): Если память не подводит, то можно в проект вставить параметр "wdnu=>1"Вот только не помню обрабатывает он не используемые локальные переменные или поля таблиц тоже ...(попробуй или посмотри в справке)
С ним тоже не очень удобно работать
Одиночные переменные хорошо обрабатывает, но вот например если объявлена типизированная очередь (полей так на ннадцать), из которой в этой процедуре используется всего несколько, то на неиспользуемые будет выдано сообщение. Я немного поигрался и отключил, так как выискивать среди сотни сообщений одно нужное - проще забить

DCT -убрать лишнее

Добавлено: 25 Май 2016, 2:38
Admin
Нет такого инструмента. И сомневаюсь что кто то сделает.
Нужно неплохой такой парсер исходников делать.
С учетом использования операторов типа WHAT, OMIT и т.д.

Вывод: Решает память, поиск глазками и т.д.
Если важно - потратьте неделю на чистку.

Как вариант:
Формируем ручками все возможные варианты переменных из словаря (прямое обращение и через префикс)
TVRMag.TOVAR
TVRMag.KOLVO1
TVR:TOVAR
TVR:KOLVO1
Пишем скрипт который перебирает по списку переменных все исходники и если не находит использование переменной - сообщает/выводит переменную в отдельный файл, для дальнейшего разбора полетов.
Далее анализируем ручками.
Скрипт можно на PHP написать за 5 минут, или на основе шаблонов Clarion (подольше).
Список переменных можно сформировать шаблоном #UTILITY

Далее удаляем все неиспользуемые переменные и пробуем компилировать приложение.
Если компилируется - тестируем.

DCT -убрать лишнее

Добавлено: 25 Май 2016, 13:30
Алексей- Софт-Центр
Добрый день!
В принципе задача достаточно тривиальна:
1. Выгружаем словарь в текстовый файл
2. В секциях record определяем имена полей
3. Ищем их в *.clw файлах и формируем текстовый протокол работы, хоть по найденным clw-шкам, хоть по отсутствующим везде.

Как то так

Алексей

DCT -убрать лишнее

Добавлено: 25 Май 2016, 14:21
kreator
Алексей- Софт-Центр писал(а):обрый день!
В принципе задача достаточно тривиальна:
1. Выгружаем словарь в текстовый файл
2. В секциях record определяем имена полей
3. Ищем их в *.clw файлах и формируем текстовый протокол работы, хоть по найденным clw-шкам, хоть по отсутствующим везде.

Как то так
В clw автоматически будут поля, описанные в словаре. Хотя бы в качестве определения данных. Надо бы и этот момент учесть. Или поле первичного ключа в тексте может и не появиться, а его нельзя удалять (умозрительный пример, но всё же). Наверняка, ещё куча подводных камней.