Рефакторинг в редакторе модулей

12.04.21

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

Для тех, кто не пользуется Ctrl+Alt+R. “Контролируемый процесс улучшения кода без написания новой функциональности”, “Равносильное преобразование алгоритмов” и т.п в данной статье НЕ рассматриваются. Тема статьи: замечательные команды из подменю Рефакторинг контекстного меню редактора модулей в конфигураторе. В статье описано, как команды из подменю Рефакторинг помогают при написании кода

См. также: Быстрый ввод неудобных символов

Краткое содержание

Пользуйтесь Ctrl+Alt+R в редакторе модулей.

Мотив

Неожиданно выяснилось, что многие знакомые программисты не пользуются подменю Рефакторинг в редакторе модулей конфигуратора. Как ни странно, 
        - Описания подменю Рефакторинг нет в справке конфигуратора (платформа 8.3.16.1224);
        - Описания подменю Рефакторинг нет на Инфостарте;
        - В справке конфигуратора сочетание клавиш Ctrl+Alt+R не упоминается.
В результате решил написать об этом статью.

Подменю Рефакторинг

Подменю Рефакторинг доступна в редакторе текста встроенного языка в контекстном меню и в меню Текст.
Подменю Рефакторинг появилось в платформе 8.3.5, которая вышла в августе 2014 года.
Чем же команды подменю Рефакторинг отличаются от других команд меню Текст?
Главное особенность - учет семантики встроенного языка.

Команда Переименовать

Рис 1. Команда Переименовать

Команда Переименовать (Ctrl+Alt+R) - вторая в подменю Рефакторинг. Но (с моей точки зрения) является основной и самой мощной. Давно пользуюсь и до сих пор восхищаюсь простотой и мощью. Особенно Команда Переименовать понравится прокрастинирующим перфекционистам. Теперь можно бесконечно переименовывать переменные, процедуры и функции, не боясь испортить программу.
Команда предназначена для переименования имен переменных и функций.
В отличие от олдскульной Ctrl+H, команда Переименовать понимает, что именно она переименовывает.

Действие команды зависит от текущего положения курсора в тексте модуля.
Рассмотрим варианты:

  • Локальная переменная
    • Команда изменяет имя локальной переменной в пределах процедуры или функции.
  • Локальная процедура или функция
    • Команда изменяет имя процедуры или функцию в пределах модуля
  • Метод-обработчик событий элементов формы или команды в модуле формы
    • Команда изменяет имя метода-обработчика в модуле и соответствующую ссылку в палитре свойств.
  • Метод-обработчик оповещения
    • Команда изменяет имя метода и соответствующий конструктор ОписаниеОповещения.
  • Глобальная переменная (определена в Модуле приложения)
    • Команда изменяет имя глобальной переменной во всех модулях.
  • Экспортные процедуры и функции
    • Команда изменяет имя экспортной процедуры или функции во всех модулях. Действует только в модуле, в котором процедура описана.
  • Константы, комментарии, пробелы, табуляции и т.п.
    • Команда недоступна
Команда Выделить фрагмент

Из выделенного фрагмента кода создается новая процедура или функция с постфиксом Фрагмент. А вместо выделенного фрагмента вставляется вызов новой процедуры или функции.
Удобно использовать, когда надо разбить слишком длинную процедуру на несколько частей. Команда все сделает аккуратно, передаст параметры, локальные переменные будут описаны в перечислены в операторе Перем.

Команда Создать описание метода

Создает комментарии перед описанием процедуры или функции. Комментарии создаются в стандартном формате, который используется для формирования контекстной подсказки.

Команда Создать обработку оповещения

Помогает создавать обработки оповещения для асинхронных методов типа ПоказатьВопрос().
Пример:

// До команды Создать обработку оповещения
&Наклиенте
Процедура Пример()
	ПоказатьВопрос(, "Будень использовать рефакторин?", РежимДиалогаВопрос.ОК);
КонецПроцедуры

// После команды Создать обработку оповещения
&Наклиенте
Процедура Пример()
	ПоказатьВопрос(Новый ОписаниеОповещения("ПримерЗавершение", ЭтотОбъект), "Будень использовать рефакторин?", РежимДиалогаВопрос.ОК);
КонецПроцедуры

&Наклиенте
Процедура ПримерЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт

КонецПроцедуры
Подменю нерекомендуемые синхронные вызовы

Начиная с платформы 8.3.3 фирма 1С придерживается политики отказа от модальных вызовов. Команды подменю предназначена для перехода на асинхронные вызовы.

Рефакторинг в EDT
В EDT реализованы дополнительные инструменты рефакторинга.
Кратко опишу два самых интересных:
  1. В тексте модуля процедуры и функции рассматриваются как отдельные объекты. Эти объекты отображаются в панели Схема. Процедуры и функции можно быстро находить, перемещать и копировать мышкой.
  2. При переименовании метаданных (объектов или реквизитов) выводится окно предварительного просмотра изменений, похожее на окно сравнения объединения конфигураций. Изменения можно принять или отклонить.

На этом все.

См. также: Быстрый ввод неудобных символов

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

Ctrl+Alt+R Переименование Рефакторинг Редактор Конфигуратор Горячие Клавиши Кодирование Модули Перфекционизм Прокрастинация

См. также

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

ИИ для код-ревью – не просто модный тренд, а реальный инструмент, который уже помогает разработчикам экономить время и повышать качество кода. В статье разбираемся, как запустить локальную LLM на базе Ollama, подключить ее к Git через Webhook и Python-скрипт, а также какие параметры модели отвечают за точность и галлюцинации. Делимся схемой работы, настройками и результатами тестирования, доказывая, что автоматизированное код-ревью действительно может работать – даже без космического бюджета.

30.10.2025    2803    user2100900    3    

12

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

Ошибки в запросах совершают все – даже самые опытные разработчики. На реальных примерах из код-ревью показываем, какие промахи незаметно закладывают мины замедленного действия в коде и работе базы. Статья поможет взглянуть на привычные запросы под другим углом и составить собственный чек-лист для уверенной и чистой разработки.

28.10.2025    3063    vaillant    35    

12

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

С ростом качества работы нейросетей и упрощением их интеграции мы решили попробовать внедрить их в процессы обновления 1С. За последний год через сервис обновлений нетиповых конфигураций 1С нашей компании прошло порядка пяти тысяч проектов, четверть из которых включала расширения. Автоматизацию обновления расширений — в частности, методов модулей расширений — мы выбрали в качестве первого шага. В этой статье расскажем про настройку модели и промпта исходя из поставленной задачи и как нейросеть помогла сократить затраты на реальных проектах.

24.10.2025    1749    1c-izh    6    

6

Обновление 1С Рефакторинг и качество кода 1С v8.3 Абонемент ($m)

Представляю вашему вниманию конфигурацию "Проверка конфигураций (версия 3)", которая позволяет проверять любые конфигурации и расширения на наличие ошибок, связанных с вызовом экспортных функций и процедур общих модулей и модулей менеджеров объектов. Проверяются ошибки: 1) Метод объекта не обнаружен 2) Недостаточно фактических параметров. 3) Слишком много фактических параметров. Рекомендуется выполнять при подготовке обновлений.

10 стартмани

17.10.2025    4492    20    Suker86    12    

19

Рефакторинг и качество кода Программист 1С v8.3 1С:Библиотека стандартных подсистем Абонемент ($m)

Сервер SQL хранит у себя данные по текущему состоянию и выполнению запросов. Например, какой запрос сколько раз выполнялся и сколько времени было потрачено. В топ таких запросов часто будут попадать тяжелые запросы и неоптимальные - которые и нужно будет найти и оптимизировать.

1 стартмани

06.10.2025    939    6    Alex_Smolensky    25    

4

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

Использование Библиотеки стандартных подсистем позволяет разработчикам 1С значительно ускорить процесс создания решений за счет готового универсального кода, поддерживаемого и обновляемого официальным вендором. В статье рассказывается про роль и применение «Библиотеки стандартных подсистем» (БСП), примеры интеграции и подключения подсистем.

23.09.2025    5013    AlexeyPROSTO_1C    1    

15

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

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

02.09.2025    2620    user1827916    1    

3

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

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

28.08.2025    10503    lapinio    46    

58
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. kalyaka 1138 11.03.20 09:21 Сейчас в теме
С рефакторингом нужно быть осторожным. Бывало, что после рефакторинга оказывалось измененной большая часть конфигурации, хотя был рефакторинг локальной переменной. Такое возможно, если платформа вдруг решит расширить область действия рефакторинга с локальной на глобальную.
tormozit; +1 Ответить
2. pparshin 520 11.03.20 10:02 Сейчас в теме
(1) Честно говоря, такого не наблюдал при Рефакторинге в редакторе модулей,
А вот если установлено:
Параметры => Общие => Рефакторинг при изменениях в метаданных и формах => флаг При переименовании выполнять изменения в модулях, то бывает.
Я хотел написать про этот Рефакторинг, но решил не перегружать статью.
3. tormozit 7319 12.04.21 11:52 Сейчас в теме
Тоже наблюдал такое.
Частный пример https://www.hostedredmine.com/issues/923908
Глубокий анализ https://partners.v8.1c.ru/forum/t/1953952/m/1953952
Выжимка из него
Команда конфигуратора "Найти использование" не гарантирует нахождение всех даже прямых использований. Поэтому опираться на ее результаты при принятии важных решений очень опасно. Наученный горьким опытом я уже давно от нее отказался в пользу глобального поиска. Однако команда рефакторинга "Переименовать переменную" использует тот же самый механизм поиска использования и тут уже глобальная замена строки в качестве альтернативы не так хорошо подходит, т.к. сопряжена с массой тонкостей.
5. pparshin 520 14.04.21 12:19 Сейчас в теме
(4) По любой статье, опубликованной на Инфостарте можно найти документацию на официальных сайтах фирмы 1С либо в Справке. По другому и быть не может.
6. Дмитрий74Чел 248 04.04.22 13:31 Сейчас в теме
(5) это дополнение, не критика
pparshin; +1 Ответить
7. пользователь 26.09.23 09:30
Сообщение было скрыто модератором.
...
8. pparshin 520 26.09.23 10:51 Сейчас в теме
(7) Добрый день! Не совсем понятно, что имеется ввиду.
Для отправки сообщения требуется регистрация/авторизация