Анализатор кода 1с v7.7

19.07.08

Разработка - Инструментарий разработчика

Внешняя обработка для 7.7, позволяющая проанализировать код модуля. Это всего лишь инструмент, дающий возможность разобраться в порядке вызовов процедур и в том, как та или иная переменная получает свое значение. Используется внешняя компонента ActiveMD.

Скачать файлы

Наименование Файл Версия Размер
-
.1216411025 15,72Kb
1120
.1216411025 15,72Kb 1120 Скачать бесплатно

Так получилось, что в наследство мне досталась конфигурация написанная программистом не то что плохим, но со своеобразной логикой и уникальным стилем программирования. В результате родилась эта обработка. Дальнейшее развитие не планируется, и в таком виде программа меня устраивает. Изучив методы работы своего предшественника, я уже довольно быстро нахожу критичные места программы, хотя обработка по прежнему интенсивно используется.
Возможности.
1) Анализ процедур и функций: строятся таблицы вызовов, какая процедура откуда вызывается и в свою очередь, что вызывает. Можно построить дерево вызовов для определенной процедуры.
2) Анализируется диалог, связь реквизитов формы с реквизитами объекта метаданных, места программы, где используется реквизит.
3) Реквизиты объекта: аналогично реквизитам формы.
4) Переменные. Отслеживается объявление переменных и их использование. Позволяет легко получить всю цепочку, по которой происходит работа с переменной: присвоение, передача значения, использование к качестве параметра процедуры и т.д.
Недостатки:
1) ActiveMD не позволяет открывать файлы ert, но это ограничение можно обойти загрузив модуль обработки из текстового файла.
2) Не оптимальный алгоритм парсинга программного кода
3) Неверная работа с переменными, если имена глобальной переменной совпадает с именем локальной переменной.
4) При построении дерева вызовов учитывается рекурсия только в том случае, если процедура вызывает саму себя. Если рекурсия имеет более сложный характер (две процедуры вызывающие взаимно друг друга), то программа зацикливается.

См. также

Консоль запросов

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Консоль запросов к базе SQL, не требующая внешних компонент

10 стартмани

29.04.2015    21559    54    Gvozdod    8    

14

StartManager 1.4 - Развитие альтернативного стартера

Инструментарий разработчика Платформа 1С v7.7 Платформа 1С v8.3 Абонемент ($m)

Очередная редакция альтернативного стартера, являющегося продолжением StartManager 1.3. Спасибо всем, кто присылал свои замечания и пожелания, и тем, кто перечислял финансы на поддержку проекта. С учетом накопленного опыта, стартер был достаточно сильно переработан в плане архитектуры. В основном сделан упор на масштабируемость, для способности программы быстро адаптироваться к расширению предъявляемых требований (т.к. довольно часто просят добавить ту или иную хотелку). Было пересмотрено внешнее оформление, переработан существующий и добавлен новый функционал. В общем можно сказать, что стартер эволюционировал, по сравнению с предыдущей редакцией. Однако пока не всё реализовано, что планировалось, поэтому еще есть куда развиваться в плане функциональности.

1 стартмани

23.04.2014    165708    1864    Alexoniq    1596    

496

Tray Informer

Инструментарий разработчика Платформа 1С v7.7 Платформа 1С v8.3 Россия Абонемент ($m)

Согласитесь, что окно стандартное сообщений в 1С иногда приносит больше неудобств, чем пользы. И тем более разные "Предупредить"... Что с этим окном только не делают! Его отцепают от формы, делают маленьким, умудряются спрятать за границы экрана. А потом звонят программистам с претензией, что документ почему-то не проводится, отя ничего и не пишет. У вас такого не было? А вот у нас было и не раз )))

1 стартмани

04.09.2013    32878    61    O-Planet    78    

49

Изменение структуры баз 1С 7.7 без долгой реструктуризации. Часть 1. Справочники

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

На днях встретил вопрос на форуме про возможность внесения изменений в конфигурацию без долгого сохранения в рабочей базе большого объема. Вот решил поделиться опытом, как это делал я. База у нас была объемом порядка 120 Гб. К базе обращался сайт в режиме 24/7, поэтому важно было быстро сохранять изменения и желательно без последующего монопольного запуска для восстановления индексов и процедур и без отключения пользователей от базы. Это первая часть статьи и посвящена она справочникам. С одной стороны - это самый простой объект, с другой стороны, именно про справочник спрашивалось на форуме. Если статья будет востребована, то я напишу аналогичные про документы, регистры и может еще что.

1 стартмани

13.08.2013    21198    Reptile    5    

35

v7.7 1CDialogControls: Инструмент в помощь разработчику на 7.7.

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Давным давно, когда я еще плотно писал на 7.7 работа с формами была мучительной и неудобной. Приходилось каждый элемент выкладывать, выравнивать на форме ручками, прописывать код в модуле. Иногда при разработке очередной формы приходила в голову мысль: "а где-то я уже похожее делал..." и начинался мучительный поиск подходящего кода в своих запасах........

1 стартмани

21.02.2013    18030    35    MarSeN    14    

16

[Разработчику] Любая таблица значений в OLAP

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Анализируем различные данные в 1С, используя OLAP-технологии со всеми прелестями. Т.е. наглядное отображение данных, быстрые расчеты, горизонтальные и вертикальные группировки любой вложенности, удобная фильтрация, Drag'n'Drop и ещё много приятных вещей от MS. Обработка на входе принимает практически любую таблицу значений (ТЗ в которой колонкам указаны типы значений, строка, число и т.п.), на выходе имеем на форме 1С сводную таблицу и график по этой ТЗ, с которой работаем, как и в Excel со сводной таблицей и диаграммой. Взял за основу разработку «OLAP Анализ счёта» ( http://infostart.ru/public/14964/ ) от JohnyDeath и переделал под любую ТЗ. Опционально используется «Прогресс бар для 1С 77» (http://infostart.ru/public/14061/ ) от Gmix.

1 стартмани

21.12.2012    36103    51    venger    7    

23

Библиотека кода 1С 7.7 (накопленная за 8 лет)

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Весь код на 1С 7.7, собранный для повторного использования за 8 лет работы.

10 стартмани

25.11.2012    34959    248    adhocprog    51    

70
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. VladimirKuzn 23.07.08 06:32 Сейчас в теме
Доступ к модулю закрыт паролем, видимо разработчик является таким же программистом, о котором пишет. Т.к. при общем доступе, как то не корректно закрывать модуль
5. v.l. 434 23.07.08 11:30 Сейчас в теме
(1) А у меня пароль не спрашивает...
27. pvlunegov 157 08.12.16 09:23 Сейчас в теме
Поправил файл обработки. Запустил в нестандартной базе 1с 7.
Вроде стало работать. Буду тестировать дальше. Если найду ошибки, буду вручную исправлять ошибки в коде.
Горе-автор непрофессионально пишет код.
Корявые ошибки исправил в коде. сами посудите. Из кода:

типКолонки = СписокПараметров.ПолучитьЗначение(1);
типПоля = СписокПараметров.ПолучитьЗначение(4);
Если типКолонки = "2" Тогда //Это номер строки
	Продолжить;
КонецЕсли;
тФорма.НоваяСтрока();
тФорма.Заголовок = СписокПараметров.ПолучитьЗначение(2);
тФорма.ТЧ = 1;
тФорма.ЭлементУправления = типПоля;
тФорма.Идентификатор = СписокПараметров.ПолучитьЗначение(8);
тФорма.Формула = СписокПараметров.ПолучитьЗначение(7);
Показать


Конструкции типа СписокПараметров.ПолучитьЗначение(2) Повсеместно в коде вызывали ошибки!
Таких конструкций надо или избегать, или ставить проверки.
Я исправил код так:

типКолонки = ?(СписокПараметров.РазмерСписка()<1 ,"",СписокПараметров.ПолучитьЗначение(1));
типПоля = ?(СписокПараметров.РазмерСписка()<4 ,"",СписокПараметров.ПолучитьЗначение(4));
Если типКолонки = "2" Тогда //Это номер строки
	Продолжить;
КонецЕсли;
тФорма.НоваяСтрока();
тФорма.Заголовок = ?(СписокПараметров.РазмерСписка()<2 ,"",СписокПараметров.ПолучитьЗначение(2));
тФорма.ТЧ = 1;
тФорма.ЭлементУправления = типПоля;

тФорма.Идентификатор 	= ?(СписокПараметров.РазмерСписка()<8 ,"",СписокПараметров.ПолучитьЗначение(8));
тФорма.Формула 			= ?(СписокПараметров.РазмерСписка()<7 ,"",СписокПараметров.ПолучитьЗначение(7));
Показать
2. Майкопчанин 80 23.07.08 09:31 Сейчас в теме
Не вижу состава преступления, разве в правилах это как-то определено? Моя разработка, что хочу, то и делаю. А потом пароль на модуль в 1с - это такая формальность...
22. baikot 11.11.13 11:35 Сейчас в теме
(2) Толкаете на преступление!
Но, всё равно, спасибо за обработку!
3. AmigoKZ 23.07.08 09:50 Сейчас в теме
рез=МД.Открыть(СокрЛП(Конфа),Пароль);
{D:\DATA_1C\TS\KOMPLEKSNAYAFREE\EXTFORMS\АНАЛИЗАТОРКОДА.ERT(1440)}: Поле агрегатного объекта не обнаружено (Открыть)

Что за хрень? :-) (ActiveMD ver04 beta)
4. AmigoKZ 23.07.08 10:38 Сейчас в теме
Вопрос снимаю, с v2 все нормально
6. v.l. 434 23.07.08 11:35 Сейчас в теме
Автор - молодец! Полезная штука
7. soll79 24.07.08 09:25 Сейчас в теме
А вот где бы найти ActiveMD v2?
Поможет кто?
8. Майкопчанин 80 24.07.08 10:45 Сейчас в теме
Яндексом пользоваться не умеем?
http://mdeditor.narod.ru/
9. soll79 24.07.08 10:56 Сейчас в теме
Благодарю.
Хотя можно было бы и не так грубо.
10. Майкопчанин 80 24.07.08 11:17 Сейчас в теме
Сорри, это была не грубость, а неподдельное удивление :)
и спасибо за плюсик...
11. soll79 24.07.08 11:40 Сейчас в теме
12. O-Planet 6431 24.07.08 15:39 Сейчас в теме
Кстати, у Абадонны есть пример, как ActiveMD с ert работает...
13. Майкопчанин 80 24.07.08 23:17 Сейчас в теме
2(12) что-то я ничего не нашел. Возможно плохо искал... Если и буду переделывать прогу, то впредь буду использовать Compound.dll и писать буду скорей всего не на 1с - уж больно медленно текст обрабатывается.

Если кому то уж очень хочется анализировать код внешних обработок, то можно рекомендовать следующий рецепт: в конфе добавить "лишнюю" обработку или отчет и туда загружать еэртэшку.
14. aspirator23 339 16.08.08 09:13 Сейчас в теме
Разворачиваю обработку на полный экран, затем сворачиваю "взад". Все поля, элементы диалога и таблицы обработки "поплыли", кроме закладок Диалог и Модуль. На закладке Переменные и Реквизиты это заметно, если пощелкать по Переменным, Ревизитам. На Закладке Подключение кнопку Читать нажать уже не удается - попадешь на флаг.

Открываю ТиС 952 Справочник Контрагенты, формаЭлемента. Нажимаю Читать. Читает, одновременно выдает сообщение
Формула = СписокПараметров.ПолучитьЗначение(12);
{F:\UTILITS\АНАЛИЗАТОРКОДА\АНАЛИЗАТОРКОДА.ERT(1023)}: Индекс не входит в границы списка значений.
24. Alex_1066 23.04.14 12:05 Сейчас в теме
Подключил...как и у (14)Тоже выскакивает...
Формула = СписокПараметров.ПолучитьЗначение(12);
{Z:\WORK\АНАЛИЗАТОРКОДА.ERT(1023)}: Индекс не входит в границы списка значений.
РеквизитМета = СписокПараметров.ПолучитьЗначение(13);
{Z:\WORK\АНАЛИЗАТОРКОДА.ERT(1024)}: Индекс не входит в границы списка значений.
15. aspirator23 339 16.08.08 09:22 Сейчас в теме
Вдогонку. На закладке Модуль неясен смысл символов в первых двух колонках. Краткое описания не помешало бы, хотя бы для неочевидных вещей. Можно конечно по коду обработки разобраться, но как уже написано выше стоит пароль.
16. константин 571 05.12.08 21:48 Сейчас в теме
Однозначно, ставлю плюс
17. CheBurator 3119 03.03.10 11:49 Сейчас в теме
А положить в архив АктивМД - религия не позволяет?
18. CheBurator 3119 03.03.10 11:50 Сейчас в теме
19. Майкопчанин 80 03.03.10 12:58 Сейчас в теме
(18) Спасибо, а то предыдущая ссылка в посте № 8 уж совсем затерялась.
;)
25. pvlunegov 157 08.12.16 08:29 Сейчас в теме
(18) Сергей, СПС за ссылку
20. ir.sitnikowa 21.04.10 15:00 Сейчас в теме
21. baikot 08.11.13 20:41 Сейчас в теме
А как ее запустить, подскажите! Пароль какой?
23. Alex_1066 22.04.14 17:19 Сейчас в теме
И как с этой обработкой работать.. При открытии выдаёт "Неудачная попытка подключения внешней компоненнты ActiveMD". Открыть в конфигураторе обработку и подкорректировать нет возможности - запоролено.... Можно конечно сказать автору спасибо... ну и ладно.. скажем.. не жалко.. :(
26. пользователь 08.12.16 08:51
Сообщение было скрыто модератором.
...
Оставьте свое сообщение