Выгрузка данных из журнала регистрации в таблицу на форме (обычное приложение)

26.08.21

База данных - Журнал регистрации

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

Скачать исходный код

Наименование Файл Версия Размер
Выгрузка данных из журнала регистрации в таблицу на форме (обычное приложение):
.epf 10,54Kb
20
.epf 10,54Kb 20 Скачать

Собственно, ничего нового и необычного. Собрано на скорую руку, возможно поможет тем, к кому как и ко мне прибегут с вопросами типа: "Кто редактировал?" или "Нужны данные, что и сколько пользователь за период сделал в программе?".

Тестировал на конфигурации "Управление торговым предприятием для Украины", редакция 1.2. (1.2.63.1), Платформа 1С:Предприятие 8.3 (8.3.15.1700)

Код основной процедуры:

Процедура ЗаполнениеТПСписок()
	Если Пользователи.Количество() = 0 И Данные.Количество() = 0 Тогда
		Предупреждение("Необходимо указать пользователей или данные справочников/документов отбора");
		Возврат;
	КонецЕсли;
	Если НачПериода = Дата(1,1,1) ИЛИ КонПериода = Дата(1,1,1) Тогда
		Предупреждение("Необходимо указать период отбора");
		Возврат;
	КонецЕсли;
	Если НЕ ТПСписок.Количество() = 0 Тогда
		Если НЕ Вопрос("Перезаполнить таблицу?", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда
			Возврат;
		КонецЕсли;
	КонецЕсли;
	ТПСписок.Очистить();
	ТПСписок.Колонки.Очистить();
	МассивСобытий = Новый Массив;
	МассивПользователей = Новый Массив;
	МассивМетаданных = Новый Массив;
	МассивДанных = Новый Массив;
	МассивСобытий.Добавить("_$Data$_.New");
	МассивСобытий.Добавить("_$Data$_.Update");
	Для Каждого Эл Из Метаданные.Документы Цикл
		МассивМетаданных.Добавить(Эл);
	КонецЦикла;
	Для Каждого Эл Из Метаданные.Справочники Цикл
		МассивМетаданных.Добавить(Эл);
	КонецЦикла;
	Фильтр = Новый Структура("ДатаНачала, ДатаОкончания, Событие, Метаданные");
	Фильтр.ДатаНачала = НачПериода;
	Фильтр.ДатаОкончания = КонецДня(КонПериода);
	Фильтр.Событие = МассивСобытий;
	Фильтр.Метаданные = МассивМетаданных;
	Если НЕ Пользователи.Количество() = 0 Тогда
		Для Каждого Эл Из Пользователи Цикл
			ТекПользователь = Эл.Значение;
			Если ТекПользователь = Неопределено ИЛИ НЕ ТипЗнч(ТекПользователь) = Тип("СправочникСсылка.Пользователи") Тогда
				ТекПользователь = Справочники.Пользователи.ПустаяСсылка();
			КонецЕсли;
			Если НЕ ЗначениеЗаполнено(ТекПользователь) Тогда
				Продолжить;
			КонецЕсли;
			ТекНаимП = СокрЛП(ТекПользователь.Наименование);
			Если ТекНаимП = Неопределено ИЛИ НЕ ТипЗнч(ТекНаимП) = Тип("Строка") Тогда
				ТекНаимП = "";
			КонецЕсли;
			Если НЕ ЗначениеЗаполнено(ТекНаимП) Тогда
				Продолжить;
			КонецЕсли;
			МассивПользователей.Добавить(ТекПользователь.Наименование);
		КонецЦикла;
		Если НЕ МассивПользователей.Количество() = 0 Тогда
			Фильтр.Вставить("Пользователь", МассивПользователей);
		КонецЕсли;	
	КонецЕсли;
	ТекСсылка = Неопределено;
	Если НЕ Данные.Количество() = 0 Тогда
		Для Каждого Эл Из Данные Цикл
			ТекСсылка = Эл.Значение;
			Если ТекСсылка = Неопределено ИЛИ НЕ ЗначениеЗаполнено(ТекСсылка) Тогда
				Продолжить;
			КонецЕсли;
			Фильтр.Вставить("Данные", ТекСсылка);
			Прервать;
		КонецЦикла;
	КонецЕсли;
	Если МассивПользователей.Количество() = 0 И (ТекСсылка = Неопределено ИЛИ НЕ ЗначениеЗаполнено(ТекСсылка)) Тогда
		Предупреждение("Необходимо корректно указать пользователей или данные справочников или документов отбора");
		Возврат;
	КонецЕсли;
	СтрКолонок = "Дата,ИмяПользователя,Событие,Метаданные,Данные,ПредставлениеДанных";
	СтрокаКолонок = "Date,UserName,EventName,MetadataName,Data,DataPresentation";
	ТаблицаКолонок = ТаблицаКолонокЖурналаРегистрации();
	//	Переименовываем колонки журнала регистрации к типу "NameXML"
	ПереименоватьКолонкиТаблицыЖурналаРегистрации(ТПСписок, "NameXML", , ТаблицаКолонок);
	//	Дополняем колонки
	Если ТПСписок.Колонки.Найти("Месяц") = Неопределено Тогда
		ТПСписок.Колонки.Добавить("Месяц", Новый ОписаниеТипов("Дата"), "Месяц", 15);
	КонецЕсли;	
	Колонки = ТПСписок.Колонки;
	ЛюбаяСсылка = Справочники.ТипВсеСсылки();
	ЛюбаяСсылка = Новый ОписаниеТипов(ЛюбаяСсылка, Документы.ТипВсеССылки().Типы());
	Если СтрокаКолонок = Неопределено Тогда
		Для Каждого ОписаниеКолонки Из ТаблицаКолонок Цикл
			Если Колонки.Найти(ОписаниеКолонки.NameXML) = Неопределено Тогда
				Если ОписаниеКолонки.NameXML = "Данные"  ИЛИ ОписаниеКолонки.NameXML = "Data" Тогда
					Колонки.Добавить(ОписаниеКолонки.Имя, ЛюбаяСсылка , ОписаниеКолонки.Представление);
				Иначе	
					Колонки.Добавить(ОписаниеКолонки.Имя, ОписаниеКолонки.Тип , ОписаниеКолонки.Представление);
				КонецЕсли;	
			КонецЕсли
		КонецЦикла;
	Иначе
		СтруктураКолонок = Новый Структура(СтрокаКолонок);
		Для Каждого ЭлементКолонки Из СтруктураКолонок Цикл
			ОписаниеКолонки = ТаблицаКолонок.Найти(ЭлементКолонки.Ключ, "Имя, Name, NameXML");
			Если ОписаниеКолонки <> Неопределено Тогда
				Если Колонки.Найти(ОписаниеКолонки.NameXML) = Неопределено Тогда
					Если ОписаниеКолонки.NameXML = "Данные" ИЛИ ОписаниеКолонки.NameXML = "Data" Тогда
						Колонки.Добавить(ОписаниеКолонки.Имя, ЛюбаяСсылка , ОписаниеКолонки.Представление);
					Иначе	
						Колонки.Добавить(ОписаниеКолонки.Имя, ОписаниеКолонки.Тип , ОписаниеКолонки.Представление);
					КонецЕсли;	
				КонецЕсли
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	ВтСписок = ТПСписок.СкопироватьКолонки();
	Состояние("Запрос данных");
	ВыгрузитьЖурналРегистрации(ВтСписок, Фильтр, СтрКолонок);
	Для Каждого СтрВт Из ВтСписок Цикл
		Состояние("Выгрузка данных " + (ВтСписок.Индекс(СтрВт) + 1) + " из " + ВтСписок.Количество()); 
		СтрН = ТПСписок.Добавить();
		ЗаполнитьЗначенияСвойств(СтрН, СтрВт);
		Если НЕ ТПСписок.Колонки.Найти("Месяц") = Неопределено Тогда
			СтрН.Месяц = НачалоМесяца(СтрН.Дата);
		КонецЕсли;	
		Если НЕ ТПСписок.Колонки.Найти("Событие") = Неопределено Тогда
			Если СтрН.Событие = "_$Data$_.New" Тогда
				СтрН.Событие = "Создан";
			КонецЕсли;
			Если СтрН.Событие = "_$Data$_.Update" Тогда
				СтрН.Событие = "Изменен";
			КонецЕсли;	
		КонецЕсли;	
	КонецЦикла;
	Если Данные.Количество() > 1 Тогда
		Для н = 1 По Данные.Количество() - 1 Цикл
			Эл = Данные.Получить(н);
			ТекСсылка = Эл.Значение;
			Если ТекСсылка = Неопределено ИЛИ НЕ ЗначениеЗаполнено(ТекСсылка) Тогда
				Продолжить;
			КонецЕсли;
			Фильтр.Вставить("Данные", ТекСсылка);
			ВтСписок = ТПСписок.СкопироватьКолонки();
			Состояние("Запрос данных по док. " + н + " из " + Данные.Количество());
			ВыгрузитьЖурналРегистрации(ВтСписок, Фильтр, СтрКолонок);
			Для Каждого СтрВт Из ВтСписок Цикл
				Состояние("Выгрузка данных по док. " + (ВтСписок.Индекс(СтрВт) + 1) + " из " + ВтСписок.Количество()); 
				СтрН = ТПСписок.Добавить();
				ЗаполнитьЗначенияСвойств(СтрН, СтрВт);
				Если НЕ ТПСписок.Колонки.Найти("Месяц") = Неопределено Тогда
					СтрН.Месяц = НачалоМесяца(СтрН.Дата);
				КонецЕсли;	
				Если НЕ ТПСписок.Колонки.Найти("Событие") = Неопределено Тогда
					Если СтрН.Событие = "_$Data$_.New" Тогда
						СтрН.Событие = "Создан";
					КонецЕсли;
					Если СтрН.Событие = "_$Data$_.Update" Тогда
						СтрН.Событие = "Изменен";
					КонецЕсли;	
				КонецЕсли;	
			КонецЦикла;
		КонецЦикла;	
	КонецЕсли;
	ТПСписок.Сортировать("ИмяПользователя,Месяц,Дата");
	ЭлементыФормы.ТПСписок.СоздатьКолонки();
	КолДан = ЭлементыФормы.ТПСписок.Колонки.Найти("Данные");
	Если НЕ КолДан = Неопределено Тогда
		КолДан.ЭлементУправления.КнопкаОткрытия = Истина;
	КонецЕсли;	
КонецПроцедуры // ЗаполнениеТПСписок()

 

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

См. также

Журнал изменений с восстановлением состояния ссылочных объектов и архивацией по HTTP / COM (расширение + конфигурация, 8.3.14+, ЛЮБАЯ конфигурация)

Архивирование (backup) Журнал регистрации Поиск данных Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

База данных «сама» меняет данные в документах/справочниках? Тогда данный журнал изменений для Вас! Практически не влияет на скорость записи объектов за счет быстрого алгоритма! Скорость работы почти в 2 раза выше типового механизма "История изменений"! Позволяет следить за изменениями и удалением в любых ссылочных объектах конфигурации, с возможностью архивации по HTTP(!) или COM, и сверткой данных. А так же, может восстановить состояние реквизитов (значения) до момента изменения или удаления объекта из базы. Есть ДЕМО-база где можно самостоятельно протестировать часть функционала! Работает на любых платформах выше 8.3.14+ и любых конфигурациях! Версия 3.1 от 24.08.2023!

21600 руб.

15.05.2017    42679    10    24    

38

Версионирование объектов для Альфа-авто, ред 4 и 5.

Оптовая торговля Розничная торговля Журнал регистрации Платформа 1С v8.3 Конфигурации 1cv8 Автомобили, автосервисы Управленческий учет Платные (руб)

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

4800 руб.

03.09.2016    42342    33    24    

38

LogManager - Внешний журнал регистрации в SQL

Журнал регистрации Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Журнал регистрации платформы 1С в SQL. Общая база хранения всех журналов. Через com-подключение регламентным заданием периодически догружает журналы регистраций из рабочих баз. Предоставляет настраиваемый доступ к журналам по правам подразделений. Формирует отчеты по пользователям и данным.

10000 руб.

23.05.2014    55634    52    16    

47

Мониторинг баз и серверов 1С

Журнал регистрации Мониторинг Платформа 1С v8.3 Платные (руб)

В сферу обязанностей при работе с клиентами входит контроль работы баз данных и серверов 1С. Нужно понимать что происходит в базах, есть ли ошибки, зависания у пользователей и фоновых задач, блокировки или какое-то необычное поведение системы, получение информации о причинах возникновения проблем и их оперативное устранение и т.д. В качестве источников информации использую консоль кластеров 1С, технологический журнал 1С, журналы регистрации базы 1С. Для автоматизации части операций мониторинга и анализа создал инструмент на основе 1С.

9000 руб.

28.08.2019    31226    14    21    

66

LogiCH - хранение и анализ журнала регистрации в сверхбыстрой СУБД ClickHouse

Журнал регистрации Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Конфигурация LogiCH эффективно решает проблему хранения и анализа записей журналов регистрации. Разработка использует столбцовую СУБД ClickHouse, одну из самых быстрых Big Data OLAP СУБД. Любой анализ журнала можно выполнить в одном отчете, в котором доступны все возможности СКД с учетом ограничений RLS. Количество подключаемых баз не ограничено и не влияет на скорость построения анализа.

5000 руб.

28.11.2018    19665    13    6    

37

Регламентное сокращение журнала регистрации

Инструменты администратора БД Журнал регистрации Платформа 1С v8.3 1С:Управление торговлей 11 Абонемент ($m)

Внешняя обработка для регламентного сокращения журнала регистрации для конфигураций на базе БСП и платформы 8.3.20+

1 стартмани

29.12.2023    1423    16    dima_gsv    1    

12

Магия преобразований: ЖР, ТЖ, RAS/RAC, логи - универсальное решение Vector

Мониторинг Журнал регистрации Технологический журнал Абонемент ($m)

Как легко и быстро с помощью специализированных решений собирать, парсить и передавать логи и метрики.

1 стартмани

13.11.2023    3226    4    AlexSTAL    0    

43

Мониторинг состояния с отправкой в telegram

Журнал регистрации Инструменты администратора БД Мониторинг Мессенджеры и боты Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х Абонемент ($m)

Внешняя обработка для БСП-конфигураций с простым программным интерфейсом. Предназначена для мониторинга состояния системы. Базово реализована отправка ошибок из журнала регистрации, но можно легко добавить мониторинг других журналов, каких-либо действий пользователей, состояния системы (например закрытие месяца).

3 стартмани

26.09.2023    1864    11    doom2good    10    

13
Оставьте свое сообщение