Быстрый способ разобраться в чужом коде

29.12.18

Разработка - Рефакторинг и качество кода

Добрый день! Хочу рассказать о способе, который позволит быстро разобраться в чужом коде. Я, конечно, думаю, что это жесткий баян, но не видел, чтобы кто-то пользовался этим способом. По крайней мере, новичкам точно будет интересно.

Данный метод будет очень полезен в типовых конфигурациях, так как там может быть очень глубокий стек вызовов процедур, в котором новичку разобраться достаточно сложно.

Предположим, нужно разобраться, как устроен механизм печати БП 3.0.

Идем в конфигуратор, запускаем режим отладки. Кстати, некоторые процессы, например, формирование отчетов могут выполняться фоново, и для их отладки требуется настроить автоматическое подключение.

Также в типовых конфигурациях есть дополнительный параметр запуска «/РежимОтладки», который так же отключает фоновое выполнение. 

После запуска режима отладки заходим в документ для формования печатной формы, но перед выполнением печати запустим механизм замера производительности.

Данный механизм позволит увидеть список выполненного кода за период работы механизма.

Далее выполняем печать и отключаем замер производительности.

Теперь нужно решить: какой ключевой оператор поможет найти требуемую процедуру, в которой формируется печатная форма. Для формирования печатной формы требуется в любом случае создать объект Табличный документ, таким образом ключевой оператор будет «Новый ТабличныйДокумент» или просто «ТабличныйДокумент». Находим нужную строку, используя ключевой оператор, устанавливаем точку останова и запускаем формирование отчета.

 

После остановки отладки на требуемой строке кода запускаем стек вызовов.

Выходит окно со списком вызванных процедур, по которым можно выполнять переход для изучения механизма печати.

Вступайте в нашу телеграмм-группу Инфостарт

замер производительности стек вызовов чужой код

См. также

HighLoad оптимизация Рефакторинг и качество кода Программист Бесплатно (free)

Рассказываем о том, как не ухудшить производительность интеграционного решения в процессе разработки и рефакторинга, когда новых фич в коробке все больше, а требования по производительности все выше. На живом примере покажем реализованный подход с использованием таких инструментов, как Docker, Redash, Vanessa Automation.

02.09.2025    983    user1827916    1    

2

Рефакторинг и качество кода Программист Россия Бесплатно (free)

GRASP-паттерны в 1С: меньше хаоса, больше архитектуры.

28.08.2025    6106    lapinio    45    

48

Рефакторинг и качество кода Программист 1С v8.3 1С:ERP Управление предприятием 2 Россия Бесплатно (free)

Недавно наша команда завершила разработку (на несколько тысяч часов) на проекте по внедрению ERP. Заказчик на этом проекте настоял на том, чтобы вся разработка была выполнена в расширениях. Расскажу, с чем столкнулись на 24-25-ых версиях платформы и какие выводы сделали.

19.08.2025    2340    ovetgana    0    

12

Тестирование QA Рефакторинг и качество кода Программист Бесплатно (free)

За два года ручного тестирования решений на базе платформы 1С я столкнулся с огромным количеством ошибок. Глубокий анализ их причин позволил выделить ТОП-5 наиболее частых источников сбоев в 1С-разработке. Понимание этих коренных причин – первый шаг к их предотвращению. В этой статье я делюсь своими наблюдениями и предлагаю практические пути снижения рисков для каждого типа ошибок.

12.08.2025    1791    Lagger117    3    

3

Рефакторинг и качество кода Программист Бесплатно (free)

Рассказываем о практике Code Review: ее целях, преимуществах и подводных камнях. Автор делает обзор существующих инструментов, а также подробно описывает собственную разработку для анализа правок и комфортного взаимодействия по замечаниям. Инструмент Git Code Review позволяет оставлять ручные комментарии с указанием важности и автоматически проверять код с помощью BSL Language Server. С его помощью можно не только детально изучать измененный код, но и отслеживать трансформацию структуры метаданных в наглядном формате. А главное – Code Review можно проводить как в 1С:Предприятии, так и через специализированный веб-интерфейс, интегрированный с GitHub и GitLab. Статья будет интересна и тем, кто уже практикует Code Review, и тем, кто к этому только подступается.

31.07.2025    4477    salexdv    9    

35

Рефакторинг и качество кода Обновление 1С Программист 1С v8.3 Бесплатно (free)

Проблемы и их решение из реальных проектов сложного обновления 1С, когда нужно было сохранить целостность данных, ускориться и уложиться в оцененные и утвержденные сроки.

02.07.2025    4246    1c-izh    9    

13

Рефакторинг и качество кода Информационная безопасность Пароли Программист 1С v8.3 Россия Абонемент ($m)

Представьте ситуацию: вы пишете обработку для отправки email-уведомлений клиентам. Чтобы подключиться к серверу почты, вам нужны: логин, пароль, SMTP-адрес. Что делает большинство программистов?

1 стартмани

23.06.2025    2914    markbraer    8    

3

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

Обработка позволяет анализировать структуру методов в модуле и легко составлять её структуру, канонизировать, используя стандарты 1С.

3 стартмани

20.06.2025    1889    21    MikeLetto    3    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. leosoft 167 29.12.18 12:24 Сейчас в теме
Вчера аналогичная публикации была ... https://infostart.ru/public/972709/
3. WI_IL 126 29.12.18 12:53 Сейчас в теме
2. bulpi 217 29.12.18 12:28 Сейчас в теме
Уважаемый, если бы Вы НА САМОМ ДЕЛЕ открыли способ , как разбираться в чужом коде, Вам бы памятник при жизни поставили. А это - боян для новичков.
NikieMSE; Natalia; maksa2005; aexeel; YLioY; Кадош; Lyolik; lunjio; TreeDogNight; zeegin; EliasShy; +11 1 Ответить
4. vasilev2015 2801 29.12.18 13:12 Сейчас в теме
Здравствуйте !

Вчера только сделал короткую заметку, что можно применять поиск в окне замера производительности

https://infostart.ru/public/833094/


p.s. Пользуясь случаем, поздравляю всех с Новым Годом !
5. vasilev2015 2801 29.12.18 13:27 Сейчас в теме
(4) Плюсанул. Пусть будет по-новогоднему ))
6. rikony 29.12.18 13:46 Сейчас в теме
Это не баян , а взгляд со стороны :)
7. VmvLer 29.12.18 14:03 Сейчас в теме
с асинхронными вызовами так не всегда будет прокатывать
8. CheBurator 3231 29.12.18 17:43 Сейчас в теме
Спасибо! Мне, как новичку - полезно!
kuzyara; Rasdag; Dimasik2007; Redokov; Batman; Yakud3a; +6 Ответить
9. RustIG 1901 29.12.18 18:54 Сейчас в теме
за 10 лет ни разу "именно так" не изучал чужой код - просто шел по отладке "следующий шаг" - еще "следующий шаг"....
а вообще представленный метод полезный

П.С. баян - не баян... мне не интересно, как это назовут....
поток инфы настолько огромен, что часть инфы проходит мимо...
для меня инфа полезна, хоть я не новичок в плане копаться в чужом коде...
ivprovotorov; IvanovAV; Voblhned; +3 Ответить
10. Voblhned 58 29.12.18 18:58 Сейчас в теме
(9) плюсую, прямо мысли из головы выдернул, только про 10 лет , это не про меня xD
17. starik-2005 3188 05.01.19 11:23 Сейчас в теме
(11) кстати, в стеке вызовов доступны все переменные всех функций стека. Т.е. проваливаешься на уровень Х и можешь посмотреть любую переменную.
Vlad_2008; +1 Ответить
20. Dementor 1058 06.01.19 13:06 Сейчас в теме
(9) Десять лет назад я тоже начинал "расследование" от кнопочки "Сформировать". Но пару лет назад мне попалась УНФ, а там на банальную печать документа жесткая мешанина из процедур модуля менеджера этого документа, специальной печатающей именно этот документ обработки и кучи вызовов из общих модулей, часть из которых спрятана в БСПшных кишках, и часть из которых вызывается вообще в фоне. Почухал репу и на меня снизошло озарение про "Замер производительности", благодаря которому очень быстро все вызовы проанализировал.

Теперь у меня две стратегии разбора чужого кода. При анализе "классических" конфигураций - просто движение по F12 или пошаговая отладка. А для конфигураций на основе БСП - по "замеру производительности".
VyacheslavShilov; ivprovotorov; Vlad_2008; WI_IL; RustIG; +5 Ответить
11. ResAndDev 30.12.18 09:57 Сейчас в теме
Режим отладки применял и ранее, но со "скрипом". Про стек вызовов интересно...
12. Dozkni 48 02.01.19 10:22 Сейчас в теме
<Неизвестный модуль>.<Неизвестная процедура>()
так вот и устроен механизм печати...
ivprovotorov; kuzyara; Dimasik2007; Stivens; asupsam; Zab; rovenko.n; FesenkoA; +8 Ответить
16. starik-2005 3188 05.01.19 11:16 Сейчас в теме
(12) все куда проще. Есть модуль менеджера печати, общая форма печатного документа и экспортные методы менеджера объектов, из которых вызывается печать. Есть функции бинда кнопок в интерфейс, которые вызывают уже общую форму, которая создает объект с макетами и дергает функции менеджера объекта, формирующие макет, прибинденые к кнопке.
13. IvanovAV 160 04.01.19 15:51 Сейчас в теме
Интересно им в 1С, за бестолковое усложение кода, молоко или премию выдают?
chernov.gigansk.ru; serega_sun; +2 Ответить
15. starik-2005 3188 05.01.19 11:11 Сейчас в теме
(13) я всегда за примеры. Если код пишет сотня человек с высокой текучкой кадров, то подобный стек вызовов вполне оправдан, ибо повышает уровень абстракции, чем, в пределе понимания, весьма существенно упрощает код.
18. IvanovAV 160 05.01.19 18:30 Сейчас в теме
(15)
уровень абстракции
можно по проще и на понятном языке выражаться? 1С позиционирует себя на рынке, как легко модифицируемые продукты на коленке любым средним специалистом, для малого и среднего бизнеса. А тут надо быть экспертом по типовым КФГ. Наши клиенты (малый бизнес) не готовы оплачивать работу эксперта, когда надо НАПРИМЕР: вывести/убрать пару доп. колонок или подписей на печ. форму. Анализируя код типовых, мы уже давно пришли к выводу, проще (дешевле для клиента) написать свое с нуля, простое и надежное как АК - 47 и его модернизировать, чем искать точку минимального воздействия в каше из типовых модулей, которые еще и переписываются от релиза к релизу...
П.С. А самое дешевое (цена/качество) сидеть на УТ 10.3, и заточить ее под свои бизнес процессы, за несколько десятков часов. Наполнить готовыми доп. подсистемами с инфостарта. Окупаемость ROI, такого проекта для малого бизнеса, несколько месяцев.
Areal; Yashazz; RustIG; +3 Ответить
19. starik-2005 3188 06.01.19 09:35 Сейчас в теме
(18) уровень абстракции - это весьма простой термин. Любая область воспринимается легче, если говорить о ней в общих чертах, т.е. не погружаясь в детали. Вот, например, об организме - мозг управляет мышцами, которые крепятся к скелету. Для питания мышц есть кровеносная система и сердце, которое приводит ее в движение. Легкие снабжают кислородом, кишечник - питательными веществами, которые попадают в него изо рта через пищевод и желудок. Почки и печень очищают кровь и снабжают ферментами с помощью желез. Ну и т.д.

Это уровень абстракции, приближенно описывающий работу организма. То же самое можно сказать и о программировании. В ООП обычно есть некий глобальный объект - синглтон, к которому вяжется вся логика верхнего уровня, которая состоит из конструктора начального состояния, механ змов, осуществляющих его изменение. Дальше к интерфейсным объектам цепляются обработчики событий.

В итоге чем выше уровень абстракции, тем легче воспринимать программу, как систему взаимодействующих сущностей. А дальше кже детали реализации конкретного объекта, которые и составляют основную сложность в программировании.
Liyа; WI_IL; Dementor; Denis_CFO; +4 Ответить
14. starik-2005 3188 05.01.19 11:09 Сейчас в теме
Правильный метод. Сто лет его юзаю (еще с паскалей, но том это иначе называлось - профилирование, но я юзал турбо-дебагер). На курсах подготовки экспертов данный метод рекомендуют (настоятельно) для поиска узких мест перед тем как лезть в профайлер скула и техжурнал.
21. v3rter 09.01.19 16:25 Сейчас в теме
С одной стороны, сложность типового кода повышает общую капитализацию сегмента отрасли и уменьшает общее количество некачественного исходного кода, с другой стороны она же снижает производительность и повышает требования к аппаратному обеспечению. Уже сейчас минимальная конфигурация компьютера для комфортной работы в типовых конфигурациях приближается к игровым системам начального уровня.

Если тенденция не изменится, то предположу появление и рост объемов методических пособий по технике убеждения клиентов и работе с возражениями, тематических семинаров, пропагандистских материалов, литературы класса "как преодолеть себя и достичь успеха с 1С", детских лагерей и кружков изучения гимна 1С... Или я увлёкся? )
A1WEB; pivo_san; acanta; +3 Ответить
22. acanta 09.01.19 17:42 Сейчас в теме
(21) все правильно. Инфраструктура франчайзи нужна, но программисты в них уже не требуются, разве что в очень крупные и значительно меньше, чем сейчас.
Для отправки сообщения требуется регистрация/авторизация