К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как удалить код в 1С: безопасные способы и проверка результата

Как безопасно удалить код в 1С: процедуры, функции, обработчики событий и объекты конфигурации. Поиск ссылок, проверка ошибок и типичные ошибки.

Удаление кода в 1С — типовая задача при доработке конфигураций: убирают неиспользуемые процедуры и функции, лишние обработчики событий, устаревшие общие модули или целые объекты метаданных. Главный риск — нарушить связи: на удалённый элемент могут ссылаться другие процедуры, формы, подписки на события или внешние отчёты. Поэтому удаление в 1С всегда начинается с поиска ссылок и заканчивается проверкой конфигурации.

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

Подготовка: резервная копия и анализ связей

Перед любыми изменениями кода создайте резервную копию информационной базы или хотя бы выгрузите конфигурацию в файл .cf через меню «Конфигурация → Сохранить конфигурацию в файл». Это занимает несколько минут, но позволяет откатить изменение, если после удаления перестанут работать отчёты, проведение документов или обмены данными.

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

Отдельно проверьте места, которые автоматический поиск ссылок может не показать: вызовы через Выполнить и ОценитьВыражение, обращения по строковому имени метода, настройки внешних отчётов и обработок, регламентные задания, ссылающиеся на методы общих модулей. Такие связи находят только полнотекстовым поиском по имени процедуры (Ctrl+Shift+F) по всей конфигурации.

Как удалить фрагмент кода в модуле

Простейший сценарий — удалить отдельные строки или блок внутри процедуры. Откройте нужный модуль (двойной щелчок по объекту в дереве конфигурации, вкладка с модулем), выделите фрагмент и нажмите Delete. Для быстрого удаления целой строки удобно сочетание Ctrl+L — оно удаляет строку, где стоит курсор, без предварительного выделения.

Если код пока может понадобиться, вместо удаления используйте комментирование: выделите блок и нажмите Ctrl+/ — строки будут закомментированы символом «//». Повторное нажатие снимает комментарий. Это безопасный способ временно отключить логику и проверить поведение системы без неё.

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

Как удалить процедуру или функцию целиком

Удаление процедуры требует удалить не только её тело, но и все вызовы. Сначала выполните глобальный поиск (Ctrl+Shift+F) по имени процедуры по всем модулям конфигурации. Каждый найденный вызов нужно либо удалить, либо заменить на альтернативную логику.

Затем выделите весь блок от строки Процедура ИмяПроцедуры(...) до КонецПроцедуры включительно и удалите его. Для функций аналогично — от Функция до КонецФункции. Быстрый способ выделить всю процедуру: установить курсор на её заголовок и свернуть блок через Ctrl+Shift+Num- (сворачивание), затем удалить свёрнутый блок.

Порядок удаления процедуры
  1. 1
    Найдите все вызовы процедуры через глобальный поиск по имени (Ctrl+Shift+F)
  2. 2
    Удалите или перепишите каждый вызов в найденных местах
  3. 3
    Удалите блок процедуры целиком — от заголовка до КонецПроцедуры
  4. 4
    Выполните синтаксическую проверку модуля
  5. 5
    Сохраните конфигурацию и выполните полную проверку конфигурации
  6. 6
    Протестируйте сценарии, где раньше вызывалась процедура

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

Как удалить обработчик события

Обработчики событий форм и объектов — частный случай процедур, но с дополнительной связью: имя процедуры указано в свойстве события. Если удалить процедуру-обработчик из модуля формы, но оставить привязку в свойствах элемента формы или события объекта, при открытии формы или наступлении события возникнет ошибка «Процедура или функция с указанным именем не определена».

Правильный порядок: сначала откройте палитру свойств объекта (формы, элемента формы, документа), найдите событие и очистите поле с именем обработчика. Только после этого удаляйте саму процедуру из модуля. Для форм это делается в редакторе формы: выделите элемент, в палитре свойств найдите раздел «События» и очистите нужное поле.

Для подписок на события (объект метаданных «Подписка на событие») проверьте свойство «Обработчик»: там указан метод общего модуля. При удалении метода общего модуля подписка начнёт выдавать ошибку при каждом наступлении события — например, при записи любого документа, на который подписана.

Как удалить объект метаданных или общий модуль

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

Обратите внимание: удаление объектов, хранящих данные (справочников, документов, регистров), приведёт к физическому удалению данных при реструктуризации базы. Если в базе уже есть записи, сначала оцените, нужно ли их сохранить или перенести. При обновлении конфигурации базы данных платформа покажет окно реструктуризации со списком удаляемых таблиц — внимательно просмотрите его перед подтверждением.

Проверка конфигурации после удаления

После любого удаления выполните проверку конфигурации: меню «Конфигурация → Проверка конфигурации». Отметьте как минимум пункты «Проверка логической целостности» и «Поиск некорректных ссылок». Проверка выявит обращения к удалённым процедурам, битые ссылки в свойствах, ссылки на несуществующие объекты в ролях и интерфейсах.

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

Контрольные точки

Как проверить результат

Проверка конфигурации
Норма

Нет ошибок о неопределённых процедурах и некорректных ссылках

Тревожный признак

Сообщения вида «Процедура или функция не определена»

Открытие форм
Норма

Формы открываются без сообщений об ошибках

Тревожный признак

Ошибка при создании формы или при обработчике ПриСозданииНаСервере

Запись и проведение документов
Норма

Документы записываются и проводятся штатно

Тревожный признак

Ошибки в подписках на события и обработчиках проведения

Регламентные задания
Норма

Задания выполняются без ошибок в журнале регистрации

Тревожный признак

Ошибки «Метод не обнаружен» в журнале регистрации

Типичные ошибки при удалении кода

Типичные ошибки
01
Удаление процедуры без поиска вызовов — после обновления в других модулях возникают ошибки «Процедура не определена»
02
Удаление обработчика из модуля без очистки свойства события — форма или документ перестают работать при наступлении события
03
Удаление общего модуля, на который ссылаются внешние обработки и регламентные задания — внешние механизмы ломаются незаметно для проверки конфигурации
04
Удаление объектов с данными без анализа окна реструктуризации — безвозвратная потеря записей в базе
05
Работа без резервной копии — невозможность быстро откатить ошибочное удаление

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

FAQ

Можно ли отменить удаление кода в конфигураторе?

В редакторе модуля работает стандартная отмена Ctrl+Z — пока модуль не закрыт и конфигурация не сохранена. Если изменения уже сохранены и конфигурация базы данных обновлена, восстановить код можно только из резервной копии, выгрузки .cf или хранилища конфигурации (если используется). Поэтому перед массовыми удалениями сохраните конфигурацию в файл.

Как найти неиспользуемые процедуры, которые можно удалить?

Гарантированного автоматического инструмента в конфигураторе нет. Практический подход: для каждой неэкспортной процедуры выполнить глобальный поиск по имени — если найдено только само объявление, процедура, вероятно, не используется. Для экспортных методов дополнительно проверяйте внешние обработки и вызовы через Выполнить по строковому имени.

Что будет, если удалить общий модуль, на который есть ссылки?

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

Можно ли удалить код в типовой конфигурации без снятия с поддержки?

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

Удаляются ли данные при удалении объекта конфигурации?

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

Как временно отключить код, не удаляя его?

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

Итог

Что важно запомнить

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