Почему в режиме 1С:Предприятие не отображается кнопка «История данных» и как это исправить

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

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

Проверка базовых свойств метаданных

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

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

Важно помнить, что если для самого объекта история включена, а для конкретного реквизита — нет, то изменения этого реквизита просто не будут фиксироваться, но кнопка на форме все равно должна быть видна (при наличии прав).

Настройка прав доступа — ключевой этап

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

Рассмотрим список прав, которые необходимо проверить в объекте роли для конкретного метаданного:

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

Функциональные опции и их влияние

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

  1. В дереве метаданных найдем раздел Функциональные опции.
  2. Проверим, не входит ли наш справочник или стандартная команда История изменений в состав какой-либо опции.
  3. Если опция существует, убедимся, что ее значение в пользовательском режиме (включена ли соответствующая «галочка» в настройках программы) позволяет отображать команду.

Командная панель и настройки формы

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

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

  1. Откроем редактор формы объекта.
  2. Перейдем на закладку «Команды», далее — «Стандартные команды».
  3. Найдем команду ФормаИсторияИзменений (или ИсторияИзменений).
  4. Перетащим ее в дерево элементов формы, в нужную нам группу командной панели.
  5. В свойствах добавленного элемента проверим свойство Видимость и убедимся, что свойство ТолькоВоВсехДействиях установлено в соответствии с вашими требованиями (если Истина, кнопка будет спрятана в меню «Еще»).

Различие между механизмом платформы и БСП

Важно не путать Историю данных (платформенный механизм) и Версионирование объектов (подсистема Библиотеки стандартных подсистем — БСП). Это два абсолютно разных технических решения.

Проанализируем их различия:

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

Программная инициализация и проверка

В некоторых случаях настройки истории данных могут быть переопределены программно. Существует глобальный метод ИсторияДанных.УстановитьНастройки(), который может программно выключить историю даже при включенных свойствах в метаданных. Посмотрим на пример кода, который позволяет проверить текущие настройки объекта:


Настройки = ИсторияДанных.ПолучитьНастройки(Метаданные.Справочники.Номенклатура);
Если Настройки.Использовать = Ложь Тогда
    Сообщить("История данных для объекта программно отключена!");
КонецЕсли;

Также полезно проверить доступность права программно, чтобы исключить ошибки в настройке ролей:


Если НЕ ПравоДоступа("ПросмотрИсторииДанных", Метаданные.Справочники.Номенклатура) Тогда
    Сообщить("У текущего пользователя нет прав на просмотр истории!");
КонецЕсли;

Особенности записи первой версии

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

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

← На главную