Как отключить автоматический поиск ссылок и рефакторинг при удалении метаданных в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Выясним причину такого поведения системы. В платформе 1С:Предприятие 8.3 встроен механизм рефакторинга. При удалении или изменении имени реквизита Конфигуратор инициирует глубокий синтаксический анализ всех модулей конфигурации (построение синтаксического дерева — Abstract Syntax Tree), пытаясь найти и актуализировать все упоминания изменяемого объекта. На тяжелых типовых конфигурациях (таких как ERP или Комплексная автоматизация) этот процесс требует колоссального объема оперативной памяти. Если используется 32-разрядная версия Конфигуратора, процесс быстро упирается в лимит адресного пространства (2–3 ГБ), что вызывает падение или бесконечное зависание приложения.

Пошаговое отключение рефакторинга в настройках Конфигуратора

Рассмотрим стандартный способ отключения этой функции. Настройка выполняется непосредственно в пользовательском интерфейсе Конфигуратора и сохраняется локально в профиле разработчика (в файле 1Cv8.pfl), распространяясь сразу на все информационные базы под текущей учетной записью операционной системы.

  1. Откроем главное меню Конфигуратора и перейдем в раздел Сервис, затем выберем пункт Параметры.
  2. В открывшемся окне перейдем на вкладку Общие.
  3. Найдем группу параметров Рефакторинг при изменениях в метаданных и формах.
  4. Снимем флажки со следующих опций:
    1. При удалении выполнять проверку в модулях — именно этот флажок запускает принудительный поиск ссылок при попытке удалить реквизит или объект;
    2. При переименовании выполнять изменение в модулях — предотвращает автоматическую автозамену имен во всех модулях конфигурации;
    3. При изменениях в формах выполнять изменение в модулях — отключает автоматическое отслеживание привязок элементов формы к реквизитам.
  5. Нажмем кнопку Применить и подтвердим изменения кнопкой ОК.

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

Почему не удается прервать процесс через сочетание клавиш

Проанализируем ситуацию, когда процесс уже запущен и разработчик пытается прервать его с клавиатуры. В локальном сеансе стандартным прерыванием выступает комбинация клавиш Ctrl + Pause/Break. Однако при работе через удаленный рабочий стол (RDP) возникают проблемы:

  1. Клиент терминального доступа или операционная система могут перехватывать скан-код клавиши Break. На многих современных клавиатурах и ноутбуках клавиша отсутствует как отдельная кнопка и требует нажатия комбинации с модификатором (например, Fn + Pause или Ctrl + Fn + B). В качестве альтернативы в ряде RDP-клиентов передачу сигнала остановки можно эмулировать через Ctrl + Scroll Lock.
  2. Конфигуратор 1С выполняет парсинг и построение индексов в основном потоке интерфейса (UI thread). При пиковой загрузке процессора и дисковой подсистемы очередь оконных сообщений перестает обрабатываться. В этом состоянии приложение физически не способно зарегистрировать нажатие клавиш прерывания до тех пор, пока не завершится текущий вычислительный блок.

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

Ограничения встроенного рефакторинга и альтернативные практики

Важно понимать, почему многие специалисты отключают встроенный рефакторинг на постоянной основе. Механизм Конфигуратора имеет существенные технические ограничения:

  1. Он не обрабатывает строковые обращения. Если к реквизиту обращались через квадратные скобки (например, СтрокаТаблицы["ИмяРеквизита"]), имя не будет найдено и изменено.
  2. Механизм не корректирует тексты запросов, условия в динамических списках и параметры компоновки данных.
  3. Рефакторинг не затрагивает подключенные расширения конфигурации, внешние отчеты и обработки.

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

  1. Отключаем рефакторинг в параметрах Конфигуратора, как описано выше.
  2. Выполняем операцию удаления или переименования метаданных.
  3. Для контролируемого поиска устаревших вызовов используем глобальный поиск по тексту через сочетание клавиш Ctrl + Shift + F. Поиск выводит интерактивный список в отдельном окне, позволяя точечно оценить каждое место использования без автоматического вмешательства в код.
  4. После завершения правок запускаем пакетную проверку: меню Конфигурация — Проверка конфигурации с обязательным включением опций Поиск некорректных ссылок и Синтаксический контроль. Это гарантирует выявление всех битых ссылок в модулях и формах.
  5. Для крупных проектов целесообразно использовать среду 1C:Enterprise Development Tools (1C:EDT) или статические анализаторы кода (BSL Language Server, SonarQube), где фоновый поиск ссылок выполняется в отдельных потоках и не парализует работу разработчика.
← На главную