Теперь - обработка для чтения лога. В форму вставлен реквизит типа «текст», содержащий вызов функции «ОбрДвижения()». К кнопке «Начать просмотр» привязана процедура «Выполнить()». Форма представлена ниже:
Модуль формы:
Перем СпрЛог ; Перем СпрИстория ; Перем СпрЗапись ; Перем Строчка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 возможны только с письменного разрешения компании "СофтПоинт". Это правило действует для всех без исключения случаев, кроме тех, когда в материале прямо указано разрешение на копирование (основание: Закон Российской Федерации "Об авторском праве и смежных правах").
|