Механизм История данных, встроенный в платформу 1С:Предприятие начиная с версии 8.3.11, является мощным инструментом для отслеживания изменений объектов. Однако часто разработчики сталкиваются с ситуацией, когда все настройки в конфигураторе выполнены, но в пользовательском режиме заветная кнопка «История изменений» так и не появляется. Проанализируем причины этой проблемы и разберем по шагам, что необходимо проверить и донастроить.
Прежде чем переходить к тонким настройкам прав и интерфейса, убедимся, что на уровне метаданных объекта включено использование механизма. Разберем, какие свойства должны быть установлены в Конфигураторе:
Справочник.Контрагенты).ИсторияДанных. Оно должно иметь значение Использовать.ИсторияДанных также должно быть установлено в значение Использовать.Важно помнить, что если для самого объекта история включена, а для конкретного реквизита — нет, то изменения этого реквизита просто не будут фиксироваться, но кнопка на форме все равно должна быть видна (при наличии прав).
Как показывает практика и обсуждения на форумах, самой частой причиной отсутствия кнопки является отсутствие специфических прав в роли пользователя. Даже если вы являетесь Полными правами, в самописных конфигурациях или при использовании БСП права могут быть распределены специфическим образом. Выясним, какие именно права отвечают за видимость механизма.
Рассмотрим список прав, которые необходимо проверить в объекте роли для конкретного метаданного:
История изменений будет скрыта платформой автоматически, даже если она добавлена на форму вручную.Проанализируем ситуацию: если кнопка видна в Конфигураторе (в окне предпросмотра формы), но исчезает в Предприятии, это на 90% означает, что текущему пользователю не хватает права Просмотр истории данных. Проверим это, создав тестовую роль или добавив права в существующую. Для этой задачи можно использовать обработку для быстрой проверки прав доступа и ролей к объектам метаданных.
Еще одна неочевидная причина — использование Функциональных опций. В сложных конфигурациях видимость команд часто привязана к какой-либо константе или параметру сеанса. Проверим следующий алгоритм:
История изменений в состав какой-либо опции.Иногда разработчики отключают стандартное поведение командных панелей. Разберем, как это влияет на нашу задачу. Если у командной панели формы снят флаг Автозаполнение, то стандартные команды платформы не будут добавлены в нее автоматически. Для оперативной диагностики и проверки видимости элементов непосредственно в пользовательском интерфейсе подойдёт инструмент для редактирования свойств открытых управляемых форм в режиме предприятия.
Чтобы вывести кнопку вручную, выполним следующие действия:
ФормаИсторияИзменений (или ИсторияИзменений).ТолькоВоВсехДействиях установлено в соответствии с вашими требованиями (если Истина, кнопка будет спрятана в меню «Еще»).Важно не путать Историю данных (платформенный механизм) и Версионирование объектов (подсистема Библиотеки стандартных подсистем — БСП). Это два абсолютно разных технических решения.
Проанализируем их различия:
СведенияОбОбъектах в виде XML-снимков (XDTO). Требует настройки через справочник «Настройки хранения истории изменений».Если в вашей конфигурации внедрена БСП, убедитесь, что вы не пытаетесь использовать оба механизма одновременно для одного объекта, так как это может привести к путанице в интерфейсе. Если вы используете платформенный механизм, кнопка добавляется как «Стандартная команда». Если БСП — кнопка обычно добавляется программно при создании формы или через общие команды подсистемы.
В некоторых случаях настройки истории данных могут быть переопределены программно. Существует глобальный метод ИсторияДанных.УстановитьНастройки(), который может программно выключить историю даже при включенных свойствах в метаданных. Посмотрим на пример кода, который позволяет проверить текущие настройки объекта:
Настройки = ИсторияДанных.ПолучитьНастройки(Метаданные.Справочники.Номенклатура);
Если Настройки.Использовать = Ложь Тогда
Сообщить("История данных для объекта программно отключена!");
КонецЕсли;
Также полезно проверить доступность права программно, чтобы исключить ошибки в настройке ролей:
Если НЕ ПравоДоступа("ПросмотрИсторииДанных", Метаданные.Справочники.Номенклатура) Тогда
Сообщить("У текущего пользователя нет прав на просмотр истории!");
КонецЕсли;
Иногда кнопка не появляется до тех пор, пока в системе не появится хотя бы одна запись в истории. Рассмотрим этот нюанс: после включения всех настроек, зайдите в объект, измените значение любого реквизита (для которого включена история) и запишите объект. Платформа должна сформировать запись в фоновом режиме. В некоторых версиях платформы 8.3 кнопка может стать видимой только после того, как в системных таблицах появится первая версия данных.
Резюмируем: если вы столкнулись с отсутствием кнопки «История данных», в первую очередь проверьте права Просмотр истории данных в ролях пользователя, затем убедитесь в отсутствии влияния функциональных опций и проверьте настройки командной панели формы.