Как правильно и безопасно удалить реквизит регистра сведений в 1С:Предприятие 8.3

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

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

Шаг 1. Анализируем необходимость удаления и выполняем подготовку

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

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

Шаг 2. Проверяем настройки поддержки конфигурации

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

  1. Откроем Конфигуратор.
  2. Перейдем в меню Конфигурация — Поддержка — Настройка поддержки.
  3. Найдем в списке наш регистр сведений. Если напротив него стоит правило «Не редактируется», кнопка удаления будет попросту недоступна.

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

Шаг 3. Глобальный поиск ссылок и программного кода

Это самый критичный этап. Удаление реквизита из дерева метаданных без предварительного анализа связей гарантированно приведет к ошибкам. Нам необходимо выполнить два вида поиска:

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

2. Глобальный поиск по тексту кода. Нажмем комбинацию клавиш Ctrl+Shift+F и введем имя нашего реквизита. Проанализируем все вхождения. Реквизит может вызываться динамически в коде модулей или внутри строковых литералов запросов, которые встроенный поиск ссылок может пропустить.

Рассмотрим пример кода, который может вызвать ошибку после удаления реквизита СтатусДокумента:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |   РегистрСведений.СтатусДокумента КАК Статус
    |ИЗ
    |   РегистрСведений.ДанныеОбъектов КАК РегистрСведений";
Результат = Запрос.Выполнить();

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

Шаг 4. Физическое удаление и реструктуризация информационной базы

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

Выясним причину, по которой этот процесс может занять длительное время. При удалении реквизита система выполняет реструктуризацию таблицы в базе данных (SQL или файловой). В этот момент из таблицы физически удаляется колонка. Если в регистре миллионы записей, операция может занять от нескольких минут до нескольких часов. В клиент-серверном варианте это приведет к блокировке таблицы InformationRegister на уровне СУБД.

Шаг 5. Особенности для специализированных конфигураций

Проанализируем ситуацию на примере конфигураций для Казахстана (например, «Зарплата и кадры для государственных организаций Казахстана»). Такие системы часто интегрированы с государственными порталами через специфические реквизиты. Удаление даже кажущегося пустым поля может нарушить логику формирования XML-файлов для выгрузки. Если вы видите реквизит, связанный с ИС ЭСФ или порталом ENBEK, будьте предельно осторожны — его наличие может быть жестко прописано в правилах валидации данных на стороне внешних систем.

Шаг 6. Итоговое тестирование и проверка целостности

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

  1. Запустим инструмент Конфигурация — Проверка конфигурации.
  2. Установим флажки «Проверка логической целостности конфигурации» и «Поиск некорректных ссылок».
  3. Запустим процесс и внимательно изучим отчет об ошибках.

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

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

← На главную