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

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

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

Способ 1. Использование «звездочки» в Конструкторе запроса (для платформы 8.3.23 и выше)

Этот метод является одним из самых изящных и быстрых. Он основан на интеллектуальном поведении платформы при работе с запросами внутри расширения. Рассмотрим алгоритм действий пошагово:

  1. Добавим интересующий нас объект (например, Документ.РеализацияТоваровУслуг) в расширение. На данном этапе он будет пустым.
  2. Перейдем в модуль объекта или модуль менеджера этого расширения.
  3. Нажмем правую кнопку мыши и вызовем Конструктор запроса.
  4. В списке таблиц выберем наш документ. На данном этапе конструктор может показать только поле Ссылка.
  5. Добавим поле Ссылка в выбранные поля и нажмем «ОК», чтобы сформировать текст запроса.
  6. В тексте запроса вручную заменим выбранное поле на символ «*» (звездочка), чтобы получилось: ВЫБРАТЬ * ИЗ Документ.РеализацияТоваровУслуг.
  7. Снова вызовем контекстное меню на тексте запроса и откроем Конструктор запроса.
  8. При нажатии кнопки «ОК» платформа проанализирует, что для выполнения запроса со звездочкой ей необходимы все реквизиты объекта, которых нет в расширении.
  9. Система выдаст системный вопрос о необходимости добавления недостающих реквизитов в расширение. Соглашаемся и ждем завершения процесса.

Этот способ позволяет практически мгновенно «подтянуть» всю структуру объекта. Однако проанализируем нюанс: если реквизиты имеют сложные типы (ссылки на другие объекты), их тоже придется добавить, иначе система может выдать предупреждение.

Способ 2. Добавление через динамический список (поле Ссылка)

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

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

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

Способ 3. Использование среды разработки EDT (Enterprise Development Tools)

Для тех, кто перешел на использование EDT, задача массового добавления решается гораздо проще, чем в классическом Конфигураторе. Разберем преимущества этого подхода:

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

Способ 4. Метод сравнения и объединения с файлом конфигурации

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

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

Система перенесет описание метаданных в расширение. Этот метод хорош тем, что в окне сравнения очень удобно визуально контролировать, что именно мы добавляем.

Важные рекомендации и предостережения

Прежде чем массово добавлять все реквизиты, подумаем о последствиях для стабильности системы. Выясним причины, по которым опытные разработчики советуют соблюдать осторожность:

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

2. Раздувание веса: Каждое добавленное поле увеличивает объем расширения. При запуске сеанса системе требуется время на компиляцию и проверку соответствия метаданных. Большое количество лишних объектов замедляет этот процесс.

3. Программная доработка форм: Рассмотрим полезный совет — вместо переноса всей формы в расширение (что часто приводит к её «поломке» при обновлениях), лучше использовать программное изменение интерфейса в модуле формы. Пример логики:


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

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

← На главную