Как правильно добавить новые поля в документ 1С: в основную таблицу или на отдельную вкладку?

Пользователь 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием Управленческий учет Торговля и дистрибуция
← На главную

Часто при работе с типовыми конфигурациями 1С, такими как 1С:ERP, возникает необходимость добавить дополнительную информацию в стандартные документы. В нашем примере рассмотрим ситуацию на основе документа Перемещение товаров. Пользователю потребовалось добавить в табличную часть Товары три новых поля: "Отдел", "Номер коробки" и "Комментарий". Однако разработчик реализовал это, создав отдельную вкладку, куда скопировал основные данные (номенклатуру, количество) и добавил новые поля. Такой подход оказался крайне неудобным для пользователя. Давайте разберемся, почему разработчик мог выбрать такое решение, и какой способ является более правильным и современным.

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

Анализ ситуации: почему программист мог создать отдельную вкладку?

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

Рассмотрим возможные причины такого решения:

  1. Боязнь усложнить обновление. Это самая частая причина. В прошлом, до появления механизма расширений, любое изменение типового объекта (документа, справочника) снимало его с автоматической поддержки. При каждом обновлении конфигурации приходилось вручную анализировать и переносить изменения. Некоторые разработчики по привычке стараются минимально вмешиваться в стандартные формы и объекты, считая, что создание своего, полностью изолированного объекта (новой табличной части на новой вкладке) — это гарантия безопасности при будущих обновлениях.
  2. Сложность стандартной формы. Формы в сложных конфигурациях, как 1С:ERP, могут быть очень непростыми. Табличная часть документа — это часто не просто таблица, а динамический список со множеством программных обработчиков событий, условным оформлением и скрытой логикой. Внедрение новой колонки в такую сложную структуру может потребовать глубокого анализа существующего кода. Чтобы сэкономить время, разработчик мог пойти по пути наименьшего сопротивления, создав свою простую и полностью контролируемую таблицу.
  3. Использование типового механизма "Дополнительные реквизиты". В платформе 1С есть встроенный функционал, который позволяет пользователям (или администраторам) добавлять новые свойства к объектам без программирования. Часто эти реквизиты по умолчанию выводятся на отдельную вкладку "Дополнительно". Возможно, разработчик воспользовался именно этим механизмом. С точки зрения платформы 1С это идеологически верный и самый безопасный путь, но он почти всегда проигрывает в эргономике.

Несмотря на эти возможные оправдания, с точки зрения пользователя и современных практик разработки, такой подход имеет серьезные недостатки:

Рекомендуемый подход: добавление колонок в основную таблицу через расширение

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

Шаг 1. Создание новых реквизитов в расширении

Первым делом необходимо добавить сами хранилища для данных. Это делается не в основной конфигурации, а в расширении.

  1. В конфигураторе создается новое расширение (если его еще нет).
  2. В дерево объектов расширения добавляется заимствованный объект, который мы хотим изменить. В нашем случае это документ ПеремещениеТоваров.
  3. Раскрыв структуру документа, находим нужную табличную часть — Товары.
  4. Внутри расширяемой табличной части создаем новые реквизиты:
    • Отдел (тип, например, СправочникСсылка.ПодразделенияОрганизаций)
    • НомерКоробки (тип Строка или Число)
    • Комментарий (тип Строка)

После этих действий в базе данных, в таблице, соответствующей ТЧ "Товары", появятся новые колонки. Данные в них будут храниться вместе с остальными данными по строке, что обеспечивает целостность и логичность структуры.

Шаг 2. Вывод новых колонок на форму документа

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

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

После сохранения расширения и обновления конфигурации базы данных, пользователь, открыв документ "Перемещение товаров", увидит новые колонки "Отдел", "Номер коробки" и "Комментарий" прямо в основной таблице Товары. Вся информация будет в одном месте, что интуитивно понятно и удобно.

Итоги и выводы

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

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

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

← На главную