В процессе сопровождения и разработки в системе 1С:Предприятие 8.3 часто возникают ситуации, когда после очередного обновления или в результате изменения бизнес-логики в конфигурации появляются лишние элементы метаданных. Удаление реквизита из регистра сведений кажется простой задачей, однако она скрывает в себе множество подводных камней, которые могут привести к потере данных или неработоспособности системы. В этой статье мы подробно разберем, как выполнить эту операцию максимально безопасно, проанализируем необходимые проверки и выясним, когда удаление действительно оправдано.
Прежде чем приступать к каким-либо действиям в Конфигураторе, мы должны четко понимать происхождение объекта. Если реквизит появился после автоматического обновления типового решения, велика вероятность, что он задействован в новых механизмах отчетности или интеграции. Рассмотрим ситуацию: вы обнаружили «лишний» реквизит в регистре сведений. Первое, что нам необходимо сделать, — это создать резервную копию базы данных.
Важно: Простая выгрузка .dt файла — это только половина дела. Настоятельно рекомендуем развернуть созданный бекап на копии и проводить все дальнейшие манипуляции сначала именно там. Это позволит нам убедиться, что удаление реквизита не вызовет критических ошибок (так называемых «рантайм-ошибок») при выполнении программного кода.
Если мы работаем с типовой конфигурацией, то первым препятствием может стать замок на объекте. Разберем по шагам, как проверить возможность редактирования:
Конфигуратор.Проанализируем последствия: чтобы удалить реквизит, нам придется нажать кнопку «Включить возможность изменения». Мы должны понимать, что снятие с полной поддержки усложнит процесс последующих обновлений. Если реквизит является частью типового решения, программа при следующем обновлении попытается его вернуть. В этом случае стоит рассмотреть альтернативу — например, скрыть реквизит из пользовательского интерфейса через команду «Еще — Изменить форму» или использовать механизм расширений.
Это самый критичный этап. Удаление реквизита из дерева метаданных без предварительного анализа связей гарантированно приведет к ошибкам. Нам необходимо выполнить два вида поиска:
1. Поиск ссылок на объект метаданных. Щелкнем правой кнопкой мыши на реквизите в дереве конфигурации и выберем пункт «Поиск ссылок на объект». Это покажет нам, где данный реквизит используется в других объектах: в формах, отчетах, запросах или динамических списках.
2. Глобальный поиск по тексту кода. Нажмем комбинацию клавиш Ctrl+Shift+F и введем имя нашего реквизита. Проанализируем все вхождения. Реквизит может вызываться динамически в коде модулей или внутри строковых литералов запросов, которые встроенный поиск ссылок может пропустить.
Рассмотрим пример кода, который может вызвать ошибку после удаления реквизита СтатусДокумента:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РегистрСведений.СтатусДокумента КАК Статус
|ИЗ
| РегистрСведений.ДанныеОбъектов КАК РегистрСведений";
Результат = Запрос.Выполнить();
Если мы удалим СтатусДокумента, этот запрос упадет с ошибкой «Поле не найдено». Поэтому перед удалением мы должны программно вычистить все упоминания объекта.
Если все проверки пройдены и мы уверены, что реквизит не нужен, выделим его в дереве метаданных и нажмем клавишу Del. После этого необходимо применить изменения к базе данных, нажав F7 или кнопку «Обновить конфигурацию базы данных».
Выясним причину, по которой этот процесс может занять длительное время. При удалении реквизита система выполняет реструктуризацию таблицы в базе данных (SQL или файловой). В этот момент из таблицы физически удаляется колонка. Если в регистре миллионы записей, операция может занять от нескольких минут до нескольких часов. В клиент-серверном варианте это приведет к блокировке таблицы InformationRegister на уровне СУБД.
Проанализируем ситуацию на примере конфигураций для Казахстана (например, «Зарплата и кадры для государственных организаций Казахстана»). Такие системы часто интегрированы с государственными порталами через специфические реквизиты. Удаление даже кажущегося пустым поля может нарушить логику формирования XML-файлов для выгрузки. Если вы видите реквизит, связанный с ИС ЭСФ или порталом ENBEK, будьте предельно осторожны — его наличие может быть жестко прописано в правилах валидации данных на стороне внешних систем.
После завершения процедуры удаления мы должны убедиться, что не оставили «битых» ссылок. Для этого выполним следующие действия:
Если проверка прошла успешно, запустим систему в режиме 1С:Предприятие и проверим основные бизнес-процессы, связанные с данным регистром. Если вы обнаружили, что данные все же были важны, у нас всегда есть возможность откатиться к бекапу, который мы сделали на первом шаге.
Таким образом, мы рассмотрели комплексный подход к удалению реквизита. Помните: в 1С правило «семь раз проверь — один раз удали» актуально как никогда, особенно в условиях постоянных обновлений типовых решений.