Почему в 1С:Документооборот принудительно ведется учет по сторонам в договоре?

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

При настройке системы 1С:Документооборот многие администраторы и разработчики сталкиваются с ситуацией, когда при включении признака ЯвляетсяДоговором в карточке вида документа, опция ВестиУчетСторон становится недоступной для редактирования и принудительно устанавливается в значение Истина. Это вызывает вопросы, особенно в случаях, когда организация работает только с простыми двусторонними договорами и не планирует использовать функционал многосторонности. Проанализируем, почему разработчики программного продукта приняли такое решение, и разберем программные и методологические аспекты этой настройки.

Программный анализ механизмов настройки

Для начала разберем, как именно система блокирует данную настройку на уровне кода. В модуле формы элемента справочника ВидыВнутреннихДокументов (или аналогичных объектов в зависимости от версии) присутствует процедура ЯвляетсяДоговоромПриИзменении. Давайте изучим фрагмент кода, который отвечает за поведение системы при установке флага договора:


Процедура ЯвляетсяДоговоромПриИзменении(Элемент)
    
    Если Объект.ЯвляетсяДоговором Тогда
        Объект.ВестиУчетПоКонтрагентам = Ложь;
        Объект.УчитыватьСрокДействия = Истина;
        Объект.УчитыватьСуммуДокумента = Истина;
        Объект.УчитыватьНедействующиеДокументы = Истина;
        Объект.ЯвляетсяКомплектомДокументов = Ложь;
        Объект.ОбязательноеУказаниеОтветственного = Истина;
        Объект.ВестиУчетПоОрганизациям = ИспользоватьУчетПоОрганизациям;
        
        // Принудительная установка флага учета сторон
        Объект.ВестиУчетСторон = Истина;
        
        Объект.ИспользоватьПодписание = Истина;
        Объект.ИспользоватьУтверждение = Ложь;
        Объект.ВариантПодписания = ПредопределенноеЗначение("Перечисление.ВариантыПодписания.МыИКонтрагенты");
        ОбновитьРеквизитыСторон();
    КонецЕсли;
    
    УстановитьДоступностьОпций(ЭтаФорма)
    
КонецПроцедуры

Как мы видим, система жестко прописывает ВестиУчетСторон = Истина. Но это только половина дела. Чтобы пользователь не мог изменить это значение вручную в интерфейсе, вызывается процедура УстановитьДоступностьОпций, где прописано следующее ограничение:


УстановитьДоступностьОпции(Форма, "ВестиУчетСторон",
        Не Форма.Объект.ЯвляетсяДоговором);

Таким образом, если документ определен как договор, флаг учета сторон становится недоступным для изменения. Выясним причину такого поведения системы, которая кроется в глубокой переработке архитектуры 1С:Документооборот при переходе к более новым версиям (начиная с 2.1).

Переход от одиночных контрагентов к табличной части Стороны

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

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

  1. Унификация отчетов: Все реестры договоров, отсчеты по дебиторской задолженности или срокам действия строятся на запросах к таблице сторон. Если бы часть договоров использовала старый механизм (одиночный реквизит), а часть — новый, создание консолидированной отчетности стало бы крайне сложным процессом.
  2. Масштабируемость: Любой договор, который изначально задумывался как двусторонний, может со временем потребовать добавления третьей стороны (например, поручителя или дополнительного грузополучателя). Система с включенным учетом сторон готова к этому по умолчанию.

Жесткая привязка к бизнес-логике подписания

Проанализируем еще одну важную строку кода: Объект.ВариантПодписания = ПредопределенноеЗначение("Перечисление.ВариантыПодписания.МыИКонтрагенты"). В логике 1С:Документооборот договор не считается полноценным документом, если он не прошел процедуру подписания обеими сторонами.

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

Интеграция с финансовыми системами (ERP, БП, УХ)

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

Данные для этой выгрузки теперь извлекаются из таблицы сторон по ролям. Принудительная установка флага гарантирует, что при обмене данными не возникнет исключительных ситуаций из-за отсутствия обязательных реквизитов. Разработчики исключили «человеческий фактор» на этапе настройки видов документов, чтобы обеспечить стабильность обмена данными в корпоративных ландшафтах.

Как решить задачу, если учет сторон действительно мешает?

Рассмотрим варианты действий, если стандартное поведение системы не устраивает ваш бизнес-процесс:

Вариант 1: Методологический (рекомендуемый)

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

  1. Создайте вид документа с типом «Внутренний документ».
  2. В названии укажите «Договор (внутренний)» или аналогичное.
  3. Настройте нужные вам поля (сумма, срок действия) вручную в настройках вида документа.

Это позволит сохранить чистоту типовой конфигурации и избежать проблем при обновлениях.

Вариант 2: Программная модификация

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

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

← На главную