gifts2017

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

Опубликовал 1c8@8c1.ru (8c1.ru) в раздел Администрирование - Журнал регистрации

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

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

Может вызываться как интерактивно, так и в виде дополнительной печатной формы любого объекта из типовых конфигураций 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) 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) 02.12.09 17:30
В УТ ничего не выдает. А автор похоже так переживает за свой глючный гениальный код, что закрыл его паролем. Браво!
8. Bizon2005 (8c1.ru) 02.12.09 17:35
В конфигурации должен быть включен журнал регистрации.
9. Евгений Анчутин (eXs) 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) 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) 23.10.14 18:31
(16) Natalito, не знаю кому вы заплатили, обработка выложена бесплатно.
18. Денис (amyd) 01.04.15 09:21
а зачем пароль то на модуль ставить? с такими заявками раздавать нужно бесплатно.
19. Денис (amyd) 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", "Транзакция. Отмена.");





...Показать Скрыть
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа