После планового обновления конфигурации 1С:Бухгалтерия предприятия 3.0 (например, на релиз 3.0.140.40 и выше) многие разработчики сталкиваются с неприятной ситуацией: в расширениях, которые успешно работали годами, внезапно блокируется возможность изменения Даты и Номера документов. При этом права на сам документ (добавление, изменение, проведение) у пользователя есть, а стандартные реквизиты отображаются на форме только для чтения. Рассмотрим подробно, почему это происходит и как вернуть управление полями формы.
Разберем ситуацию: у вас есть расширение, в котором создана роль, дающая права на определенный документ (например, КомплектацияНоменклатуры). До обновления все работало корректно, но после установки нового релиза типовой конфигурации поля Дата и Номер стали недоступны для редактирования, хотя в основной конфигурации аналогичная роль работает без нареканий.
Выясним причину. В последних версиях платформы 1С:Предприятие 8.3 (начиная с 8.3.21 и 8.3.22) и в новых релизах БСП (Библиотеки стандартных подсистем), на которых строится «Бухгалтерия предприятия», был ужесточен механизм проверки прав доступа к стандартным реквизитам. Проблема часто кроется в том, что платформа в контексте расширения может игнорировать флаг Устанавливать права для новых реквизитов для стандартных полей, если они не указаны в роли расширения явным образом. Кроме того, механизмы БСП по проверке дат запрета изменения данных могут некорректно определять доступность объекта, если его метаданные в расширении «отслоились» от основной конфигурации.
Первое, что нам необходимо сделать — это проверить настройки прав в роли, которая находится внутри расширения. Ранее мы могли полагаться на общие настройки, но теперь правила изменились. Пройдем по шагам для исправления:
Документ.КомплектацияНоменклатуры).Дата и Номер. Проанализируем установленные для них флаги. Скорее всего, флажки Просмотр и Редактирование там будут сняты или затенены.Просмотр и Редактирование именно для этих стандартных реквизитов.После внесения этих изменений обновим конфигурацию базы данных и проверим результат в режиме «1С:Предприятие». Во многих случаях этого достаточно для восстановления работоспособности.
Если явная установка прав не помогла, значит, проблема глубже — в кэшировании прав подсистемой «Даты запрета изменения» или в ошибке регистрации метаданных расширения. Рассмотрим механизм, который помог многим разработчикам: добавление вспомогательного объекта метаданных для инициации полной реструктуризации расширения.
Выясним, какие объекты БСП влияют на проверку прав доступа к дате. В конфигурации Бухгалтерия предприятия 3.0 это часто связано с планом видов характеристик (ПВХ) РазделыДатЗапретаИзменения. Выполним следующие действия:
ПланВидовХарактеристик.РазделыДатЗапретаИзменения.РазделыДатЗапретаИзменения из расширения. Как показывает практика, после удаления объекта «исправленное» состояние часто сохраняется, так как метаданные уже были корректно реструктуризированы.Иногда типовой код конфигурации может программно блокировать поля, если считает, что контекст вызова формы в расширении не соответствует правилам безопасности. Разберем, как проверить это с помощью отладчика. В модуле формы документа или в общих модулях БСП часто вызывается процедура, управляющая состоянием полей:
// Пример вызова в типовой БП 3.0
ОбщегоНазначенияБП.УстановитьСостояниеПолейФормы(ЭтотОбъект, Форма);
Проанализируем ситуацию: если вы добавили форму документа в расширение, проверьте процедуры ПриСозданииНаСервере или ПриЧтенииНаСервере. Попробуйте временно закомментировать вызовы типовых процедур установки состояния полей, чтобы понять, является ли блокировка следствием работы кода 1С или же это чисто платформенный механизм ограничений прав доступа.
Если блокировка происходит программно, обратите внимание на логику работы функции ЗначениеПраваДляОбъекта или проверку ролей через ПравоДоступа(). Иногда помогает добавление в расширение не только роли, но и самого документа с сохранением всех его стандартных реквизитов «как в оригинале».
Рассмотрим еще несколько практических советов, которые помогут избежать подобных проблем при последующих обновлениях:
.cfe, полностью удалить его из базы, зайти в режим «Предприятие», выйти, и снова загрузить расширение в конфигураторе. Это гарантированно очищает таблицы расширений в базе данных.Подведем итог: блокировка даты и номера в расширениях после обновления 1С — это комплексная проблема, связанная с изменением логики платформы и механизмов БСП. Основным решением является явное проставление прав на стандартные реквизиты в ролях расширения и принудительная реструктуризация метаданных расширения путем временного добавления объектов, связанных с подсистемой дат запрета изменения.