Предназначен для управления (получения, добавления) историей работы пользователя. В историю работы автоматически попадают события интерактивного добавления или изменения объектов информационной базы (документов, элементов справочника и пр.).
Полное описание, параметры и ограничения
МенеджерИсторииРаботыПользователя (UserWorkHistoryManager)
МенеджерИсторииРаботыПользователя (UserWorkHistoryManager)
Доступен, начиная с версии 8.2.
Методы:
Добавить (Add)
Очистить (Clear)
ОчиститьВсе (ClearAll)
Получить (Get)
Описание:
Предназначен для управления (получения, добавления) историей работы пользователя. В историю работы автоматически попадают события интерактивного добавления или изменения объектов информационной базы (документов, элементов справочника и пр.).
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение.
См. также:
Глобальный контекст, свойство ИсторияРаботыПользователя
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Добавить свою Книгу в историю по ссылке и по навигационной строке
Оба варианта Добавить относятся к одному вручную созданному учебному товару. Метод не возвращает элемент истории.
Где и как запускать
Полный серверный общий модуль УчебнаяИстория отдельной собственной учебной конфигурации.
Подготовка
Работайте только в отдельной собственной конфигурации УчебнаяКонфигурацияСинтаксиса, не в УТ, КА, УНФ или БП. Создайте справочник УчебныеТовары с кодом типа Строка длиной 32, вручную сохраните товар Книга с кодом guide-book.
Создайте серверный общий модуль УчебнаяИстория с флагом Сервер. Вставьте полный код выбранного урока. Из серверного обработчика команды своей обработки вызовите УчебнаяИстория.ВыполнитьПример().
Для истории требуется право СохранениеДанныхПользователя. Права задайте вручную только в своей учебной базе; код не включает привилегированный режим и не меняет роли.
Уроки удаления необратимо удаляют историю. Для них заранее создайте в этой отдельной базе единственного пользователя УчебныйПользовательСинтаксиса, войдите под ним монопольно, не открывайте другие сеансы. Для первого запуска оставьте подтверждение пустым.
Код не удаляет товары и не проводит документы. Добавление и очистка истории — настоящая запись пользовательских данных, а не изменение локального массива. Эти BSL-образцы в 1С автоматически не выполнялись.
Процедура ВыполнитьПример() Экспорт
Книга = Справочники.УчебныеТовары.НайтиПоКоду("guide-book");
Если Книга.Пустая() Тогда
ВызватьИсключение "В своей учебной базе вручную создайте Книгу с кодом guide-book";
КонецЕсли;
СсылкаКниги = ПолучитьНавигационнуюСсылку(Книга);
ИсторияРаботыПользователя.Добавить(Книга);
ПервыйСнимок = ИсторияРаботыПользователя.Получить();
НайденаПоОбъекту = Ложь;
Для Каждого ЗаписьИстории Из ПервыйСнимок Цикл
Если ЗаписьИстории.НавигационнаяСсылка = СсылкаКниги Тогда
НайденаПоОбъекту = Истина;
КонецЕсли;
КонецЦикла;
Сообщить(НайденаПоОбъекту);
ИсторияРаботыПользователя.Добавить(СсылкаКниги);
ВторойСнимок = ИсторияРаботыПользователя.Получить();
НайденаПоСтроке = Ложь;
Для Каждого ЗаписьИстории Из ВторойСнимок Цикл
Если ЗаписьИстории.НавигационнаяСсылка = СсылкаКниги Тогда
НайденаПоСтроке = Истина;
КонецЕсли;
КонецЦикла;
Сообщить(НайденаПоСтроке);
Сообщить("Товар не изменён, изменена только история текущего учебного пользователя");
КонецПроцедурыРазбор по шагам
Найти заранее сохранённую Книгу по собственному коду. При пустой ссылке остановиться, не создавать и не записывать товар автоматически.
Получить навигационную строку средствами платформы, не склеивать UUID и путь вручную.
Сначала передать ссылку справочника, затем строку. После каждого вызова заново получить историю и найти ожидаемую строку.
Не требовать прибавления ровно двух записей: повторное добавление одного объекта не доказывает наличие двух разных объектов.
Как проверить результат
Обе проверки наличия ожидаются Истина при наличии необходимых прав.
В истории есть ссылка именно на собственную Книгу. Количество, порядок и точное время повторного добавления не объявляются фиксированными.
Ожидаемый результат
Два настоящих варианта добавления разобраны на одном учебном объекте без изменения товара.
На что обратить внимание
Добавить не возвращает запись: не присваивайте его вызов переменной.
История сохраняется платформой. Это не самостоятельный массив и не журнал регистрации.
Повторное добавление не является тестом уникальности товарного кода и не заменяет сохранение самого товара.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Понять ОчиститьВсе на отдельной базе с одним собственным пользователем
ОчиститьВсе затрагивает истории всех пользователей. Здесь операция разрешена только когда в отдельной учебной базе существует ровно один собственный пользователь.
Где и как запускать
Полный серверный общий модуль УчебнаяИстория отдельной собственной учебной конфигурации.
Подготовка
Работайте только в отдельной собственной конфигурации УчебнаяКонфигурацияСинтаксиса, не в УТ, КА, УНФ или БП. Создайте справочник УчебныеТовары с кодом типа Строка длиной 32, вручную сохраните товар Книга с кодом guide-book.
Создайте серверный общий модуль УчебнаяИстория с флагом Сервер. Вставьте полный код выбранного урока. Из серверного обработчика команды своей обработки вызовите УчебнаяИстория.ВыполнитьПример().
Для истории требуется право СохранениеДанныхПользователя. Права задайте вручную только в своей учебной базе; код не включает привилегированный режим и не меняет роли.
Уроки удаления необратимо удаляют историю. Для них заранее создайте в этой отдельной базе единственного пользователя УчебныйПользовательСинтаксиса, войдите под ним монопольно, не открывайте другие сеансы. Для первого запуска оставьте подтверждение пустым.
Код не удаляет товары и не проводит документы. Добавление и очистка истории — настоящая запись пользовательских данных, а не изменение локального массива. Эти BSL-образцы в 1С автоматически не выполнялись.
Процедура ВыполнитьПример(Подтверждение = "") Экспорт
Пользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
Текущий = ПользователиИнформационнойБазы.ТекущийПользователь();
Если Пользователи.Количество() <> 1 ИЛИ Текущий = Неопределено Тогда
ВызватьИсключение "Для удаления истории нужна отдельная база с одним учебным пользователем";
КонецЕсли;
Если Текущий.Имя <> "УчебныйПользовательСинтаксиса" Тогда
ВызватьИсключение "Войдите только под собственным учебным пользователем";
КонецЕсли;
Если НЕ МонопольныйРежим() Тогда
ВызватьИсключение "Сначала вручную откройте свою учебную базу монопольно";
КонецЕсли;
Если Подтверждение <> "УДАЛЯЮ ВСЕ ИСТОРИИ ТОЛЬКО МОЕЙ ОДНОПОЛЬЗОВАТЕЛЬСКОЙ УЧЕБНОЙ БАЗЫ" Тогда
Сообщить("Подтверждение отсутствует; истории не удалены");
Возврат;
КонецЕсли;
ИсторияРаботыПользователя.ОчиститьВсе();
ПроверкаТекущего = ИсторияРаботыПользователя.Получить();
Сообщить(ПроверкаТекущего.Количество() = 0);
Сообщить("В этой отдельной учебной базе один пользователь; множественное удаление на реальной базе не испытывалось");
КонецПроцедурыРазбор по шагам
Подготовить только свою отдельную базу с единственным учебным пользователем. Не выполнять упражнение на копии с историями реальных сотрудников.
Оставить аргумент пустым для безопасного первого запуска. При иной конфигурации, числе пользователей, имени или отсутствии монополии будет исключение до удаления.
После осознанного решения ввести точную длинную фразу из условия. Она не является отдельным правом доступа и не отменяет требования платформы.
Выполнить ОчиститьВсе без аргументов. Получить проверяет только историю текущего пользователя; поскольку в этом опыте он единственный, не делаем заявлений о других пользователях.
Как проверить результат
Первый запуск не удаляет истории. Положительный опыт требует всех защитных условий и точной фразы.
Сразу после удаления история единственного текущего пользователя пуста. Проверка чужих историй и работа в многопользовательской базе этим уроком не подтверждается.
Ожидаемый результат
Опасный общий метод объяснён на ограниченном собственном стенде без предложения применить его к сотрудникам.
На что обратить внимание
В обычной базе ОчиститьВсе удалит истории других пользователей тоже. Не заменяйте им Очистить ради краткости.
Удаление необратимо; сохранённые ссылки не восстанавливают исходные даты и порядок.
МонопольныйРежим только проверяется, не устанавливается. Не добавляйте автоматическое завершение чужих сеансов.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.