Как исправить ошибку «Поле объекта не обнаружено (СостояниеМЭДО)» в 1С:Документообороте 3.0

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

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

Анализ причины возникновения ошибки

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

Рассмотрим фрагмент программного кода, на котором происходит сбой в модуле формы ФормаСпискаСПапками справочника ДокументыПредприятия:

Элементы.СостояниеМЭДО.Видимость = ЕстьМЭДО;

В этой строке система пытается программно управлять видимостью колонки СостояниеМЭДО. Однако, если из-за нехватки прав платформа не создала этот элемент на форме, обращение к нему по имени вызывает исключение Поле объекта не обнаружено. Проанализируем ситуацию: почему прав, которые работали в предыдущем релизе (например, 3.0.10.17), стало недостаточно? В версии 3.0.10 произошла реструктуризация ролей подсистемы МЭДО (Межведомственный электронный документооборот). Ранее назначенных «Базовых прав МЭДО» теперь недостаточно для того, чтобы платформа разрешила отображение статусов обмена в общих списках документов.

Решение 1: Корректировка полномочий и ролей пользователя

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

  1. Откроем раздел Настройка — Полномочия.
  2. Найдем полномочие, назначенное всем пользователям (обычно это предопределенное полномочие Пользователи).
  3. Проверим наличие роли Работа с МЭДО. Как показывает опыт эксплуатации релиза 3.0.10.20, именно этой роли не хватает для того, чтобы элемент СостояниеМЭДО появился в коллекции формы.
  4. Если вы используете произвольные профили групп доступа, убедитесь, что в них включена роль Чтение входящих и исходящих документов МЭДО.

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

Решение 2: Исправление программного кода (для разработчиков)

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

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


ЭлементСостояние = Элементы.Найти("СостояниеМЭДО");
Если ЭлементСостояние <> Неопределено Тогда
    ЭлементСостояние.Видимость = ЕстьМЭДО;
КонецЕсли;

Такой подход считается «безопасным». Даже если у пользователя нет прав на МЭДО, система просто пропустит этот блок кода, не прерывая работу всей программы. Стоит отметить, что в последующих патчах и релизах (начиная с 3.0.11) разработчики 1С применили именно такую методику проверки.

Решение 3: Очистка кэша и пользовательских настроек

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

  1. Перейдем в раздел Настройка — Управление настройками пользователей.
  2. Выберем проблемного пользователя.
  3. В списке настроек найдем настройки формы списка справочника ДокументыПредприятия.
  4. Выполним удаление этих настроек.

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

Влияние функциональных опций

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

Заключение и рекомендации

Подводя итоги, отметим, что переход на ветку 3.0.10 требует особого внимания к распределению ролей. Основные шаги по предотвращению ошибки Поле объекта не обнаружено (СостояниеМЭДО) включают:

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

← На главную