Как правильно добавить новые реквизиты для договоров в «1С:Документооборот 2.1» без изменения конфигурации?

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

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

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

Способ 1. Использование встроенного механизма дополнительных реквизитов и сведений

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

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

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

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

Ограничения стандартного механизма дополнительных реквизитов

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

  1. Расположение в интерфейсе: Все новые поля принудительно выводятся на отдельную вкладку «Свойства». Пользователи часто выражают недовольство тем, что им приходится переключаться между основной вкладкой карточки документа и вкладкой свойств для заполнения связанных данных.
  2. Отсутствие сложной интерактивной логики: С помощью стандартных настроек сложно реализовать динамический расчет значений на лету. Например, если нам требуется автоматически рассчитывать «Сумму НДС» при изменении «Ставки НДС» и «Суммы договора», стандартный функционал без программирования с этим не справится.
  3. Производительность базы данных: Дополнительные свойства хранятся в табличных частях (модель данных Entity-Attribute-Value). Если база данных содержит сотни тысяч документов, построение сложных отчетов или фильтрация по значениям дополнительных реквизитов может выполняться медленнее, чем по стандартным реквизитам СУБД.

Способ 2. Особенности использования расширений в версии 2.1

Для обхода ограничений стандартного интерфейса и логики разработчики часто используют механизм расширений конфигурации. Однако при работе с «1С:Документооборот 2.1» (особенно на релизах уровня 2.1.11.5) существует важная техническая деталь — режим совместимости платформы.

В старых релизах линейки 2.1 режим совместимости установлен на уровень 8.3.8. В этом режиме возможности расширений существенно ограничены: нельзя добавлять собственные реквизиты в СУБД через расширения, а использование некоторых аннотаций может вызывать нестабильную работу. Кроме того, принудительное снятие режима совместимости или переход на более новые версии платформы в ДО 2.1 может приводить к визуальным багам, например, к искажению отображения начальной страницы (когда списки задач уезжают вниз или перекрываются элементами интерфейса).

Важное примечание: В более поздних релизах «1С:Документооборот 2.1» (начиная с версии 2.1.17 и выше) фирма «1С» подняла режим совместимости конфигурации до 8.3.12. Это позволило безопасно использовать аннотацию &Вместо и другие современные инструменты расширений без риска сломать интерфейс начальной страницы.

Способ 3. Оптимальный гибридный подход

Как же совместить простоту обновлений, сохранность структуры базы данных и удобство пользователей? Рекомендуем использовать гибридный подход, состоящий из двух этапов:

Этап 1. Создание структуры данных в пользовательском режиме. Все новые реквизиты мы создаем как штатные дополнительные реквизиты через пользовательский интерфейс программы. Это гарантирует безопасность структуры данных СУБД и автоматическую совместимость с будущими обновлениями.

Этап 2. Кастомизация интерфейса через легкое расширение. Мы создаем расширение конфигурации, которое не содержит новых данных, а содержит исключительно программный код для управления формой документа. В коде расширения при открытии формы мы программно переносим элементы управления дополнительных реквизитов с вкладки «Свойства» на главную вкладку карточки документа и описываем для них необходимую интерактивную бизнес-логику.

Рассмотрим пример кода в расширении формы документа, который позволяет программно перенести дополнительный реквизит на основную страницу формы:


&НаСервере
Процедура Расш_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    
    // Определяем имя элемента формы, созданного для нашего дополнительного реквизита.
    // Обычно оно формируется по шаблону: "Свойство_" + ИмяСвойстваВСистеме.
    ИмяЭлементаСвойства = "Свойство_ОсобыеУсловияДоговора";
    
    ЭлементСвойства = Элементы.Найти(ИмяЭлементаСвойства);
    Если ЭлементСвойства <> Неопределено Тогда
        
        // Находим целевую группу на главной странице формы, куда хотим поместить поле
        ЦелеваяГруппа = Элементы.ГруппаРеквизитыДокумента; 
        
        // Перемещаем элемент на новое место в интерфейсе
        Элементы.Переместить(ЭлементСвойства, ЦелеваяГруппа);
        
        // Делаем поле более заметным для пользователя
        ЭлементСвойства.Заголовок = "Спец. условия договора (доп. реквизит)";
        
    КонецЕсли;
    
КонецПроцедуры

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

Перспектива перехода на «1С:Документооборот 3.0»

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

Таким образом, использование дополнительных реквизитов в сочетании с легкой программной доработкой через расширение — это наиболее надежная, гибкая и дальновидная стратегия развития вашей базы «1С:Документооборот».

← На главную