В процессе работы в системе 1С:Предприятие 8.3 (особенно в режиме управляемых форм) платформа автоматически сохраняет информацию обо всех объектах, которые открывал пользователь. Это удобно для быстрого возврата к недавно отредактированным документам или справочникам, однако возникают ситуации, когда этот список необходимо очистить. Например, по соображениям конфиденциальности, для оптимизации работы интерфейса или при тестировании функционала. В данной статье мы подробно разберем, как управлять механизмом истории программно и через настройки интерфейса.
Для начала проанализируем, что представляет собой история в 1С. Это системный механизм, который фиксирует ссылки на объекты базы данных. Важно понимать, что история привязана к конкретному пользователю информационной базы и хранится локально на его компьютере (в файлах кэша или профиля). Платформа предоставляет доступ к этому функционалу через объект глобального контекста ИсторияРаботыПользователя. Для тех, кому стандартный интерфейс кажется неудобным, существуют альтернативные способы оперативного маневрирования среди нужных объектов и комментариев — для этого подойдёт панель виджетов быстрого доступа к объектам 1С.
Рассмотрим основные возможности этого объекта:
Если перед нами стоит задача очистить историю автоматически (например, при выполнении регламентных работ или закрытии сеанса), мы воспользуемся методом Очистить(). Этот метод полностью удаляет все записи из списка «История» текущего пользователя.
Давайте создадим небольшую обработку или процедуру, которая будет выполнять это действие. Рассмотрим пример кода:
// Процедура для полной очистки истории текущего пользователя
Процедура ОчиститьИсториюНаКлиенте() Экспорт
Попытка
// Обращаемся к глобальному контексту
ИсторияРаботыПользователя.Очистить();
Сообщить("История работы пользователя успешно очищена.");
Исключение
ЗаписьЖурналаРегистрации("ОчисткаИстории", УровеньЖурналаРегистрации.Ошибка, , ,
ОписаниеОшибки());
Сообщить("Не удалось очистить историю. Подробности в журнале регистрации.");
КонецПопытки;
КонецПроцедуры
Обратите внимание, что данный метод доступен только на стороне клиента. Если вы пытаетесь вызвать его в серверном модуле, система выдаст ошибку, так как объект ИсторияРаботыПользователя не определен на сервере. Кроме того, при возникновении ошибок важно правильно использовать логирование в журнале регистрации для последующего анализа причин сбоя — в этом поможет универсальный инструмент администрирования и работы с файлами 1С.
Иногда требуется не просто очистить историю, а ограничить ее объем, чтобы она не разрасталась до огромных размеров. Проанализируем, как это сделать на уровне разработки конфигурации. В корне дерева конфигурации есть параметры, влияющие на общую оптимизацию интерфейса и свойства системы.
Разберем по шагам, где найти эти параметры:
Конфигуратор.МаксимальноеКоличествоЗаписейИсторииРаботыПользователя.Изменяя это значение, мы можем ограничить количество отображаемых элементов. По умолчанию это значение обычно равно 200, но для высоконагруженных систем это важная настройка свойств конфигурации, позволяющая снизить объем данных, подгружаемых при старте системы.
Рассмотрим ситуацию, когда рядовому пользователю (бухгалтеру или менеджеру) нужно самостоятельно удалить историю, не прибегая к помощи программиста. В современных версиях платформы 8.3 это предусмотрено стандартным функционалом.
Выясним последовательность действий в интерфейсе:
Этот метод удобен для разовой очистки, если пользователь открыл конфиденциальный документ и не хочет, чтобы ссылка на него оставалась в быстром доступе.
Проанализируем техническую сторону вопроса. Если программная очистка не помогает (например, из-за повреждения кэша), можно прибегнуть к очистке кэша 1С 8.3 ручными способами — есть набор обработок массовой очистки базы 1С от неиспользуемых объектов. История работы пользователя в файловой версии или при работе с сервером хранится в папке профиля пользователя Windows (Appdata).
Обычно путь выглядит следующим образом: %AppData%\1C\1cv8\идентификатор_базы\. Для освобождения места на диске С (особенно на терминальных серверах) полезно периодически выполнять удаление лишних временных файлов из программы 1С. Внутри этой папки находятся файлы с расширением .pfl, в которых хранятся настройки интерфейса, включая историю. Важный момент: полное удаление временных файлов пользователя приведет к сбросу всех настроек (положение окон, настройки отчетов и т.д.), поэтому в ряде случаев эффективнее использовать специальную обработку для просмотра и очистки хранилища настроек пользователя.
Посмотрим на обратную задачу. Иногда нам нужно, чтобы при выполнении определенного действия в коде (например, после генерации сложного отчета, который не является объектом метаданных), запись о нем попала в историю. Для этого используем метод Добавить(), который входит в стандартный набор инструментов управления историей.
// Пример программного добавления ссылки в историю
Процедура ДобавитьЗаписьВИсторию(СсылкаНаОбъект)
ТекстЗаписи = "Обработка документа: " + Строка(СсылкаНаОбъект);
ИсторияРаботыПользователя.Добавить(СсылкаНаОбъект, ТекстЗаписи);
КонецПроцедуры
Здесь СсылкаНаОбъект — это ссылка на документ или элемент справочника. Теперь пользователь сможет быстро найти результат вашей программной обработки в общем списке истории.
Мы выяснили, что управление историей в 1С 8.3 — это гибкий процесс. Для массовой очистки или автоматизации лучше всего подходит метод ИсторияРаботыПользователя.Очистить() в клиентском коде. Для управления удобством работы пользователей стоит настраивать глубину истории в конфигураторе. А для решения проблем с «зависшими» записями иногда приходится проводить очистку кэша и файлов настроек .pfl.
Рекомендуем использовать очистку истории в конце рабочего дня для терминальных серверов с ограниченным дисковым пространством, а также периодически проводить аудит действий в журнале регистрации, чтобы контролировать нагрузку на систему.