Почему не отображается история изменений в кадровых документах 1С:ERP 2 и как это исправить?

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

В процессе работы с конфигурацией 1С:ERP Управление предприятием 2 (или аналогичными решениями, такими как Комплексная автоматизация) пользователи часто сталкиваются с ситуацией, когда для одних документов (например, кассовых) гиперссылка История изменений доступна в шапке формы, а для кадровых документов (Прием на работу, Увольнение, Перевод) она отсутствует. Это происходит даже в тех случаях, когда в общих настройках системы версионирование для данных типов объектов включено и настроено. Рассмотрим подробно, почему так происходит, и разберем по шагам алгоритм восстановления этой функциональности.

Проанализируем базовые настройки версионирования

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

  1. Перейдем в раздел НСИ и администрирование — Общие настройки.
  2. Развернем группу История изменений.
  3. Убедимся, что флаг Хранить историю изменений установлен.
  4. Нажмем на гиперссылку Настройки хранения. Здесь в списке документов найдем нужный нам кадровый документ, например, Прием на работу.
  5. Проверим, какое значение установлено в колонке Вариант. Для того чтобы история записывалась, должно стоять Версионировать при записи или Версионировать при проведении.

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

Проверка пользовательского интерфейса (Настройка панели навигации)

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

Откроем форму документа (например, конкретный документ «Прием на работу»). В правом верхнем углу нажмем кнопку Сервис и настройки (три полоски или шестеренка), далее выберем пункт Вид — Настройка панели навигации формы.

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

Однако часто бывает так, что в списке доступных команд этой строки просто нет. Это верный признак того, что система на уровне программного кода "не понимает", что данный документ должен обладать этой командой.

Разбор технических причин в конфигураторе: Определяемые типы

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

Давайте откроем конфигуратор и проанализируем следующие объекты:

  1. Найдем в дереве метаданных ветку Определяемые типы.
  2. Нас интересует тип под названием ВерсионированиеДанных. Откроем его свойства и нажмем кнопку Состав.
  3. В списке типов должны быть отмечены галочками все документы, для которых планируется использовать историю изменений. Найдем там ДокументСсылка.ПриемНаРабота и другие кадровые документы. Если галочка отсутствует — ее нужно поставить.
  4. Аналогичную проверку нужно провести для типа ВерсионированиеДанныхОбъектов. В некоторых релизах ERP эти типы используются совместно для разных механизмов отображения истории.

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

Анализ прав доступа и ролей

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

В модуле ВерсионированиеОбъектов часто прописана логика, которая проверяет доступность команды. Проанализируем фрагмент кода, который инициализирует команду:


// Пример логики проверки доступности
Если Не ПравоДоступа("Чтение", Метаданные.РегистрыСведений.ВерсииОбъектов) Тогда
    Команда.Видимость = Ложь;
КонецЕсли;

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

Особенности кадрового блока в ERP (подсистема ЗУП)

Стоит учитывать, что кадровый учет в 1С:ERP реализован путем интеграции подсистем из конфигурации Зарплата и управление персоналом 3.1. Разработчики иногда ограничивают вывод команды истории изменений для "тяжелых" документов. К кадровым документам это относится из-за сложной структуры движений по регистрам и потенциально большого объема конфиденциальных данных.

Если в определяемых типах документ присутствует, но кнопки всё равно нет, это может быть следствием того, что в самой форме документа (в командном интерфейсе формы) для команды ИсторияИзменений принудительно снят флаг Автовидимость или Видимость. Посмотрим, как это исправить:

  1. В конфигураторе найдем форму нужного документа.
  2. Перейдем на вкладку Командный интерфейс.
  3. Найдем в иерархии команд ОбщаяКоманда.ИсторияИзменений.
  4. Проверим свойство Видимость для различных ролей.

Альтернативное решение: Внешняя обработка или расширение

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


ПараметрыОткрытия = Новый Структура("Ссылка", Объект.Ссылка);
ОткрытьФорму("ОбщаяФорма.ИсторияИзменений", ПараметрыОткрытия);

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

Резюме и рекомендации

Мы выяснили, что отсутствие истории изменений в кадровых документах — это чаще всего комбинация настроек интерфейса и состава определяемых типов в метаданных. Подведем итоги:

  1. Проверьте настройки версионирования в пользовательском режиме (НСИ и администрирование).
  2. Используйте "Настройку панели навигации" непосредственно в форме документа — возможно, кнопка просто скрыта.
  3. Убедитесь в наличии роли Чтение версий объектов у пользователя.
  4. Проверьте определяемые типы ВерсионированиеДанных в конфигураторе — документ должен быть в их составе.
  5. В крайнем случае — используйте расширение для добавления собственной кнопки вызова формы ИсторияИзменений.

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

← На главную