Журнал регистрации по конкретному документу или справочнику

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

Данное решение рассчитано на управляемый интерфейс. Для обычного интерфейса подход будет другой, и здесь он не рассматривается.
Описанный механизм будет работать на УТ 11, Комплексной автоматизации в режиме управляемого приложения, и в принципе на любой конфигурации на управляемых формах.

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

Итак, определим, что же нам понадобится.
В рассматриваемом варианте реализации (а я прекрасно понимаю, что одну и ту же задачу можно решить кучей способов) нам понадобится

Общая команда «ЖурналРегистрацииПоОбъекту»;
Группа команд «ЖурналРегистрации»;
Отчет «Журнал регистрации по объекту».

Общую команду размещаем в нашей группе команд (можно обойтись без группы, но лично мне так удобее в дальнейшем добавлять/удалять команды), и указываем режим использования параметра — «Одиночный»
Обязательно указываем типы параметра команды — нужно отметить флажками все справочники и все документы. А также можно добавить и другие метаданные, если вдруг мы захотим. Например, планы видов характеристик.

В модуле команды пишем

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

ОткрытьФорму("Отчет.ЖурналРегистрацииПоОбъекту.ФормаОбъекта",Новый Структура("ПараметрОбъект", ПараметрКоманды));

КонецПроцедуры

В отчете создаем форму отчета. В форме создаем пустой реквизит с типом «Таблица значений» и добавляем его на форму.

В модуле формы пишем

 

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Перем ПараметрКоманды;

ПараметрКоманды = Параметры.ПараметрОбъект;

ТЗ_рез = РеквизитФормыВЗначение("ТаблицаЖурналаРегистрации");
ВыгрузитьЖурналРегистрации(ТЗ_рез,Новый Структура("Данные", ПараметрКоманды),,,10000);
Для Каждого СтрокаТЗ Из ТЗ_рез Цикл
СтрокаТЗ.Уровень = Строка(СтрокаТЗ.Уровень);
СтрокаТЗ.СтатусТранзакции = Строка(СтрокаТЗ.СтатусТранзакции);
КонецЦикла;
МассивРеквизитов = Новый Массив;
Для Каждого Колонка ИЗ ТЗ_рез.Колонки Цикл
НоваяКолонка = Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, "ТаблицаЖурналаРегистрации");
МассивРеквизитов.Добавить(НоваяКолонка);
КонецЦикла;
ИзменитьРеквизиты(МассивРеквизитов);
ЗначениеВРеквизитФормы(ТЗ_рез, "ТаблицаЖурналаРегистрации");

//Создаем элементы на форме для отображения колонок
ЭлементТЗ = Элементы["ТаблицаЖурналаРегистрации"];
Для Каждого Колонка ИЗ ТЗ_рез.Колонки Цикл
НовыйЭлементФормы = Элементы.Добавить("ТаблицаЖурналаРегистрации"+Колонка.Имя, Тип("ПолеФормы"), ЭлементТЗ);
НовыйЭлементФормы.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлементФормы.ПутьКДанным = "ТаблицаЖурналаРегистрации" + "." + Колонка.Имя;
КонецЦикла;
КонецПроцедуры

Вот и все. Простейший вариант открытия журнала регистрации по конкретному объекту готов.
Небольшое замечание. На клиенте недоступны типы УровеньЖурналаРегистрации и СтатусТранзакцииЗаписиЖурналаРегистрации, поэтому преобразуем их в строку.

 Журнал регистрации

 Журнал регистрации 2

Что можно улучшить в данном варианте?
Ну, во первых — сделать фильтр видимости колонок. Во-вторых, сделать отборы по видам событий, пользователям, дате и т.д.
А что нам в этом поможет? Верно — загрузить нашу таблицу как Набор данных Объект в схему компоновки данных. Но это, как говорится, совсем другая история!

Следите за обновлениями статьи, оставляйте голоса и комментарии! Спасибо!

2 Comments

  1. Pavean

    Я так понимаю что пока от http://infostart.ru/public/338203/ ничем не отличается по функционалу?

    Reply
  2. axelerleo

    (1) Pavean, Пока что да, за исключением того, что БСП не используется:)

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *