Что будет с расширением и данными при обновлении конфигурации 1С: подробный разбор

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

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

Сохраняется ли расширение при обновлении?

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

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

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

  1. Успешная валидация: Если объекты, которые вы заимствовали в расширение (формы, документы, процедуры), не претерпели критических изменений в новом релизе, расширение продолжит работу в штатном режиме.
  2. Ошибка валидации: Если в новом релизе типовой конфигурации фирма «1С» удалила или переименовала объект, на который опирается ваше расширение, оно просто не подключится. Данные в базе сохранятся, но функционал (новые кнопки, поля на формах) станет невидимым для пользователя до тех пор, пока программист не исправит ошибки в расширении.

Почему пропадают данные: реквизиты формы vs реквизиты объекта

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

Реквизиты формы — это временные данные, которые существуют только в памяти в момент работы пользователя с конкретным окном. Если вы добавили поле непосредственно на форму через расширение, но не привязали его к реквизиту объекта в базе данных, то после закрытия формы или обновления конфигурации эти данные не сохранятся, так как им некуда записываться в физической таблице базы данных (SQL).

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

Как правильно добавлять свои поля через расширение

Если нам необходимо добавить новые данные (например, два дополнительных реквизита в справочник ФизическиеЛица), мы должны использовать один из следующих подходов, в зависимости от версии платформы и режима совместимости.

Способ 1: Добавление собственных реквизитов в расширение (Платформа 8.3.12+)

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

  1. Заимствуем объект (например, справочник ФизическиеЛица) в расширение.
  2. В дереве метаданных расширения нажимаем «Добавить» в ветке «Реквизиты».
  3. Указываем тип данных и имя.
  4. Выносим этот реквизит на заимствованную форму.

В этом случае платформа создаст в базе данных отдельную таблицу для хранения этих полей. Важно: Никогда не удаляйте расширение, в котором созданы такие реквизиты! Если вы удалите расширение из списка, платформа физически удалит (drop) соответствующие таблицы из базы данных, и данные будут потеряны безвозвратно. Если нужно временно отключить доработку, просто снимите флаг «Активно».

Способ 2: Использование типового механизма «Дополнительные сведения» (БСП)

Если режим совместимости не позволяет добавлять реквизиты в расширение или вы не хотите менять структуру таблиц, воспользуемся механизмом Библиотеки Стандартных Подсистем (БСП). Рассмотрим алгоритм работы:

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

Пример кода для программного получения дополнительного сведения:


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

Способ 3: Создание своего регистра в расширении

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

Вы создаете в расширении новый РегистрСведений (например, ДопДанныеФизЛиц) с измерениями ФизЛицо (тип — ссылка на справочник из основной конфигурации) и нужными ресурсами. Теперь в расширении формы справочника вы можете прописать логику записи и чтения из этого регистра. Данные будут надежно храниться в базе и не пропадут при обновлении конфигурации.

Критическая разница между Удалением и Отключением

Многие начинающие разработчики путают эти действия. Выясним причину, почему это опасно:

Рекомендации по обновлению конфигурации с расширениями

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

  1. Всегда делайте резервную копию! Это золотое правило 1С.
  2. Выполните обновление основной конфигурации в режиме Конфигуратора.
  3. После обновления, не запуская Предприятие, зайдите в список расширений и проверьте их состояние.
  4. Запустите отладку (F5). Если расширение содержит ошибки валидации, платформа выдаст предупреждение.
  5. В случае ошибок используйте инструмент «Проверка возможности применения» в контекстном меню расширения. Он укажет, какие именно объекты или методы изменились и требуют исправления в коде расширения.

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

← На главную