|
Теперь - обработка для чтения лога. В форму вставлен реквизит типа «текст», содержащий вызов функции «ОбрДвижения()». К кнопке «Начать просмотр» привязана процедура «Выполнить()». Форма представлена ниже:
Модуль формы:
Перем СпрЛог; Перем СпрИстория; Перем СпрЗапись; Перем Строчка1, Строчка2; Процедура ДвижениеПоИстории() Запись.УдалитьСтроки(); СпрЗапись.ИспользоватьВладельца(История.Тек); Если СпрЗапись.ВыбратьЭлементы()=0 Тогда Возврат; КонецЕсли; Пока СпрЗапись.ПолучитьЭлемент()=1 Цикл Запись.НоваяСтрока(); Запись.Показатель=СпрЗапись.Показатель; Запись.Было=СпрЗапись.Было; Запись.Стало=СпрЗапись.Стало; КонецЦикла; КонецПроцедуры
Процедура ДвижениеПоДокументам() История.УдалитьСтроки(); СпрИстория.ИспользоватьВладельца(Документы.Тек); Если СпрИстория.ВыбратьЭлементы()=0 Тогда Возврат; КонецЕсли; Пока СпрИстория.ПолучитьЭлемент()=1 Цикл История.НоваяСтрока(); История.N=СпрИстория.Код; История.Дата=СпрИстория.ДатаПравки; История.Время=СпрИстория.ВремяПравки; История.Автор=СпрИстория.АвторИзменений; История.ПК=СпрИстория.ПК; История.НаборПрав=СпрИстория.Права; История.Тек=СпрИстория.ТекущийЭлемент(); КонецЦикла; Если История.КоличествоСтрок()=0 Тогда возврат; КонецЕсли; История.ПолучитьСтрокуПоНомеру(1); ДвижениеПоИстории(); КонецПроцедуры
Процедура ЗаполнитьВсе() Форма.Документы.Видимость(0); Документы.УдалитьСтроки(); СпрЛог.ВыбратьЭлементы(); Пока СпрЛог.ПолучитьЭлемент()=1 Цикл Документы.НоваяСтрока(); Документы.Документ=СпрЛог.Док; Документы.Номер=СпрЛог.НомерДок; Документы.Дата=СпрЛог.ДатаДок; Документы.Время=СпрЛог.ВремяДок; Документы.Вид=СпрЛог.ВидДок; Документы.Автор=СпрЛог.Автор; Если СпрЛог.Удален=0 Тогда Документы.Статус="Норма"; ИначеЕсли СпрЛог.Удален=1 Тогда Документы.Статус="Пометка"; ИначеЕсли СпрЛог.Удален=2 Тогда Документы.Статус="Удален"; КонецЕсли; Документы.Тек=СпрЛог.ТекущийЭлемент(); КонецЦикла; Форма.Документы.Видимость(1); Если Документы.КоличествоСтрок()=0 Тогда Возврат; КонецЕсли; Документы.ПолучитьСтрокуПоНомеру(1); ДвижениеПоДокументам(); КонецПроцедуры
Процедура ПриОткрытии() Документы.Очистить(); История.Очистить(); Запись.Очистить(); Документы.НоваяКолонка("Документ","Документ",,,,41,,); Документы.НоваяКолонка("Номер","Число",6,,,9,,); Документы.НоваяКолонка("Дата","Дата",,,,11,,); Документы.НоваяКолонка("Время",,,,,11,,); Документы.НоваяКолонка("Вид",,,,,21,,); Документы.НоваяКолонка("Автор"); Документы.НоваяКолонка("Статус",,,,,7,,); Документы.НоваяКолонка("Тек","Справочник.Лог"); Документы.ВидимостьКолонки("Тек",0,); История.НоваяКолонка("N",,,,,6,,); История.НоваяКолонка("Дата",,,,,12,,); История.НоваяКолонка("Время",,,,,8,,); История.НоваяКолонка("Автор"); История.НоваяКолонка("ПК"); История.НоваяКолонка("НаборПрав"); История.НоваяКолонка("Тек","Справочник.История"); История.ВидимостьКолонки("Тек",0,); Запись.НоваяКолонка("Показатель"); Запись.НоваяКолонка("Было"); Запись.НоваяКолонка("Стало"); СпрЛог=СоздатьОбъект("Справочник.Лог"); СпрИстория=СоздатьОбъект("Справочник.История"); СпрЗапись=СоздатьОбъект("Справочник.Запись"); КонецПроцедуры
Процедура Выполнить() ЗаполнитьВсе(); КонецПроцедуры
Функция ОбрДвижения() Если НЕ(Строчка1=Документы.ТекущаяСтрока()) Тогда ДвижениеПоДокументам(); КонецЕсли; Если НЕ(Строчка2=История.ТекущаяСтрока()) Тогда ДвижениеПоИстории(); КонецЕсли; Строчка1=Документы.ТекущаяСтрока(); Строчка2=История.ТекущаяСтрока(); Возврат ""; КонецФункции
Да, чуть не забыл - эту обработку можно загрузить в разделе "Скачать".
[1]-[ 2]-[3]
Статьи по этой теме:
Реализация системы логирования для 1С(SQL)
Программный комплекс "Логирование"
Перепечатка, воспроизведение в любой форме, распространение, в том числе в переводе, любых материалов с сайта www.softpoint.ru возможны только с письменного разрешения компании "СофтПоинт". Это правило действует для всех без исключения случаев, кроме тех, когда в материале прямо указано разрешение на копирование (основание: Закон Российской Федерации "Об авторском праве и смежных правах").
|