Имя: Пароль:
1C
1C 7.7
v7: Анализатор кода.
0 Eeakie
 
04.04.14
14:37
Добрый день.
Есть ли в наше время штуковина, которая может рассказать какие процедуры из конфигурации используются, а какие нет?
1 Eeakie
 
04.04.14
14:45
Видел для восьмерки нечто подобное.
Кто-то писал, что и для семерки есть. Сделано на основе какой-то дллки, но я её так и не нашёл. Поделитесь?
2 Ёпрст
 
гуру
04.04.14
14:45
есть
3 pumbaEO
 
04.04.14
14:45
Где используются?
Реально или в коде?
4 Ёпрст
 
гуру
04.04.14
14:46
5 Eeakie
 
04.04.14
14:48
(3) Реально используются. Очень много лишнего в конфе...
(4) Вроде инфостарт облазил и всё равно пропустил. Спасибо.
6 dk
 
04.04.14
14:55
поиск по конфигурации не предлагать?
7 Eeakie
 
04.04.14
14:59
(6) Слишком много лишнего. Очень утомительно.
8 Eeakie
 
04.04.14
15:10
Теперь ActiveMD не хочет регистрироваться. Что за...
9 Злопчинский
 
04.04.14
15:15
есть еще трейсер.
прога работает - а оно пишет в лог что за чем и как...
ищи на ИСе в разработках О-Планет
10 Eeakie
 
04.04.14
15:35
Люди, как ActiveMD зарегистрировать?
Через regsvr всё прошло нормально. При запуске пишет "отсутствует CLSID". VKLoader тоже проблему не побеждает. Что делатЬ?
11 Eeakie
 
04.04.14
15:36
Запускал под админскими правами.
12 ДенисЧ
 
04.04.14
15:37
имя = "мояФ";
имя = имя + "унк";
имя = имя + "ция";
Шаблон("[имя]()");
Как функия используется?
13 Eeakie
 
04.04.14
15:39
(12) интересная аналогия. Жаль, что я не смог её понять.
14 Eeakie
 
04.04.14
16:13
Положил дллку в BIN. Запустил 1с с админскими правами - отсутствует CLSID. Сделал regsvr32.exe "...\activemd.dll" - "компонента успешно зарегистрирована" - запустил 1с - отсутствует CLSID.

Что я делаю не так?
15 Eeakie
 
04.04.14
16:14
Windows Server 2008r2.
Пробовал отключать контроль учетных записей. Не помогло.
16 Salimbek
 
04.04.14
16:38
(15) Поставить ВиртуалБокс и там поднять Win XP?
17 ALoHA
 
04.04.14
16:43
Отладчик.
18 Eeakie
 
04.04.14
16:44
Странно, но с дллкой работать можно, хоть 1ска и ругается на отсутствие CLSID.
19 Torquader
 
05.04.14
00:39
В первом приближении, задача решается для любого языка программирования, если мы знаем синтаксис вызова процедур и функции, а также предполагаем, что у нас нет команды eval, которая, например, есть в javascript или 1С восьмой версии.
Тогда мы можем найти процедуру, на которую никто не ссылается.
Но, в случае 1С, есть стандартные вентили (то есть процедуры с заранее заданным именем, вызываемые системой при каких-то событиях), а также действия на форме и идентификаторы кнопок, про которые тоже забывать нельзя.

Далее, мы можем придти к ситуации, когда
в начале кода написано
ПарамА=1;
Потом идёт куча вызовов, а в конце
Если ПарамА=2 Тогда ВыполнитьДействиеПо2();КонецЕсли;
с точки зрения анализатора "ВыполнитьДействиеПо2" вызывается, так как на неё есть ссылка, а с точки зрения логики кода - нет, так как параметр всегда равен 1.
20 Злопчинский
 
05.04.14
01:22
вот-вот... должны же быть какие-то инструменыт, которые оценивают вот такое качество когда, что-то где-то мне попадалось.. типа гоняют тупо программы на кипах входных инпутов, и смотярть где чего выполняется... где мертвые ветки, неиспользуемые вызовы и прочая лабудень
21 Sserj
 
05.04.14
04:18
(14) Скорей всего используешь regsvr32 в 64-ей битной системе, в таких надо пользовать  %systemroot%\SysWoW64\regsvr32.exe.
22 Torquader
 
05.04.14
15:18
(20) На самом деле, для качественной оценки кода желательно знать тип переменной, а в 1С - этого нет.
Например, мы обрабатываем элемент справочника, передавая объект (не ссылку) внутрь функции, а внутри функции вообще не видно, кого мы там получили.
Если бы была типизация, то код можно было бы оценивать отдельно.
Далее, есть проблема в неявном определении переменных - та же самая, что из самой функции не всегда ясно, где переменная начала свою жизнь, а где - закончила.
23 spectre1978
 
06.04.14
07:24
(19)  есть там подобие евала. Во-первых Шаблон(), во-вторых при работе через  OLE EvalExpr ()...
24 Torquader
 
06.04.14
13:58
(23) OLE мы не рассматриваем, а про шаблон я уже писал - в таблице-то можно указать и формулы и функции, но их видно.
Хотя, шаблон можно вляпать и в коде - тогда будет фигура из четырёх букв.
25 orefkov
 
06.04.14
14:35
(21)
Нет, он пытается ей сделать ЗагрузитьВнешнююКомпоненту, а activemd ей не является, это обычный OLE объект, создается просто СоздатьОбъект.