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