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

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

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

Проанализируем причину возникновения проблемы

Разберем ситуацию: у вас есть расширение, в котором создана роль, дающая права на определенный документ (например, КомплектацияНоменклатуры). До обновления все работало корректно, но после установки нового релиза типовой конфигурации поля Дата и Номер стали недоступны для редактирования, хотя в основной конфигурации аналогичная роль работает без нареканий.

Выясним причину. В последних версиях платформы 1С:Предприятие 8.3 (начиная с 8.3.21 и 8.3.22) и в новых релизах БСП (Библиотеки стандартных подсистем), на которых строится «Бухгалтерия предприятия», был ужесточен механизм проверки прав доступа к стандартным реквизитам. Проблема часто кроется в том, что платформа в контексте расширения может игнорировать флаг Устанавливать права для новых реквизитов для стандартных полей, если они не указаны в роли расширения явным образом. Кроме того, механизмы БСП по проверке дат запрета изменения данных могут некорректно определять доступность объекта, если его метаданные в расширении «отслоились» от основной конфигурации.

Способ 1: Явная настройка прав на стандартные реквизиты в роли расширения

Первое, что нам необходимо сделать — это проверить настройки прав в роли, которая находится внутри расширения. Ранее мы могли полагаться на общие настройки, но теперь правила изменились. Пройдем по шагам для исправления:

  1. Откроем конфигуратор и перейдем в дерево метаданных вашего расширения.
  2. Найдем роль, которая отвечает за права на проблемный документ.
  3. В окне редактирования роли выберем наш документ (например, Документ.КомплектацияНоменклатуры).
  4. Обратим внимание на правую колонку, где перечислены права (Чтение, Добавление, Изменение и т.д.). Убедимся, что права на редактирование объекта установлены.
  5. Теперь самое важное: нажмем кнопку Стандартные реквизиты (она находится под списком обычных реквизитов документа в окне настройки роли).
  6. В открывшемся списке найдем поля Дата и Номер. Проанализируем установленные для них флаги. Скорее всего, флажки Просмотр и Редактирование там будут сняты или затенены.
  7. Явно установим галочки для прав Просмотр и Редактирование именно для этих стандартных реквизитов.

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

Способ 2: Принудительная реструктуризация и обновление связей БСП

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

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

  1. Добавим в наше расширение объект из основной конфигурации: ПланВидовХарактеристик.РазделыДатЗапретаИзменения.
  2. Убедимся, что в роли расширения на этот объект также есть права на чтение.
  3. Обновим конфигурацию базы данных. В этот момент платформа выполнит полную пересборку связей расширения и основной конфигурации.
  4. Проверим доступность даты в документе. Если поле стало доступным, значит, добавление ПВХ спровоцировало очистку внутреннего кэша прав БСП.
  5. Попробуем удалить РазделыДатЗапретаИзменения из расширения. Как показывает практика, после удаления объекта «исправленное» состояние часто сохраняется, так как метаданные уже были корректно реструктуризированы.

Способ 3: Программный анализ блокировки в формах БП 3.0

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


// Пример вызова в типовой БП 3.0
ОбщегоНазначенияБП.УстановитьСостояниеПолейФормы(ЭтотОбъект, Форма);

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

Если блокировка происходит программно, обратите внимание на логику работы функции ЗначениеПраваДляОбъекта или проверку ролей через ПравоДоступа(). Иногда помогает добавление в расширение не только роли, но и самого документа с сохранением всех его стандартных реквизитов «как в оригинале».

Дополнительные рекомендации по стабильной работе расширений

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

Подведем итог: блокировка даты и номера в расширениях после обновления 1С — это комплексная проблема, связанная с изменением логики платформы и механизмов БСП. Основным решением является явное проставление прав на стандартные реквизиты в ролях расширения и принудительная реструктуризация метаданных расширения путем временного добавления объектов, связанных с подсистемой дат запрета изменения.

← На главную