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

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

См. также

Перенос данных 1C Рефакторинг и качество кода Разработчик 1С 8.3 Бесплатно (free)

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

вчера в 10:00    146    nedomolkov.ivan    0    

0

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

Первоначальная задача заключалась в локальном переносе добавленных объектов метаданных (справочников, документов) и кастомной логики в расширение без потери накопленных данных. Но в ходе проекта, когда работы были уже практически завершены, заказчик принял решение полностью вернуть конфигурацию к типовому виду и перенести в расширение все измененные свойства стандартных объектов, включая изменения типов реквизитов.

22.09.2026    396    1c-izh    0    

4

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

Штатная страховка внутри цепочки обработки умеет прятать дефекты того шага, который стоит перед ней. У нас так и вышло: валидатор чинил результат постфактум, на выходе всё выглядело корректно, и никто не видел, что предыдущий шаг молча теряет данные. Вылезло это только на независимой проверке чужими глазами. Разбираю, чем инвариант отличается от сценарного теста и почему обычное умножение вытащило дефект из красивой метрики 0,997. Отдельно про 13 дублей, которые приехали из источника ещё до всякой обработки, и про две находки, которые оказались вообще не моими: они жили в эталонной реализации, откуда я списывал логику. Вторая часть про лимит выхода модели: почему обрезка ответа по длине это тихий ноль в мониторинге и как смена формата на дельты уронила выход до 4 951 токена. Есть отклонённые гипотезы и честный список того, чего мы так и не померили.

21.09.2026    346    nedomolkov.ivan    2    

1

WEB-интеграция Рефакторинг и качество кода Системный администратор Разработчик 1С 8.3 Бесплатно (free)

Я сел проверять внутренний поисковый сервис по коду: можно ли доверять ему в автоматическом режиме. Сверка с обычным текстовым поиском по файлам дала 261 из 261, 264 из 264 и 182 из 182 совпадений, разбор структуры файла - 318 функций из 318. Стопроцентная точность. Этот же замер и вскрыл, что опираться на сервис нельзя: искал он безупречно, только совсем не в том месте, которое я ему называл. Внутри разбор трёх дефектов, сложившихся в один тихий отказ: аргумент, проглоченный без ошибки; умолчание, выставленное когда-то наугад; снимок данных, у которого в ответе не указан возраст. Плюс регулярное задание, которое вся команда считала работающим и которого не существовало никогда. Перенос на 1С прилагается: готовый цикл проверки, после которого HTTP-сервис перестаёт молча принимать мусор.

21.09.2026    345    nedomolkov.ivan    0    

0

Логистика, склад и ТМЦ Рефакторинг и качество кода Разработчик Аналитик Руководитель проекта 1С 8.3 Бесплатно (free)

Кладовщик получает задачу: на складе проверки лежат две штуки. Идёт в зону, а там всё на месте и никакой задачи в складской системе нет. Так работала автоматическая сверка остатков между учётной и складской системами: разницу она переносила документом, а комментарий к этому документу восемь месяцев отправлял людей искать несуществующий ноль. Робота разобрали до кода. Обе сравниваемые величины оказались синтетическими: слева физический срез с вычетами по активности и окнами в 60 минут и 12 часов, справа учётный остаток на конец дня минус трёхчасовой хвост непроведённых ордеров. Порог срабатывания стоял в нуле, поэтому робот исправно оформлял собственный шум измерения: за 60 дней он сам создал 62,7% оборота технического склада, а 2 081 артикул из 2 102 приезжал туда и уезжал обратно. Внутри обе формулы, замер лага отгрузки, снятая гипотеза и честная граница данных.

21.09.2026    336    nedomolkov.ivan    0    

0

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

Как за вечер проверить, годится ли локальная модель для поиска ошибок в вашем коде 1С, и не обмануть себя по дороге. Разбираю замер Qwen2.5-Coder 1.5B, 3B и 7B на коде с заранее известными дефектами: почему полноту и шум надо считать раздельно, как 3B набирает высокий балл, вообще не читая код, сколько минут уходит на боевую процедуру на процессоре и на GTX 1650, и чем кончилась попытка подложить модели справку по методам платформы.

16.09.2026    1287    nedomolkov.ivan    4    

1

Инструментарий разработчика Нейросети Рефакторинг и качество кода Аналитик Пользователь Руководитель проекта Бесплатно (free)

Железо перестало быть проблемой, и качество ответов немедленно встало в потолок. Дальше пошли три улучшения, каждое из которых выглядело очевидно правильным: свой справочник стандартов, код процедур в поисковом индексе и переписывание вопроса отдельной моделью. Первое работало, но стоило пятнадцать тысяч токенов в каждом запросе. Второе уронило находимость на двадцать процентов. Третье уронило качество с 0,864 до 0,782 и растянуло прогон с 88 секунд до 302. Рассказываю, чем я это померил, почему на глаз ни одно ухудшение не видно и почему добавление правдивой информации регулярно делает поиск хуже.

14.09.2026    732    solbol    0    

3
Для отправки сообщения требуется регистрация/авторизация