При внедрении и адаптации программного продукта «1С:Документооборот 2.1» перед разработчиками и аналитиками часто встает задача автоматизации учета договоров. Каждое предприятие имеет свою уникальную специфику, требующую фиксации специфических аналитических данных: номеров дополнительных соглашений, особых условий по ставкам, специфических сроков действия или уникальных признаков согласования. Первая реакция начинающего специалиста — открыть Конфигуратор, снять базу с поддержки и начать добавлять новые реквизиты непосредственно в метаданные справочника ВнутренниеДокументы. Однако такой подход существенно усложнит последующие обновления конфигурации и может привести к техническому долгу.
В этой статье мы подробно разберем, как решить задачу расширения состава реквизитов договоров правильно, сохранив конфигурацию типовой и обеспечив стабильность системы при последующих обновлениях.
Давайте проанализируем штатные возможности программы. Фирма «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. Это позволило безопасно использовать аннотацию &Вместо и другие современные инструменты расширений без риска сломать интерфейс начальной страницы.
Как же совместить простоту обновлений, сохранность структуры базы данных и удобство пользователей? Рекомендуем использовать гибридный подход, состоящий из двух этапов:
Этап 1. Создание структуры данных в пользовательском режиме. Все новые реквизиты мы создаем как штатные дополнительные реквизиты через пользовательский интерфейс программы. Это гарантирует безопасность структуры данных СУБД и автоматическую совместимость с будущими обновлениями.
Этап 2. Кастомизация интерфейса через легкое расширение. Мы создаем расширение конфигурации, которое не содержит новых данных, а содержит исключительно программный код для управления формой документа. В коде расширения при открытии формы мы программно переносим элементы управления дополнительных реквизитов с вкладки «Свойства» на главную вкладку карточки документа и описываем для них необходимую интерактивную бизнес-логику.
Рассмотрим пример кода в расширении формы документа, который позволяет программно перенести дополнительный реквизит на основную страницу формы:
&НаСервере
Процедура Расш_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
// Определяем имя элемента формы, созданного для нашего дополнительного реквизита.
// Обычно оно формируется по шаблону: "Свойство_" + ИмяСвойстваВСистеме.
ИмяЭлементаСвойства = "Свойство_ОсобыеУсловияДоговора";
ЭлементСвойства = Элементы.Найти(ИмяЭлементаСвойства);
Если ЭлементСвойства <> Неопределено Тогда
// Находим целевую группу на главной странице формы, куда хотим поместить поле
ЦелеваяГруппа = Элементы.ГруппаРеквизитыДокумента;
// Перемещаем элемент на новое место в интерфейсе
Элементы.Переместить(ЭлементСвойства, ЦелеваяГруппа);
// Делаем поле более заметным для пользователя
ЭлементСвойства.Заголовок = "Спец. условия договора (доп. реквизит)";
КонецЕсли;
КонецПроцедуры
Этот метод позволяет полностью удовлетворить требования пользователей к эргономике интерфейса, при этом сама база данных остается абсолютно типовой, а все кастомные обработчики сосредоточены в безопасном расширении.
Планируя архитектуру доработок в версии 2.1, всегда нужно держать в уме неизбежный переход организации на редакцию 3.0. Давайте посмотрим, как принятые нами решения повлияют на этот процесс в будущем:
Таким образом, использование дополнительных реквизитов в сочетании с легкой программной доработкой через расширение — это наиболее надежная, гибкая и дальновидная стратегия развития вашей базы «1С:Документооборот».