Имя: Пароль:
1C
 
Как проверить один модуль на неиспользуемые функции?
0 toypaul
 
гуру
13.08.26
09:32
Всю конфигурацию проверять слишком долго. Функций много - руками искать лень. Не пойму почему не сделал проверить только один модуль, например, в рефакторинге?
1 Мультук
 
гуру
13.08.26
09:38
(0)

1) Я конечно извиняюсь, а проверка синтаксиса вот такое умеет проверять? Я что-то сомневаюсь

ИмяМодуля = "миста_ОбщийМодуль";
ИмяМодуля.ХеллоВорлд();


2) Если абстрактно есть еще внешние обработки, отчёты.
2 boozin
 
13.08.26
10:11
Поиск по текстам не предлагать? :)))
3 Волшебник
 
13.08.26
10:16
Убери Экспорт и проверь на синтаксические ошибки.
Потом верни Экспорт
4 boozin
 
13.08.26
10:17
Вот так попробуй
5 toypaul
 
гуру
13.08.26
10:20
(2) Какой поиск по текстам? Модуль один. Нужно проверить только неэкспортные методы.

(3) Не нужно мне экспортные проверять.

Блин. Элементарная операция, которую в блок рефакторинга не могли засунуть?

Пришлось соображать - все закомментировал кроме 100% нужных методов. И последовательно раскомментировал только нужное.
6 Ненавижу 1С
 
гуру
13.08.26
10:33
кликаем по заголовку метода ПКМ - Найти использование
7 Галахад
 
гуру
13.08.26
10:48
Какой-нибудь Феникс или Сонар сами укажут как на ошибку присутствие неиспользуемых локальных методов.
8 Timon1405
 
13.08.26
11:00
9 toypaul
 
гуру
13.08.26
13:07
(8) Нет. Там нет пункта проверить неиспользумые методы
10 toypaul
 
гуру
13.08.26
13:07
(7) А есть бесплатный сервис, чтобы закинул и проверила? Или ставить всю эту чепуху ради проверки одного модуля?
11 toypaul
 
гуру
13.08.26
13:10
(6) ну как вариант. только это в каждую тыкать надо
12 Timon1405
 
13.08.26
13:32
(9) в моём есть
13 ass1c
 
13.08.26
13:40
(12) Да, отличный функционал, который решает проблему автора - единственное что я так понял что он не готов ждать пока проверится вся конфигурация? у меня ERP пробежалась вся менее чем за 10 минут. Потом просто ищешь свой модуль и видишь все неиспользуемые в данном модуле не экспортные процедуры и функции и удаляешь их...

*Самой главной особенностью этого теста является то, что анализ использования выполняется в пределах модуля, где данная процедура расположена, дополнительно анализируется возможное использование процедуры в качестве обработчика какого-либо события. Процедуры и функции, которые объявлены как экспортные, никогда не считаются неиспользуемыми. Это связано с их возможным вызовом из внешнего соединения. Поэтому невозможно использовать данный тест для обнаружения потерянных обработчиков команд интерфейсов, поскольку такие обработчики должны быть объявлены как экспортные.
14 toypaul
 
гуру
13.08.26
13:43
(12) Это проверка всей конфигурации. А не одного модуля.
15 ass1c
 
13.08.26
13:54
(14) Просто интересно. Получается ты отказался от этого способа, только потому что он проверяет все модули конфигурации, а не только твой нужный - хотя и выдает отсортированные по модулям результаты, которые ты и ожидаешь увидеть (т.е. все неиспользуемые в конкретном модуле не экспортные процедуры и функции) и при это пришлось бы ждать выполнение данной операции 10-15 минут (ну может дольше в зависимости от твоей конфигурации)?
16 Новиков
 
13.08.26
14:00
(15) Попробуйте запустить на время эту проверку в ERP или УХ. И сообщите о результатах замера времени. Полагаю, там явно больше 15 минут.
17 ass1c
 
13.08.26
14:15
(16) специально перед отправкой сообщения (13) запустил выполнение в своей ERP, чтобы убедиться, что данная операция занимает не часы и не дни или вообще не вешает конфигуратор:
"...у меня ERP пробежалась вся менее чем за 10 минут."

Так что на мой взгляд это довольно шустрая операция.
18 toypaul
 
гуру
13.08.26
14:31
(15) в ЕРПУХ выдает кучу овна. Быстрее получилось сделать то, что написано в (5)
19 Tatitutu
 
13.08.26
14:32
(0) глянь - умеет творить чудеса
OneBase — open-source платформа с 1С-подобным языком для пет-проектов
https://infostart.ru/1c/articles/2694204
20 toypaul
 
гуру
13.08.26
14:33
Я при этом еще не понял как оно работает. Скажем если Ф1 не используется, но в ней вызываются Ф2 и Ф3 - то что будет? Мне показалось, что Ф1 оно показывает, а Ф2 и Ф3 не показывает.
21 toypaul
 
гуру
13.08.26
14:39
(19) нику.си. крутота - что сказать. не понял только как это к теме относится.
22 ass1c
 
13.08.26
14:42
(18) Ну можно не ждать проверки всей конфигурации, а после того как пробежал твой модуль - то прервать операцию...стандартной комбинацией для 1с. Обработка остановится. Результат покажется что ошибок столько то "...", и в сообщениях будет видна вся информация.
23 ass1c
 
13.08.26
15:00
(20) Кстати корректное замечание:
#Область ПрограммныйИнтерфейс

Процедура Ф0() Экспорт
	
	Итератор = 1;
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныйПрограммныйИнтерфейс

Процедура Ф1()
	
	Итератор = 1;
	
	Ф2();
	Ф3();
	
КонецПроцедуры

Процедура Ф2()
	
	Итератор = 1;
	
КонецПроцедуры

Процедура Ф3()
	
	Итератор = 1;
	
КонецПроцедуры


#КонецОбласти

#Область СлужебныеПроцедурыИФункции

#КонецОбласти


Результат выполнения обработки:
ОбщийМодуль.ИнтеграцияERP.Модуль Не обнаружено ссылок на процедуру: "Ф1"

p.s. Получается в таком случае надо последовательно удалять процедуры и функции, пока обработка не перестанет выдавать данный модуль как проблемный. Что не совсем уже удобно. Но хотя бы такой инструмент дали в помощь, что в принципе уже не плохо.
24 toypaul
 
гуру
13.08.26
15:02
(23) с учетом того сколько оно работает, быстрее сделать как в (5) и не маяться ку.той.
25 ass1c
 
13.08.26
15:07
(24) ну я не сказал бы что это куита - просто инструмент который тебе не подошел, я бы воспользовался бы им и так же быстро почистил модуль.
26 butterbean
 
13.08.26
15:08
ИИ уже предлагали?
27 KJlag
 
13.08.26
15:32
вроде бы в едт есть такая проверка "на лету".  или она там криво работает? никто не работает в едт?
28 Nedomolkov_
Ivan
 
13.08.26
18:12
(10) BSL Language Server, бесплатный. Плагин в VS Code, конфу целиком гонять не надо: выгрузил модуль в файл, открыл, и он прямо в нём подсветит неиспользуемые локальные методы (диагностика UnusedLocalMethod).

(20) тут любой статический анализатор так себя ведёт. Ф1 не используется, это видно, а Ф2 и Ф3 из неё вызываются, значит формально живые. Мёртвая ветка вылезет только следующим проходом, когда Ф1 уже удалена. Чистить в два-три захода.

И (1) прав, вызов строкой через Выполнить не поймает ни одна проверка, это только глазами.
29 toypaul
 
гуру
13.08.26
18:18
(28) "любой статический анализатор" - наверное любой глупый? ведь ежу понятно, что если функция не экспортная и она не используется, то все что внутри у нее тоже нафиг не нужно.
30 PR
 
13.08.26
19:08
(0) Зачем?
31 PR
 
13.08.26
19:09
(5) Ну так сделай пустую базу, закинь туда один общий модуль и его проверь
32 Nedomolkov_
Ivan
 
13.08.26
19:10
(29) справедливо, по-хорошему это обход графа вызовов от корней, и мёртвая ветка отваливается целиком за один проход. BSL LS так не умеет, он просто считает ссылки на метод. Плюс корни в 1С мутные: обработчики форм, подписки, регламентные, вызов строкой - поэтому тулы и осторожничают. Руками выходит то же самое, просто в два-три захода.
33 toypaul
 
гуру
14.08.26
08:56
(31) Ну до таких извращений я не додумался. Впрочем выяснили, что это тоже как нужно не работает.

(32) У меня не было задачи все муторное учесть. У меня была задача выкинуть мусор, который оставил пред. разработчик, надергивая типовой код из регл. отчетности. Там под 30 методов, из которых нужными в итоге оказались, после переделки, только 2.
34 Nedomolkov_
Ivan
 
14.08.26
11:16
(33) а, если это выдранный кусок регл. отчётности, то руками и правда быстрее. Графа вызовов там толком нет, просто мусор рядом лежит.

Я больше про повторяемость. Когда такое прилетает не разово, BSL LS по одному файлу отрабатывает за секунду, и три прогона подряд обходятся дешевле, чем один разбор глазами. Экспортные он не тронет, но их обычно по пальцам.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан