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

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

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

Причина 1: Настройка запрета изменения реквизитов из шаблона

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

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

Важный нюанс: табличная часть Контрагенты в программном коде шаблона часто имеет тип РезультатЗапроса. Функция ЗначениеЗаполнено() для этого типа данных в старых релизах (например, 2.1.9.3) почти всегда возвращает Истина, даже если список фактически пуст или содержит одного контрагента. В итоге система ошибочно «замораживает» всю табличную часть для обычного пользователя, оставляя права на редактирование только пользователям с ролью ПолныеПрава.

Чтобы решить проблему этим способом, выполним следующие действия:

  1. Перейдем в раздел НСИ — Виды документов.
  2. Откроем карточку нужного вида документа (например, «Отчет о командировке»).
  3. На вкладке Шаблоны документов или в основных настройках найдем флаг «Запретить изменение реквизитов из шаблона».
  4. Снимем этот флаг и сохраним настройки.

Причина 2: Функциональная опция «Учет по нескольким контрагентам»

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

Рассмотрим шаги по проверке этой настройки:

  1. Перейдем в меню Настройка и администрирование — Настройка программы.
  2. Выберем пункт Общие настройки.
  3. Проверим наличие галочки напротив пункта «Учет по нескольким контрагентам».

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

Причина 3: Настройки доступности по состояниям

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

Посмотрим, как проверить эти настройки:

  1. Откроем Вид документа.
  2. Перейдем на вкладку Настройки доступности по состояниям.
  3. Найдем состояние, в котором находится проблемный документ (например, «Проект»).
  4. Проверим, стоит ли галочка в колонке «Контрагенты» (табличная часть) для соответствующих ролей или для записи «Все остальные».

Часто бывает так, что общая галочка Разрешено изменять документ стоит, но в детализации по полям доступ к табличной части Контрагенты ограничен. Установите необходимые разрешения и проверьте результат под обычным пользователем.

Причина 4: Программный обход ошибки (для разработчиков)

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

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


// В процедуре УстановитьДоступностьПоЗапрету
Если ТипЗнч(РеквизитШаблона) = Тип("РезультатЗапроса") Тогда
    // Для табличных частей не устанавливаем жесткую блокировку ТолькоПросмотр,
    // если логика процесса предполагает добавление новых строк пользователем
    Продолжить; 
КонецЕсли;

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

Причина 5: Права доступа на уровне записей (RLS)

Иногда корень проблемы кроется в RLS (Row Level Security). Если под администратором всё работает, а у пользователя — нет, это верный признак ограничения прав. Проанализируем ситуацию: пользователь может иметь право на добавление строки в документ, но не иметь прав на «Чтение» или «Просмотр» определенных папок в справочнике Контрагенты.

В этом случае кнопка «Добавить» может быть активна, но при попытке выбора или открытия списка система будет вести себя некорректно. Рекомендуется выполнить следующие действия:

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

← На главную