Как вернуть форму одного документа к конфигурации поставщика в 1С

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

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

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

Почему в окне сравнения и объединения могут отсутствовать флажки выбора?

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

  1. Правило поддержки «Не редактируется» (объект на замке). Если документ или его подчиненные объекты находятся на строгой поддержке поставщика без возможности редактирования, платформа блокирует любые операции объединения для них. Чтобы флажки стали активными, необходимо временно разрешить изменения для этого объекта.
  2. Свернутая структура дерева метаданных. Форма документа является подчиненным объектом. Если дерево метаданных свернуто до уровня документов, вы не увидите флажков для конкретных форм. Необходимо раскрыть ветку целевого документа, перейти в подраздел Формы и найти там требуемый объект.
  3. Активные фильтры отображения. В нижней или верхней части окна сравнения и объединения присутствует кнопка Фильтр. Если там установлен отбор (например, показывать только измененные объекты или дважды измененные свойства), нужная форма может быть скрыта из списка, если платформа не зафиксировала в ней явных различий по заданному критерию.

Способ 1. Самый надежный метод: Сравнение и объединение с внешним файлом конфигурации (CF)

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

Рассмотрим пошагово, как выполнить эту процедуру:

  1. Подготовим чистый файл конфигурации (с расширением .cf) той же версии, которая сейчас установлена в вашей рабочей базе. Этот файл можно выгрузить из пустой типовой базы или получить из дистрибутива обновления поставщика.
  2. В конфигураторе рабочей базы откроем меню Конфигурация -> Сравнить, объединить с конфигурацией из файла... и укажем путь к подготовленному файлу .cf.
  3. После того как платформа построит дерево сравнения, нажмем на самую верхнюю галку у корневого элемента дерева, чтобы полностью снять выделение со всех объектов. Наша цель — исключить случайное изменение других элементов.
  4. Найдем в дереве метаданных нужный документ (например, Документы.РеализацияТоваровУслуг), раскроем его ветку и перейдем к разделу Формы.
  5. Установим флажок исключительно напротив той формы, которую требуется вернуть к типовому состоянию.
  6. Нажмем кнопку Выполнить. Платформа заменит код и свойства выбранной формы на оригинальные, сохранив при этом все внутренние идентификаторы объекта.

Способ 2. Автоматический возврат объекта «на замок» через настройку поддержки

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

Разберем этот элегантный способ:

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

Опасность метода Drag-and-Drop и копирования через буфер обмена

Некоторые разработчики практикуют удаление измененной формы с последующим перетаскиванием (или копированием через Ctrl+C / Ctrl+V) аналогичной формы из открытой рядом чистой конфигурации поставщика. Мы настоятельно рекомендуем избегать данного подхода по следующим причинам:


// Если UUID формы изменился, данный вызов вернет ошибку,
// так как система будет искать старый уникальный идентификатор формы.
ОткрытьФорму("Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента");

Современный стандарт разработки: Использование расширений

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

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

← На главную