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