Что означает префикс Удалить в названии объекта 1С и как с этим работать

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

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

Методология разработки фирмы 1С и жизненный цикл объектов

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

Рассмотрим основные этапы этого процесса:

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

Где искать новые данные после переименования регистра

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

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

Во-вторых, разберем механизм обновления через БСП (Библиотеку стандартных подсистем). Основная логика переноса данных сосредоточена в модулях обновления. Попробуем найти их через глобальный поиск по конфигурации. Нам нужно искать старое имя объекта (без префикса). Обратите внимание на общие модули, названия которых заканчиваются на ОбновлениеИнформационнойБазы[ПрефиксКонфигурации].

Пример того, как может выглядеть процедура миграции в коде:


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

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

Рассмотрим ситуацию, предложенную в обсуждении: можно ли просто подставить имя РегистрСведений.Удалить[Имя] в запрос отчета? Технически — да, отчет может заработать, но это крайне рискованно по нескольким причинам:

Алгоритм действий для программиста

Разберем по шагам, как правильно исправить отчет, если вы обнаружили объект с префиксом Удалить:

  1. Идентификация замены: Найдите новый объект метаданных, который выполняет те же функции. Проверьте новые подсистемы, появившиеся в обновлении. В случае с «Больничной аптекой», структура могла измениться в сторону унификации с 1С:ERP или 1С:КА.
  2. Сверка структуры: Убедитесь, что типы измерений и ресурсов в новом регистре совпадают со старым. Часто при обновлении простые типы заменяются на составные или вводятся новые разрезы учета.
  3. Обновление запроса в СКД: Перепишите текст запроса в схеме компоновки данных. Используйте псевдонимы полей, чтобы не перенастраивать оформление и группировки в отчете.
  4. Проверка прав: Убедитесь, что у ролей пользователей есть права на чтение нового объекта. Для старых объектов права часто программно ограничиваются в ПриУстановкеПараметровСеанса.

Посмотрим на пример того, как можно программно проверить, помечен ли объект на удаление, если вы пишете универсальную обработку:


МетаданныеОбъекта = Метаданные.РегистрыСведений.Найти("УдалитьЛимитыПродаж");
Если МетаданныеОбъекта <> Неопределено Тогда
    Если СтрНайти(МетаданныеОбъекта.Имя, "Удалить") > 0 Тогда
        Сообщить("Внимание: Используется устаревший объект!");
    КонецЕсли;
КонецЕсли;

Заключение

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

← На главную