Одна настройка, которая превращает структуру модуля в оглавление

25.09.26

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

8 приёмов за 10 минут: перестаньте прокручивать общий модуль на три тысячи строк как ленту в соцсети. Outline, #Область и фильтр - и вы уже в нужной процедуре, а не на строке «где-то внизу».

Приём 1. Дано: модуль на три тысячи строк

Дано: расширение для ERP, общий модуль СборкаЗаказовСервер, в типовой части уже четыре с половиной тысячи строк, ваши процедуры спрятаны внизу. Нужно за десять минут поправить расчёт резерва в ПодобратьКомплектующиеПоСпецификации и не сломать соседний экспорт. Я раньше крутил колёсико, как на лифте без кнопок: минут сорок, если модуль открыт впервые за неделю.

Выход не в «ещё один поиск по конфигурации», а в том, чтобы модуль читался как оглавление. Первый шаг: открыть структуру модуля и не закрывать её, пока задача жива.

В конфигураторе это список процедур и областей; в EDT та же идея через outline. Экономия на одной правке, например, двадцать пять минут прокрутки.

Я сознательно не трогаю дерево метаданных: оно нужно, когда вы не знаете, в каком модуле лежит код. Здесь модуль уже открыт, и узкое место - навигация внутри файла.

Окно структуры я закрепляю в привычном месте: в конфигураторе это отдельная панель, в EDT - боковая вкладка Outline. Пока панель закрыта, мозг снова уходит в прокрутку, даже если вы «знаете примерный номер строки».

На созвоне с аналитиком это спасает: вы за секунду показываете список экспортных точек, не притворяясь, что помните весь модуль наизусть.

 

Оценка времени на одну правку в большом общем модуле

Оценка времени на одну правку в большом общем модуле

 

Приём 2. Области как закладки на карте

Без #Область структура модуля превращается в телефонную книгу без букв: все процедуры в одном списке. Я добавляю области даже в расширении, если блок живёт дольше одного релиза.

Имена у меня скучные, зато узнаваемые: ПрограммныйИнтерфейс, СлужебныйПрограммныйИнтерфейс, РасчётРезервов, ОбработчикиОбновления. В структуре модуля клик по области сворачивает шум.

Вы прыгаете не к строке 3187, а к смыслу «расчёт резервов». На новом общем модуле закладываю пять минут на разметку, потом каждая точечная правка короче на десять-пятнадцать минут.

#Область РасчётРезервов

Функция ДоступныйОстатокДляСборки(Номенклатура, Склад, ДатаСреза) Экспорт
	// ...
КонецФункции

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

Важно не плодить вложенность глубже двух уровней: иначе outline снова ломается. Одна область - одна зона ответственности в вашем расширении.

Если типовая область уже есть, я не дублирую её именем «Доработки». Свой блок называю по задаче: РезервПодСборку, а не по номеру тикета.

Области в расширении не «ломают» поддержку: вы не трогаете типовой текст, только добавляете свой каркас в конце или в отдельном файле модуля расширения. Структура при этом остаётся читаемой и для вас через полгода.

Когда область длинная, внутри неё всё равно держу процедуры короткими. Outline показывает имена, а не простыни на двести строк.

 

Приём 3. Фильтр в структуре вместо Ctrl+F

Когда процедур больше сотни, я печатаю в поле фильтра структуры не полное имя, а устойчивый фрагмент: Резерв, Спецификац, Обновлен. Глобальный поиск по модулю находит комментарии и мёртвые строки.

Фильтр структуры показывает только объявления. Приём особенно выручает, если типовой модуль переименовывали в патче: в коде ещё встречается старый префикс, а в структуре уже новый.

Экономия скромная, но стабильная: около пяти минут на каждый третий поиск по модулю. Сначала фильтр, потом уже Ctrl+F по телу процедуры.

Так я не путаю «где объявлено» и «где упомянуто в комментарии к регламенту». Для регистра ОстаткиКомплектующих это мелочь, для нервов - нет.

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

В EDT фильтр outline часто переживает перезапуск IDE, если проект тот же. В конфигураторе привычка важнее: открыли модуль - сразу структура.

 

Приём 4. Пара «структура + история позиций»

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

В EDT это стек Back; в конфигураторе - возврат к предыдущей позиции через меню навигации или сочетание, которое вы повесили сами. Сценарий типичный: из СборкаЗаказовСервер ушли в ЗапасыСервер проверить вызов.

Вернулись в ту же строку Если Не ЗначениеЗаполнено(Спецификация) без ручного поиска. На цепочке из четырёх модулей это, например, минус пятнадцать минут нервов.

// Вызов, от которого уходим в «найти ссылки»
Остаток = ЗапасыСервер.СвободныйОстаток(
	Номенклатура, Склад, ДатаДокумента);

Сначала отметьте процедуру в структуре: «вернуться сюда». Потом уже уходите по ссылкам. Так отладка не превращается в игру «угадай строку».

Если история навигации пустая, значит, вы открыли модуль двойным кликом из дерева заново. Лучше один раз пройти цепочку без закрытия окна.

Иногда я ставлю временную закладку на строке: в EDT bookmark, в конфигураторе - комментарий // TODO-вернуться, который сразу виден в поиске по модулю. После задачи комментарий удаляю, чтобы не засорять diff.

На задачах с документом ЗаявкаНаКомплектацию цепочка модулей короткая, но вызовов много. Без возврата по истории я уже не раз оставлял полуправку в «чужом» месте.

 

Приём 5. Чек-лист разметки нового блока

Когда добавляю в расширении новый серверный блок, прохожу один и тот же короткий список. Так модуль остаётся навигируемым для коллег без моих устных подсказок.

  1. Область с говорящим именем, не «Доработка1».
  2. Экспорт только у точек входа, внутренности без Экспорт.
  3. Первый комментарий в области: для чего блок, какой документ или регистр.
  4. Структура модуля открыта: процедура видна в фильтре по двум словам.
  5. Один раз пройти «найти ссылки» на экспорт и убедиться, что вызовы не из макетов.
  6. Закрывающий #КонецОбласти сразу после последней процедуры, без «хвоста» кода.

Если пункт 6 провалили, синтаксический контроль иногда молчит до первого merge. Я ловил «область на полмодуля» так: в структуре пропадала половина процедур, а фильтр вёл себя как лотерея.

Чек-лист занимает две минуты после написания кода. Без него ревьюер тратит десять минут на вопрос «где у вас это лежит».

Пункт про «найти ссылки» я не заменяю глобальным поиском: мне нужны реальные вызовы, а не совпадение строки в макете или в комментарии к обработке.

Когда блок готов, я прошу коллегу найти процедуру только через outline. Если он не нашёл за минуту, чек-лист не сработал, и я правлю имена областей, а не оправдания.

 

Шесть пунктов перед merge нового блока в модуле

Шесть пунктов перед merge нового блока в модуле

 

Приём 6. Свернуть типовое, развернуть своё

В смешанном модуле outline показывает всё подряд: типовой код, ваши вставки, чужие области. Я временно сворачиваю области типовых ОбновлениеИнформационнойБазы и Печать.

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

Разово настраиваю привычку за две минуты, дальше каждый обзор модуля короче на треть. На ревью diff это тоже видно: ваш блок лежит в своей области, а не размазан по файлу.

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

Области типовых ОписаниеПеременных и Инициализация я почти всегда сворачиваю: туда заглядываю редко, а места в списке они занимают много.

Если правка затрагивает типовой контракт, наоборот, разворачиваю только ПрограммныйИнтерфейс и сворачиваю всё своё. Так меньше шансов случайно изменить экспортную сигнатуру в доработке.

 

Приём 7. Шаблон области и быстрый аудит outline

У меня в шаблонах текста лежит каркас области с заглушкой имени. Вставка - три секунды, дальше только имя и тело. Это не копипаст логики из соседнего модуля: только разметка.

#Область ИМЯ_БЛОКА

// Назначение: 
// Связь: документ ЗаявкаНаКомплектацию, регистр ОстаткиКомплектующих

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

Шаблон дисциплинирует: область появляется до кода, а не «когда уже сто строк написали». На спринт из пяти задач это, например, час суммарно, который иначе уходит на поиск своих же процедур.

После рефакторинга открываю outline и смотрю: не расползлись ли области, не появились ли две процедуры с одинаковым фильтром Подбор. Если соседние ПодобратьКомплектующие*, это сигнал объединить или переименовать.

Тот же аудит спасает перед сдачей задачи по документу ЗаказНаСборку: видно, что «служебные» функции случайно оказались в области экспорта. Две минуты в outline дешевле, чем комментарий на merge request.

В EDT сниппет области лежит в репозитории расширения: новый человек в команде получает те же заголовки без чтения wiki. В конфигураторе достаточно личного шаблона текста на три строки.

Иногда я добавляю в комментарий области номер задачи, но не в имя области. Имя остаётся для людей, номер - для истории в git.

 

Цепочка: фильтр, правка, ссылки, возврат

Цепочка: фильтр, правка, ссылки, возврат

 

Приём 8. Три пункта в ежедневную привычку

Структура модуля открыта слева, пока вы в общем модуле больше пяти минут. Фильтр структуры - первый инструмент, Ctrl+F по модулю - второй. Каждая новая процедура в расширении сразу получает область и строку в комментарии «связь с объектом».

Я не заучиваю десять горячих клавиш. Держу три: структура модуля, перейти к определению, шаг назад по истории. Остальное - через меню, пока не прижилось.

Коллега без этих привычек всё ещё «найдёт» код через поиск по конфигурации на тысячи совпадений. Вы - через оглавление за три клика.

  • Outline + фильтр по фрагменту имени вместо прокрутки.
  • Области с говорящими именами и коротким комментарием связи.
  • Возврат по истории навигации после «найти ссылки».

Раз в месяц я прохожу один большой модуль только мышкой, без outline, чтобы не обманывать себя. Разница по времени обычно в разы, и команда перестаёт спорить «на глаз».

Эти три пункта я не продаю как «методологию»: это гигиена, как мыть руки перед обедом. Зато на десятой задаче в квартал экономия складывается в полдня, которые можно потратить на тесты, а не на прокрутку.

Если модуль маленький, до ста строк, outline не обязателен. Порог у меня простой: как только фильтр структуры даёт больше пяти совпадений на один фрагмент, пора жить в оглавлении.

Запишите себе этот порог на стикере у монитора, если откладываете привычку. Через неделю стикер можно выкинуть: рука сама тянется к панели структуры.

 

Где IDE держит контекст модуля

КонфигРедактор - IDE для 1С: CF/EPF, синтаксис и ИИ в одном окне - удобен там, где модуль большой, а правка локальная. Дерево процедур и областей видно рядом с текстом, подсветка синтаксиса до выгрузки ловит битый #КонецОбласти.

ИИ опирается на открытый фрагмент, а не на выдуманный модуль целиком. Для цепочек «найти ссылки → вернуться → дописать область» это ближе к нормальной IDE, чем к прокрутке в монолитном окне конфигуратора.

Когда в одном окне видны и дерево процедур, и подсветка областей, меньше соблазна править «наугад» посреди типового кода.

КонфигРедактор на Infostart

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

1С конфигуратор EDT общие модули разработка лайфхаки навигация по коду расширения конфигурации 1С структура модуля outline области общий модуль навигация расширение лайфхаки разработчика

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

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

Проверила, что Analyzer 1C 2.7.65 умеет по руководству и по ответам его REST: граф вызовов, запросов и прав есть; готовых проверок правил команды и CLI для них в исследованной поставке не нашла. Записала договорённости команды правилами, сняла базовую линию на типовой УТ 11.5 (1776 старых нарушений по шести правилам) и на «Нано-УТ» заложила 5 новых: проверка нашла все пять, ложных 0. Прилагаются инструмент с 92 тестами и материалы опыта.

1 стартмани

29.10.2026    374    Ninel_S    0    

1

Рефакторинг и качество кода Разработчик 1С:Предприятие 8 Россия Бесплатно (free)

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

29.10.2026    299    YA_777378709    0    

4

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

Рассказываем, почему качественный код – это не техническая прихоть, а актив, который помогает бизнесу быстрее адаптироваться к изменениям и запускать новые фичи без бесконечного преодоления техдолга. Показываем, как объяснить бизнесу ценность рефакторинга через понятные признаки: замедление разработки, неточные оценки, страх перед legacy и хрупкость системы. Разбираем, почему неправильный рефакторинг может быть дороже его отсутствия, какие анти-паттерны ломают процесс и как не превратить улучшения в бесконечную переделку ради переделки. Объясняем, как сделать рефакторинг частью культуры команды: договориться с бизнесом, научить разработчиков видеть проблемные места, закрепить правила и поддерживать улучшения на уровне тимлидов, архитекторов и всей команды.

28.10.2026    400    Pavel791    0    

2

Рефакторинг и качество кода HighLoad оптимизация Системный администратор Разработчик Стажер 1С 8.3 Абонемент ($m)

Если к HTTP-сервису 1С обращаются сразу несколько программ, сколько запросов в секунду он успеет обработать? Я опубликовала простой HTTP-сервис на нашей "подопытной" конфигурации «Нано-УТ» (файловая база, Apache, без прав администратора) и нагрузила его скриптом на Python. Ответ: около 15-16 запросов в секунду, сколько бы клиентов ни обращалось одновременно. Запросы ждут своей очереди, и при 32 клиентах ответ приходит через 2 секунды вместо 64 мс. Заодно разобрала скрипт из первого варианта статьи: он «проверял» сервер, который отвечал по одному, и считал ошибки вместе с успешными ответами. В архиве исправленный скрипт, учебный сервер, HTTP-сервис для 1С и инструкция по запуску.

1 стартмани

23.10.2026    470    Ninel_S    3    

2

Рефакторинг и качество кода Разработчик 1С 8.3 Абонемент ($m)

Запустили Analyzer 1C 2.7.65 на промышленной конфигурации (596 модулей, 13 669 функций) и исследовали перегруженные функции (до 1887 строк), циклические зависимости и экран «Циклы» (кольцо из 64 модулей). Разобрали, почему популярные метрики (McCabe, связность) не представлены в продукте вендора, и составили пошаговый план разделения модуля. Привели проверенный платформой 8.3.27 пример до и после рефакторинга и выявили скрытую ловушку загрузки модулей с точкой в имени.

9 стартмани

19.10.2026    409    Ninel_S    2    

2

Рефакторинг и качество кода EDT СКД Разработчик 1С 8.3 1С 8.5 1С:Бухгалтерия 3.0 Бесплатно (free)

Одиннадцать граблей схем компоновки, которые не видно в конструкторе и не ловит EDT, на реальных отчетах БП КОРП. Формат числа задается в двух местах, и условное оформление варианта перебивает формат поля. Ресурс складывает штуки с часами, и помогает выражение «только когда единица одна». Ресурс пуст в детальных записях, параметр не появляется в шапке без userSettingID, valueListAllowed ломает границы периода, Остатки и СрезПоследних с параметром периода падают с «Несоответствием типов», title без xsi:type дает «Исключение XDTO» при загрузке. В конце код проверки схемы из файла до обновления базы, сводная таблица и чеклист.

16.10.2026    429    Konstmax13    2    

2

Инструментарий разработчика Нейросети Рефакторинг и качество кода EDT Разработчик 1С 8.3 1С 8.5 1С:Бухгалтерия 3.0 Бесплатно (free)

Как ИИ-агент (Claude Code) работает в живом EDT-проекте 1С:Бухгалтерии КОРП 3.0: из чего собрать стенд с MCP-сервером для EDT, как ставить задачи агенту, где он ломает проект и какие проверки это ловят. Реальные случаи: рукописные метаданные, ронявшие конфигуратор; четыре дня зависшего обновления из-за порядка блоков в Rights.rights; ошибки, которые EDT пропускает, а платформа нет; сплошная сверка вместо «вроде работает». В приложении шаблон CLAUDE.md, шаблон правила, чеклист перед обновлением базы и скрипты проверки ролей и схем СКД.

15.10.2026    3336    Konstmax13    11    

11

Рефакторинг и качество кода Тестирование QA Разработчик 1С 8.3 Абонемент ($m)

Инженерный анализ влияния (Impact Analysis) при изменении общего метода в 1С:Предприятии: почему штатный поиск ссылок скрывает 99% зависимостей и как обратный обход графа вызовов выявляет 370 скрытых потребителей на глубине 3 уровней. В статье — верификация сквозной цепочки обмена с маркетплейсом; в архиве-компаньоне — автономный BFS-анализатор на Python, слепки графа и план регрессионного тестирования.

1 стартмани

12.10.2026    271    Ninel_S    0    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. sleemp 94 25.09.26 17:40 Сейчас в теме
Хочется скриншоты результатов. Без них не очень понятно что получаем в итоге.
Dementor; max2000119187; mskamrakova; mrChOP93; e-9; VladC#; ardn; SirAlex; native-api; biryukmikh; +10 – Ответить
2. biryukmikh 29 25.09.26 19:51 Сейчас в теме
Хороший лайфхак. Как решение задачи быстрого поиска блока кода одним разработчиком и особенно большой командой.
Замечание: без демонстрации картинок As-Is и To-Be сухой текст читать трудно.
max2000119187; mrChOP93; SirAlex; +3 – Ответить
3. Slotty 25.09.26 21:13 Сейчас в теме
на скринах будет куда понятнее
4. axelerleo 327 26.09.26 11:58 Сейчас в теме
Отчего-то ощущение, что текст написан нейросетью.
"Окно структуры я закрепляю в привычном месте: в конфигураторе это отдельная панель" - в конфигураторе ctrl+alt+p, и это модальное окошко так-то, куда и как его автор закрепляет?
"Без него ревьюер тратит десять минут на вопрос «где у вас это лежит»." Ревьюер будет смотреть diff, хоть через историю хранилища, хоть через гит.
"Иногда я ставлю временную закладку на строке: в EDT bookmark, в конфигураторе - комментарий // TODO-вернуться, который сразу виден в поиске по модулю. После задачи комментарий удаляю, чтобы не засорять diff." - что в конфигуратре мешает поставить закладку по F2, или точку останова, и по списку точек останова к нужной вернуться? ну или по стеку вызовов? за 20 лет работы ни разу не видел чтобы кто-то из коллег вот таким "TODO-вернуться" пользовался
max2000119187; mrChOP93; Dragonim; Cерый; h00k; e-9; Ninel_S; ardn; +8 – Ответить
6. Ninel_S 214 26.09.26 18:36 Сейчас в теме
(4) Автор "Инфобот" - так написано в информационном блоке к статье.
5. Ninel_S 214 26.09.26 18:24 Сейчас в теме
Пыталась поставить "плюсик" за https://infostart.ru/marketplace/2743614/, так как прочитала и восхитилась и этой статьей и идеей. Очень не хватает "бесплатных" файлов для скачивания.
Поставила "плюсик" здесь, а платную разработку Вы могли бы просто приложить как демо, но с урезанными возможностями. Те, кому она нужна не станут её декомплировать, деобфусцировать и прочие "де-". Проще купить у Вас. Цена у Вас там очень гуманная.
8. max2000119187 20 08.10.26 09:23 Сейчас в теме
(5) день добрый! если бы не Ваш коммент , то я бы не разобрался, что автор имеет в виду) При беглом прочтении сразу и не поймешь, что за
открыть структуру модуля
7. maxrubtsoff 24 04.10.26 19:11 Сейчас в теме
3000 строк в модуле - проблема не неудобства поиска, а плохо спроектированного решения
9. Dementor 1077 08.11.26 12:29 Сейчас в теме
После перехода из «найти ссылки» в другой модуль я теряю контеделению, затем назад по истории навигации.екст, если не фиксирую точку возврата. Держу под рукой пару жестов: перейти к опр


Как я понимаю, текст никто не вычитывал. Помимо опечаток тут много воды и самоповторов. Статья безусловно полезна для новичков, но сперва ее должны прочесть.
Для отправки сообщения требуется регистрация/авторизация