[ Вопрос дня ] Можно ли не заимствовать все реквизиты объектов, используемых в программном коде или запросе из расширения?

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

Вопрос

Здравствуйте! Скажите, пожалуйста, есть ли методические рекомендации относительно желательности добавления в расширение реквизитов объектов и перечислений, используемых в алгоритмах и запросах? Заимствование реквизитов и перечислений нужно только для форм, а во всех других случаях лучше экономить время и не добавлять реквизиты в расширение, если они используются не в формах?

Ответ

Добрый день! Если мы не заимствуем в расширение реквизит объекта, при этом используем его в запросе или программном коде из расширения, то такой запрос или код будут работать, поскольку при работе в режиме “1С:Предприятие” основная конфигурация и расширения находятся в одном “пространстве”, поэтому ошибок выполнения не будет возникать. Главный минус такого подхода – неудобство разработки. Не получится открыть конструктор запроса, при синтаксическом контроле платформа будет выдавать ошибки, сообщать, что переменная не определена. Например, дорабатываем при помощи расширения обработку проведения документа. Если в расширении в модуле объекта документа обратимся к табличной части Товары, возникнет ошибка при синтаксическом контроле. В качестве обхода можно написать ЭтотОбъект.Товары, тогда синтаксическая ошибка не будет диагностироваться. При этом в режиме “1С:Предприятие” работать всё будет корректно.

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

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

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

Комментарии / обсуждение (2):

  1. SnowMan83

    Добрый день. Могут ли уважаемые авторы курса сказать, в расширении можно добавить еще один вид характеристики объекту? Если можно это сделать, возможна ли такая операция для объекта, у которого уже есть несколько типов характеристик?

    • Василий Ханевич

      Добрый день!
      Нет, в расширении для объекта из основной конфигурации нельзя настроить характеристики на уровне метаданных, такой пункт не отображается в контекстном меню:
      Заимствованный
      А вот для объекта, созданного в расширении, эта возможность доступна:
      Созданный в расширении

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Вход на сайт

Зарегистрироваться

Подтверждение регистрации будет отправлено на указанный e-mail.

Я подтверждаю, что ознакомлен(а) с Пользовательским соглашением, принимаю его условия и даю свое согласие на обработку моих персональных данных.

Восстановить доступ

E-mail или логин

Ссылка на создание нового пароля будет отправлена на указанный e-mail.