Почему не отображается кнопка "История изменений" для версионируемого объекта в 1С и как это исправить?

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

Довольно часто при внедрении функционала Библиотеки стандартных подсистем (БСП) разработчики сталкиваются с ситуацией: нетиповой документ включен в ОпределяемыйТип.ВерсионируемыеДанные, добавлена подписка на событие ЗаписатьВерсиюДокумента, версии успешно пишутся в регистр, но на форме документа заветная кнопка "История изменений" так и не появляется. Давайте подробно разберем эту проблему и найдем пути ее решения.

Главная причина: настройка командной панели формы

Проанализируем базовое поведение платформы 1С. Команда отчета "История изменений" является глобальной параметризуемой командой. По умолчанию такие команды выводятся платформой только в те командные панели, у которых установлен признак Автозаполнение.

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

Альтернативный вариант: размещение без автозаполнения

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

  1. Создадим на форме элемент типа "Группа команд" в нужном месте, куда хотим поместить кнопки.
  2. В модуле формы при вызове инициализации команд передадим структуру ПараметрыРазмещения, явно указав в ней имя созданной группы.

В таком случае механизм БСП сформирует кнопку в указанной группе без необходимости включать общее автозаполнение.

Проверка программного кода инициализации БСП

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

В обработчике ПриСозданииНаСервере должен быть следующий код:


Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
    ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры

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


&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
    ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры

&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
    ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
    ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры

В некоторых случаях (особенно для форм списков) в качестве источника вместо Объект передается Элементы.Список. Также для обновления состояния команд используются вызовы в обработчиках ПриОткрытии и ПриЧтенииНаСервере.

Дополнительные причины отсутствия команды

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

  1. Права доступа. Для отображения кнопки у пользователя должна быть назначена роль, разрешающая просмотр версий (например, роль "Чтение информации о версиях объектов"). Без нее платформа скрывает глобальную команду для конкретного пользователя.
  2. Глобальная функциональная опция. Проверьте, включена ли опция "Использовать версионирование объектов" в разделе администрирования. Если версионирование отключено глобально, кнопка не появится даже при верных настройках регистра.
  3. Статус документа. Параметризуемая команда ожидает ссылку на объект. Если форма открыта для создания нового, еще не записанного документа, команда не будет отображаться, так как ссылки и истории изменений у него еще не существует.
  4. Кэш метаданных БСП. После добавления документа в ОпределяемыйТип.ВерсионируемыеДанные системе необходимо обновить внутренние кэши. Обновите кэш справочника "Идентификаторы объектов метаданных" (например, запустив базу с ключом /С ОбновитьПоставляемыеДанные или через раздел администрирования).
  5. Пользовательские настройки формы. Иногда пользователь мог случайно скрыть кнопку вручную. Зайдите в меню "Еще", выберите "Изменить форму", затем снова "Еще" и нажмите "Установить стандартные настройки".

Проанализировав все эти пункты по шагам, вы гарантированно сможете вывести команду "История изменений" на форму вашего объекта.

← На главную