Печать журнала регистрации по объекту

Администрирование - Журнал регистрации

Стандартный журнал регистрации работает не очень быстро и не очень удобно.

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

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

Стандартный журнал регистрации работает не очень быстро и не очень удобно, особенно при его большом объеме.

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

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

Изменения:


01.03.2010
- при отсутствии у пользователя административных прав - не ассоциируем пользователя из журнала регистрации с пользователем базы данных (вызовет ошибку), а выводим представление пользователя, сохраненное в базе данных.

 

09.03.2010

- не работали отборы по периоду, исправлено

Скачать файлы

Наименование Файл Версия Размер
Печать журнала регистрации по объекту.epf
.epf 13,95Kb
19.02.13
515
.epf 13,95Kb 515 Скачать

См. также

Комментарии
1. Alex_Japanese_Student2 (Sergey_Mishkin) 01.12.09 10:13 Сейчас в теме
2. Антон Богданов (Marks007) 01.12.09 10:27 Сейчас в теме
Потестировал. Особого прироста ни в скорости ни в удобстве не заметил
3. Bizon2005 (8c1.ru) 01.12.09 10:39 Сейчас в теме
Как минимум не нужно лезть в дополнительное меню, ждать, пока перечитывается объекты при переходе на закладку "данные", не нужно выбирать тип объекта и искать нужные документ (когда подключена как печатная форма объекта).

По скорости:
на моей базе, журнал регистрации за два месяца (за два месяца размер журнала около 200мб):
стандартно - 55 секунд
через обработку - 26 секунд

так что я с вами не соглашусь.
4. Эстер Коган (e.kogan) 1825 01.12.09 17:10 Сейчас в теме
1. Оформите как внешнюю печатную форму. Даты начала и окончания берите (если указаны) из дополнительных параметров.
2. Постарайтесь вывести пользователя изменения как пользователя из справочника (стыковка элементарна).
3. Выведите журнал в таблицу значений на форму и предоставьте пользователю хотя бы построитель отчёта для дальнейшего вывода (по группам и т.д.).
5. Anton Fomin (tonic-spb) 02.12.09 10:24 Сейчас в теме
у меня почему то Бухгалтерии 8.1 вообще ничего не выдает :(
6. Bizon2005 (8c1.ru) 02.12.09 11:53 Сейчас в теме
В конфигурации должен быть включен журнал регистрации.
7. Евгений Анчутин (eXs) 57 02.12.09 17:30 Сейчас в теме
В УТ ничего не выдает. А автор похоже так переживает за свой глючный гениальный код, что закрыл его паролем. Браво!
8. Bizon2005 (8c1.ru) 02.12.09 17:35 Сейчас в теме
В конфигурации должен быть включен журнал регистрации.
9. Евгений Анчутин (eXs) 57 02.12.09 17:37 Сейчас в теме
ничего не выдает при интерактивном использовании
10. Bizon2005 (8c1.ru) 02.12.09 18:01 Сейчас в теме
какой объект, есть ли записи в журнале регистрации при отборе в нем по этому объекту?
11. aaa xxx (kvckp) 14.12.09 13:31 Сейчас в теме
Задумка хорошая, но, как уже писали, при интерактивном использовании не работает, а в режиме печатной формы, видимо, из-за того, что отбор дат не установлен, работает очень долго. Хотел подправить, но код закрыт.
12. Bizon2005 (8c1.ru) 14.12.09 14:35 Сейчас в теме
(11) Может журнал регистрации большой, тогда анализ будет долго идти.
Почему интерактивно не работает? Что пишет?
13. Вьюн (VUN) 38 07.03.10 01:51 Сейчас в теме
При интерактивном использовании не работает период. Если указываю документ от 01.03.2010, а период - январь 2010 г., то все равно выводится информация по этому документу, хотя документа в январе не было.
14. Bizon2005 (8c1.ru) 09.03.10 14:55 Сейчас в теме
(13) да, была ошибка - исправил. Спасибо.
15. aaa aaa (a_a) 25.01.12 14:02 Сейчас в теме
Простая и нужная вещица в работе любого сисадмина и 1с-программиста. Обязательно иметь в наборе служебных обработок.
16. Наталья Натальева (Natalito) 23.10.14 13:00 Сейчас в теме
Скачала. Хотела подглядеть реализацию, а модуль закрыт для чтения. Требует пароль! Замечательно! На кой мне она вообще тогда нужна, если я не могу посмотреть код, за который заплатила! Только зря $m потратила!
17. 1c8@8c1.ru (8c1.ru) 151 23.10.14 18:31 Сейчас в теме
(16) Natalito, не знаю кому вы заплатили, обработка выложена бесплатно.
18. Денис (amyd) 82 01.04.15 09:21 Сейчас в теме
а зачем пароль то на модуль ставить? с такими заявками раздавать нужно бесплатно.
19. Денис (amyd) 82 01.04.15 10:24 Сейчас в теме
в общем за то что вы выставили обработку с закрытым модулем и еще просите за нее деньги за скачку, я выкладываю сюда текст модуля вашей обработки как он есть. (обойти пароль не большая проблема)
Перем СоответствиеСобытий;





Функция Печать() Экспорт
	ТабДокумент = Новый ТабличныйДокумент;
	ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЖурналИзменений";

	ТаблицаДляПечати = ПолучитьТаблицуИзменений();

	Если ТаблицаДляПечати.Количество() = 0 Тогда
		Возврат ТабДокумент;
	КонецЕсли;

	Макет = ПолучитьМакет("Макет");

	ОбластьЗаголовок = Макет.ПолучитьОбласть("Шапка");
	ОбластьЗаголовок.Параметры.СсылкаНаОбъект = СсылкаНаОбъект;

	ТабДокумент.Вывести(ОбластьЗаголовок);

	ОбластьСтроки = Макет.ПолучитьОбласть("Строка");

	Для каждого СтрокаТаблицы Из ТаблицаДляПечати Цикл

		ОбластьСтроки.Параметры.Дата = СтрокаТаблицы.ДатаСобытия;
		ОбластьСтроки.Параметры.Событие = СтрокаТаблицы.Событие;
		ОбластьСтроки.Параметры.Пользователь = СтрокаТаблицы.Пользователь;

		ТабДокумент.Вывести(ОбластьСтроки);

	КонецЦикла;

	Возврат ТабДокумент;

КонецФункции


Функция ПолучитьТаблицуИзменений()
	ТаблицаИзменений = Новый ТаблицаЗначений;
	ТаблицаИзменений.Колонки.Добавить("ДатаСобытия");
	ТаблицаИзменений.Колонки.Добавить("Событие");
	ТаблицаИзменений.Колонки.Добавить("Пользователь");

	Если Не ЗначениеЗаполнено(СсылкаНаОбъект) Тогда
		Возврат ТаблицаИзменений;
	КонецЕсли;



	ВременныйФайл = ПолучитьИмяВременногоФайла("elf");

	СтруктураОтбора = Новый Структура;
	Если ЗначениеЗаполнено(ДатаНачала) Тогда
		СтруктураОтбора.Вставить("ДатаНачала", ДатаНачала);
	КонецЕсли;

	Если ЗначениеЗаполнено(ДатаОкончания) Тогда
		СтруктураОтбора.Вставить("ДатаОкончания", ДатаОкончания);
	КонецЕсли;

	СтруктураОтбора.Вставить("Данные", СсылкаНаОбъект);

	Состояние("Получение данных журнала регистрации");
	ВыгрузитьЖурналРегистрации(ВременныйФайл, СтруктураОтбора, "Дата, Пользователь, ИмяПользователя,  Событие");

	Состояние("Анализ данных журнала регистрации");

	ПараметрыЧтенияXML = Новый ПараметрыЧтенияXML(Неопределено, Неопределено, Неопределено, Неопределено, Истина, Истина, Истина, Истина, Истина);

	ЧтениеXML = Новый ЧтениеXML;
	ЧтениеXML.ОткрытьФайл(ВременныйФайл, ПараметрыЧтенияXML);
	ЧтениеXML.Прочитать();
	Если ЧтениеXML.Имя = "v8e:EventLog" Тогда
		Пока ЧтениеXML.Прочитать() Цикл
			Если ЧтениеXML.Имя = "v8e:Event" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда

				ДатаСобытия = ПреобразоватьДату(ПрочитатьЗначениеТега(ЧтениеXML, "v8e:Date"));
				Событие = ПреобразоватьСобытие(ПрочитатьЗначениеТега(ЧтениеXML, "v8e:EventName"));
				ПользовательGUID = ПрочитатьЗначениеТега(ЧтениеXML, "v8e:UserID");
				ИмяПользователя = ПрочитатьЗначениеТега(ЧтениеXML, "v8e:UserName");

				Если ЗначениеЗаполнено(Событие) Тогда

					СтрокаТаблицы = ТаблицаИзменений.Добавить();
					СтрокаТаблицы.ДатаСобытия = ДатаСобытия;

					Если ПравоДоступа("Администрирование", Метаданные) Тогда
						ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Новый УникальныйИдентификатор(ПользовательGUID));
						Если ПользовательИБ <> Неопределено Тогда
							СтрокаТаблицы.Пользователь = ПользовательИБ;
						Иначе
							СтрокаТаблицы.Пользователь = ИмяПользователя + " <Удален>";
						КонецЕсли;
					Иначе
						СтрокаТаблицы.Пользователь = ИмяПользователя;
					КонецЕсли;
					СтрокаТаблицы.Событие = Событие;

				КонецЕсли;

			КонецЕсли;
		КонецЦикла;
	КонецЕсли;

	ЧтениеXML.Закрыть();
	УдалитьФайлы(ВременныйФайл);

	Возврат ТаблицаИзменений;

КонецФункции


Функция ПреобразоватьДату(ДатаXML)
	Дата1С = Дата('00010101000000');

	Если ДатаXML <> "" Тогда
		ТекстДаты = СтрЗаменить(ДатаXML, "-", "");
		ТекстДаты = СтрЗаменить(ТекстДаты, ":", "");
		ТекстДаты = СтрЗаменить(ТекстДаты, "T", "");
		Дата1С = Дата(ТекстДаты);
	КонецЕсли;

	Возврат Дата1С;

КонецФункции

Функция ПрочитатьЗначениеТега(ЧтениеXML, Имя)
	Результат = Неопределено;
	ЧтениеXML.Прочитать();

	Если ЧтениеXML.Имя = Имя И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
		ЧтениеXML.Прочитать();
		Результат = ЧтениеXML.Значение;
	КонецЕсли;
	ЧтениеXML.Прочитать();

	Возврат Результат;
КонецФункции


Функция ПреобразоватьСобытие(КлючЗначения)
	Возврат СоответствиеСобытий.Получить(КлючЗначения);

КонецФункции

СоответствиеСобытий = Новый Соответствие;
СоответствиеСобытий.Вставить("_$Session$_.Start", "Сеанс. Начало");
СоответствиеСобытий.Вставить("_$Session$_.Finish", "Сеанс. Завершение");
СоответствиеСобытий.Вставить("_$InfoBase$_.ConfigUpdate", "Информационная база. Изменение конфигурации");
СоответствиеСобытий.Вставить("_$InfoBase$_.DBConfigUpdate", "Информационная база. Изменение конфигурации базы данных");
СоответствиеСобытий.Вставить("_$InfoBase$_.EventLogSettingsUpdate", "Информационная база. Изменение параметров журнала регистрации");
СоответствиеСобытий.Вставить("_$InfoBase$_.InfoBaseAdmParamsUpdate", "Информационная база. Изменение параметров информационной базы");
СоответствиеСобытий.Вставить("_$InfoBase$_.MasterNodeUpdate", "Информационная база. Изменение главного узла");
СоответствиеСобытий.Вставить("_$InfoBase$_.RegionalSettingsUpdate", "Информационная база. Изменение региональных установок");
СоответствиеСобытий.Вставить("_$InfoBase$_.TARInfo", "Тестирование и исправление. Сообщение");
СоответствиеСобытий.Вставить("_$InfoBase$_.TARMess", "Тестирование и исправление. Предупреждение");
СоответствиеСобытий.Вставить("_$InfoBase$_.TARImportant", "Тестирование и исправление. Ошибка");
СоответствиеСобытий.Вставить("_$Data$_.New", "Данные. Добавление");
СоответствиеСобытий.Вставить("_$Data$_.Update", "Данные. Изменение");
СоответствиеСобытий.Вставить("_$Data$_.Delete", "Данные. Удаление");
СоответствиеСобытий.Вставить("_$Data$_.TotalsPeriodUpdate", "Данные. Изменение периода рассчитанных итогов");
СоответствиеСобытий.Вставить("_$Data$_.Post", "Данные. Проведение");
СоответствиеСобытий.Вставить("_$Data$_.Unpost", "Данные. Отмена проведения");
СоответствиеСобытий.Вставить("_$User$_.New", "Пользователи. Добавление");
СоответствиеСобытий.Вставить("_$User$_.Update", "Пользователи. Изменение");
СоответствиеСобытий.Вставить("_$User$_.Delete", "Пользователи. Удаление");
СоответствиеСобытий.Вставить("_$Job$_.Start", "Фоновое задание. Запуск");
СоответствиеСобытий.Вставить("_$Job$_.Succeed", "Фоновое задание. Успешное завершение");
СоответствиеСобытий.Вставить("_$Job$_.Fail", "Фоновое задание. Ошибка выполнения");
СоответствиеСобытий.Вставить("_$Job$_.Cancel", "Фоновое задание. Отмена");
СоответствиеСобытий.Вставить("_$PerformError$_", "Ошибка выполнения");
СоответствиеСобытий.Вставить("_$Transaction$_.Begin", "Транзакция. Начало");
СоответствиеСобытий.Вставить("_$Transaction$_.Commit", "Транзакция. Фиксация");
СоответствиеСобытий.Вставить("_$Transaction$_.Rollback", "Транзакция. Отмена.");





...Показать Скрыть
Оставьте свое сообщение