Как быстро добавить множество реквизитов или объектов в расширение 1С 8.3

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

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

Метод 1. Использование механизма «Сравнение и объединение»

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

Для реализации этого метода выполним следующие действия:

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

Этот способ избавляет от необходимости переключаться между окнами и вызывать контекстное меню для каждого отдельного поля Реквизит1, Реквизит2 и так далее.

Метод 2. Массовое выделение в дереве конфигурации (для новых версий платформы)

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

В современных версиях вы можете использовать стандартные клавиши Windows для выделения списка объектов:

После того как нужные поля выделены, достаточно нажать правую кнопку мыши на любом из них и выбрать команду «Добавить в расширение». Если ваша версия платформы (например, старая 8.3.17) не поддерживает множественное выделение в основном дереве, рекомендуем использовать Метод 1 или Метод 3.

Метод 3. Автоматическое добавление через конструктор запроса

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

Разберем по шагам, как это использовать для массового добавления:

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

Этот метод часто оказывается быстрее, чем навигация по дереву объектов, особенно если полей очень много.

Метод 4. Копирование и вставка (Ctrl+C / Ctrl+V)

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

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

  1. Сначала добавьте сам «контейнер» (например, справочник Контрагенты) в расширение через стандартное «Добавить в расширение».
  2. Зайдите в основную конфигурацию, выделите нужные реквизиты внутри этого справочника.
  3. Нажмите Ctrl+C.
  4. Перейдите в расширение, встаньте на ветку «Реквизиты» этого же справочника и нажмите Ctrl+V.

Важный момент: платформа постарается сопоставить вставляемые данные. В последних релизах это работает корректно для заимствования, но всегда проверяйте свойства Имя и Тип после такой операции.

Метод 5. Использование 1C:Enterprise Development Tools (EDT)

Если ваш проект позволяет перейти на использование EDT, то проблема массового добавления исчезнет сама собой. В среде разработки на базе Eclipse (EDT) работа с расширениями построена принципиально иначе. Посмотрим на пример работы в EDT:

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

Метод 6. Программное добавление элементов формы

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

Рассмотрим пример кода, который добавляет поле на форму динамически:


&НаСервере
Процедура ДобавитьПоляНаФорму()
    // Предположим, реквизит "ДополнительноеОписание" уже заимствован в метаданные расширения
    НовыйЭлемент = Элементы.Добавить("ДополнительноеОписание", Тип("ПолеФормы"), ЭтаФорма);
    НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
    НовыйЭлемент.ПутьКДанным = "Объект.ДополнительноеОписание";
КонецПроцедуры

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

Итоги и рекомендации

Мы выяснили, что для эффективной работы с расширениями в 1С 8.3 существует несколько путей. Если ваша задача — разовое массовое добавление, используйте сравнение и объединение. Если вы часто добавляете поля в процессе написания кода — используйте возможности конструктора запросов. Для пользователей современных платформ (8.3.18+) самым простым решением будет групповое выделение клавишами Shift/Ctrl прямо в дереве метаданных.

Помните, что избыточное добавление объектов в расширение может замедлить работу системы и усложнить обновление. Добавляйте только те реквизиты, которые действительно необходимы для реализации вашей логики или изменения интерфейса. Удачной разработки! Для контроля состава заимствованных объектов и структуры изменений можно использовать инструмент для анализа доработок в расширениях 1С.

← На главную