![]() |
![]() |
![]() |
|
Кто запускал обработку? | ☑ | ||
---|---|---|---|---|
0
LobS
06.12.06
✎
12:49
|
В типовой бух. в список обработки доп. возможности включена обработка которая за определенные период изменяет реквизиты документов на нужные значения указанные в диалоге обработки и их проводит. В журнале регистрации эти действия ни как не отражаются.
Вопрос: можно ли узнать кто запускал эту обработку за опред. период времени? (может быть по каким-нибудь логам?) |
|||
1
Obersturmbannfuhrer
06.12.06
✎
12:50
|
щу будут ромикса пиарить
|
|||
2
Ёпрст2
06.12.06
✎
12:53
|
(0) Просто так - нет, пропиши в обработке, чтобы хоть в ЖР писала ... хоть что-то будет ...
|
|||
3
LobS
06.12.06
✎
12:54
|
Дело в том что кто-то сильно накосячил, запустив данную обработку. Нужно узнать кто
|
|||
4
coder1c80
06.12.06
✎
12:56
|
Теперь поздно, не узнаешь, раньше надо было думать...
|
|||
5
Ёпрст2
06.12.06
✎
12:57
|
(3) Ну, накосячил то известно кто - это ты, дав возможность запускать сию обработку кому-попало ...
|
|||
6
у лю 427
06.12.06
✎
12:58
|
поздно, матушка, поздно,... - говорил дворинк Герасим монашке, застегивая штаны...
|
|||
7
GrayT
06.12.06
✎
12:59
|
(3)Поздняк метаться
|
|||
8
Лошадка в пальто
06.12.06
✎
13:01
|
для отслеживания изменений доков где-то так....
//****************************************************************************** // глРегистрацияИзменений(Конт) // Процедура глРегистрацияИзменений(Конт, Проц="") Экспорт Перем ТЗ, ТЧ, ТзПред, Предст; Попытка Конт = Конт.ТекущийДокумент(); Исключение Возврат; КонецПопытки; Если ПустоеЗначение(Конт) = 1 Тогда Возврат; КонецЕсли; ВидДок = Конт.Вид(); ИдДок = ЗначениеВСтрокуВнутр(Конт); ИдДок = Число(Сред(ИдДок, Найти(ИдДок, " "))); // Организация ФС ИмяКаталога1 = Шаблон("[КаталогИБ()]Log\"); ИмяКаталога2 = Шаблон("[КаталогИБ()]Log\[ВидДок]\"); ИмяКаталога3 = Шаблон("[КаталогИБ()]Log\[ВидДок]\[ИдДок]\"); Если ФС.СуществуетФайл(ИмяКаталога1) = 0 Тогда ФС.СоздатьКаталог(ИмяКаталога1); КонецЕсли; Если ФС.СуществуетФайл(ИмяКаталога2) = 0 Тогда ФС.СоздатьКаталог(ИмяКаталога2); КонецЕсли; Если ФС.СуществуетФайл(ИмяКаталога3) = 0 Тогда ФС.СоздатьКаталог(ИмяКаталога3); КонецЕсли; Т = СоздатьОбъект("Текст"); ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.Выгрузить(ТзПред); ТЗ.НоваяКолонка("Автор"); ТЗ.НоваяКолонка("Дата"); ТЗ.НоваяКолонка("Время"); ТЗ.НоваяКолонка("Шапка"); ТЗ.НоваяКолонка("ТЧ"); СзШ = СоздатьОбъект("СписокЗначений"); Нули = "00000"; ИмяФайла = ФС.НайтиПервыйФайл(ИмяКаталога3+"*.txt"); ПослФайл = ИмяФайла; Пока ИмяФайла <> "" Цикл ПослФайл = ИмяФайла; ИмяФайла = ФС.НайтиСледующийФайл(); КонецЦикла; Если (ПустоеЗначение(ПослФайл) = 0) и (Проц = "ПриОткрытии") Тогда Возврат; КонецЕсли; Если ПослФайл = "" Тогда ИмяФайла = Нули; Иначе ИмяФайла = Прав(Нули + (Число(ПослФайл)+1), 5); КонецЕсли; СзШ.Установить("ДатаДок", Конт.ДатаДок); СзШ.Установить("НомерДок", Конт.НомерДок); Мтд = Метаданные.Документ(ВидДок); Для Ном = 1 По Метаданные.ОбщийРеквизитДокумента() Цикл ИдРек = Метаданные.ОбщийРеквизитДокумента(Ном).Идентификатор; Если ИдРек = "Изменил" Тогда Продолжить; КонецЕсли; Если ИдРек = "НомерДляОтбора" Тогда Продолжить; КонецЕсли; ЗнРек = Конт.ПолучитьАтрибут(ИдРек); СзШ.Установить(ИдРек, ЗнРек); КонецЦикла; Для Ном = 1 По Мтд.РеквизитШапки() Цикл ИдРек = Мтд.РеквизитШапки(Ном).Идентификатор; ЗнРек = Конт.ПолучитьАтрибут(ИдРек); СзШ.Установить(ИдРек, ЗнРек); КонецЦикла; СтрокаТЧ = ""; Для Ном = 1 По Мтд.РеквизитТабличнойЧасти() Цикл ИдРек = Мтд.РеквизитТабличнойЧасти(Ном).Идентификатор; Если СтрокаТЧ = "" Тогда СтрокаТЧ = ИдРек; Иначе СтрокаТЧ = СтрокаТЧ + ","+ИдРек; КонецЕсли; КонецЦикла; Конт.ВыгрузитьТабличнуюЧасть(ТЧ); ЕстьИзменения = 0; Если ПустоеЗначение(ПослФайл) = 0 Тогда ЗначениеИзФайла(ИмяКаталога3+ПослФайл, ТзПред); ПредСзШ = ТзПред.ПолучитьЗначение(1, "Шапка"); ПредТЧ = ТзПред.ПолучитьЗначение(1, "ТЧ"); Если ТипЗначенияСтр(ПредТЧ) <> "ТаблицаЗначений" Тогда ТЧ.Выгрузить(ПредТЧ); ПредТЧ.УдалитьСтроки(); КонецЕсли; Если ПредСзШ.Получить("ДатаДок") <> СзШ.Получить("ДатаДок") Тогда ЕстьИзменения = 1; КонецЕсли; Если ПредСзШ.Получить("НомерДок") <> СзШ.Получить("НомерДок") Тогда ЕстьИзменения = 1; КонецЕсли; Если ЕстьИзменения = 0 Тогда Для Ном = 1 По СзШ.РазмерСписка() Цикл ТекЗн = СзШ.ПолучитьЗначение(Ном, Предст); Если ПредСзШ.Получить(Предст) <> ТекЗн Тогда ЕстьИзменения = 1; Прервать; КонецЕсли; КонецЦикла; КонецЕсли; Если (ТЧ.КоличествоСтрок() <= 1000) и (ПредТЧ.КоличествоСтрок() <= 1000) Тогда ПредТЧ.НоваяКолонка("_СравнениеТЗ"); ПредТЧ.ВыбратьСтроки(); Пока ПредТЧ.ПолучитьСтроку() = 1 Цикл Состояние(ПредТЧ.НомерСтроки); ПредТЧ._СравнениеТЗ = -1; КонецЦикла; ТЧ.НоваяКолонка("_СравнениеТЗ"); ТЧ.ВыбратьСтроки(); Пока ТЧ.ПолучитьСтроку() = 1 Цикл Состояние(ТЧ.НомерСтроки); ТЧ._СравнениеТЗ = 1; КонецЦикла; КолСтр1 = ПредТЧ.КоличествоСтрок(); КолСтр2 = ТЧ.КоличествоСтрок(); Если КолСтр2 <> 0 Тогда ПредТЧ.КоличествоСтрок(КолСтр1+КолСтр2); КонецЕсли; Если КолСтр2 <> 0 Тогда Если КолСтр1 = 0 Тогда ТЧ.Выгрузить(ПредТЧ); Иначе ПредТЧ.Заполнить(ТЧ, КолСтр1+1); КонецЕсли; КонецЕсли; ПредТЧ.Свернуть(СтрокаТЧ, "_СравнениеТЗ"); ПредТЧ.Сортировать("_СравнениеТЗ"); Если ПредТЧ.КоличествоСтрок() > 0 Тогда Если (ПредТЧ.ПолучитьЗначение(1,"_СравнениеТЗ") <> 0) или (ПредТЧ.ПолучитьЗначение(ПредТЧ.КоличествоСтрок(),"_СравнениеТЗ") <> 0) Тогда ЕстьИзменения = 1; КонецЕсли; КонецЕсли; КонецЕсли; Иначе ЕстьИзменения = 1; КонецЕсли; Если ЕстьИзменения = 1 Тогда ТЗ.НоваяСтрока(); Если ПустоеЗначение(ПослФайл) = 1 Тогда //ТЗ.Автор = ""; Иначе ТЗ.Автор = ?(ПустоеЗначение(ПолноеИмяПользователя())=0,ПолноеИмяПользователя(),ИмяПользователя()); КонецЕсли; ТЗ.Дата = ТекущаяДата(); ТЗ.Время = ТекущееВремя(); ТЗ.Шапка = СзШ; Если ТЧ.КоличествоСтрок() <= 1000 Тогда Попытка ТЧ.УдалитьКолонку("_СравнениеТЗ"); Исключение КонецПопытки; ТЗ.ТЧ = ТЧ; КонецЕсли; ЗначениеВФайл(ИмяКаталога3+ИмяФайла+".TXT", ТЗ); КонецЕсли; ТЗ = 0; ФС.НайтиПервыйФайл(КаталогИБ()); КонецПроцедуры // глРегистрацияИзменений() П.С. код не наш. мы просто разместили объяву... |
|||
9
у лю 427
06.12.06
✎
13:03
|
(8) Два мопЭда...
|
|||
10
Лошадка в пальто
06.12.06
✎
13:03
|
+8 и вот еще для вывода результатов:
Перем ТЗ, ВремТЗ, ВидДок, ИдДок, ИмяКаталога, ИдРек, Конт, Закрывать, СтрокаТЧ, ТекТЗ; //****************************************************************************** // ВывестиРеквизит() // Процедура ВывестиРеквизит(ИдРек) Если ТолькоИзмененные = 1 Тогда Изм = 0; ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку() = 1 Цикл Если ТЗ.НомерСтроки = 1 Тогда ЗнРек = ТЗ.ПолучитьЗначение(ТЗ.НомерСтроки, "Шапка").Получить(ИдРек); Иначе Если ЗнРек <> ТЗ.ПолучитьЗначение(ТЗ.НомерСтроки, "Шапка").Получить(ИдРек) Тогда Изм = 1; Прервать; КонецЕсли; КонецЕсли; КонецЦикла; Иначе Изм = 1; КонецЕсли; НомСтолбца = 2; Если Изм = 1 Тогда Синоним = ИдРек; Таблица.ВывестиСекцию("Строка|Реквизит"); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку() = 1 Цикл ЗнРек = ТЗ.ПолучитьЗначение(ТЗ.НомерСтроки, "Шапка").Получить(ИдРек); Таблица.ПрисоединитьСекцию("Строка|Значение"); Если НомСтолбца = 2 Тогда ПредЗначение = ЗнРек; Иначе Если ПредЗначение <> ЗнРек Тогда Таблица.Область(Таблица.ВысотаТаблицы(), НомСтолбца).ЦветФона(231,255,231); ПредЗначение = ЗнРек; КонецЕсли; КонецЕсли; НомСтолбца = НомСтолбца + 1; КонецЦикла; КонецЕсли; КонецПроцедуры // ВывестиРеквизит() //****************************************************************************** // Сформировать() // Процедура Сформировать() Закрывать = 0; Форма.Закрыть(); КонецПроцедуры // Сформировать() //****************************************************************************** // ВводНового() // Процедура ВводНового() Конт = Форма.Параметр; ВидДок = Конт.Вид(); СтрокаТЧ = ""; Мтд = Метаданные.Документ(ВидДок); Для Ном = 1 По Мтд.РеквизитТабличнойЧасти() Цикл ИдРек = Мтд.РеквизитТабличнойЧасти(Ном).Идентификатор; Если СтрокаТЧ = "" Тогда СтрокаТЧ = ИдРек; Иначе СтрокаТЧ = СтрокаТЧ + ","+ИдРек; КонецЕсли; КонецЦикла; ТЗ = СоздатьОбъект("ТаблицаЗначений"); //ВремТЗ = СоздатьОбъект("ТаблицаЗначений"); ИдДок = ЗначениеВСтрокуВнутр(Конт.ТекущийДокумент()); ИдДок = Число(Сред(ИдДок, Найти(ИдДок, " "))); ИмяКаталога = Шаблон("[КаталогИБ()]Log\[ВидДок]\[ИдДок]\"); Если ПустоеЗначение(НачДата) = 1 Тогда НачДата = НачГода(ТекущаяДата()); КонДата = ТекущаяДата(); КонецЕсли; ТолькоИзмененные = 1; КонецПроцедуры // ВводНового() //****************************************************************************** // ИзмТЧ(ТЗ, Ном) // Функция ИзмТЧ(ТабЗн, Ном) Перем ТЧ, СтарТЧ; Если Ном = 1 Тогда Возврат ""; КонецЕсли; ТЧ = ТЗ.ПолучитьЗначение(Ном, "ТЧ"); ПредТЧ = ТЗ.ПолучитьЗначение(Ном-1, "ТЧ"); ПредТЧ.НоваяКолонка("_СравнениеТЗ"); ПредТЧ.ВыбратьСтроки(); Пока ПредТЧ.ПолучитьСтроку() = 1 Цикл Состояние(ПредТЧ.НомерСтроки); ПредТЧ._СравнениеТЗ = -1; КонецЦикла; ТЧ.НоваяКолонка("_СравнениеТЗ"); ТЧ.ВыбратьСтроки(); Пока ТЧ.ПолучитьСтроку() = 1 Цикл Состояние(ТЧ.НомерСтроки); ТЧ._СравнениеТЗ = 1; КонецЦикла; КолСтр1 = ПредТЧ.КоличествоСтрок(); КолСтр2 = ТЧ.КоличествоСтрок(); Если КолСтр2 <> 0 Тогда ПредТЧ.КоличествоСтрок(КолСтр1+КолСтр2); КонецЕсли; Если КолСтр2 <> 0 Тогда Если КолСтр1 = 0 Тогда ТЧ.Выгрузить(ПредТЧ); Иначе ПредТЧ.Заполнить(ТЧ, КолСтр1+1); КонецЕсли; КонецЕсли; Если ТолькоИзмененные = 1 Тогда ПредТЧ.Свернуть(СтрокаТЧ, "_СравнениеТЗ"); ПредТЧ.Сортировать("_СравнениеТЗ"); ПредТЧ.ВыбратьСтроки(); Пока ПредТЧ.ПолучитьСтроку() = 1 Цикл Попытка Пока ПредТЧ._СравнениеТЗ = 0 Цикл ПредТЧ.УдалитьСтроку(ПредТЧ.НомерСтроки); КонецЦикла; Исключение КонецПопытки; КонецЦикла; КонецЕсли; Возврат ПредТЧ; КонецФункции // ИзмТЧ() //****************************************************************************** // Предопределенная процедура. // Процедура ПриОткрытии() Таблица.Очистить(); Таблица.ВывестиСекцию("Шапка|Реквизит"); Таблица.Опции(0,0,3,1); Таблица.Показать(); ИмяФайла = ФС.НайтиПервыйФайл(ИмяКаталога+"*.txt"); Если ИмяФайла <> "" Тогда ЗначениеИзФайла(ИмяКаталога+ИмяФайла, ТЗ); Иначе Возврат; КонецЕсли; Пока ИмяФайла <> "" Цикл ИмяФайла = ФС.НайтиСледующийФайл(); Если ИмяФайла <> "" Тогда ЗначениеИзФайла(ИмяКаталога+ИмяФайла, ВремТЗ); КолСтр = ТЗ.КоличествоСтрок(); ТЗ.КоличествоСтрок(ТЗ.КоличествоСтрок()+ВремТЗ.КоличествоСтрок()); ТЗ.Заполнить(ВремТЗ,КолСтр+1); КонецЕсли; КонецЦикла; Если ТЗ.КоличествоСтрок() = 1 Тогда Возврат; КонецЕсли; СЗ = ТЗ.ПолучитьЗначение(ТЗ.КоличествоСтрок(), "Шапка"); Таблица.ВывестиСекцию("Заголовок|Реквизит"); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку() = 1 Цикл АвторИзменения = ""+ТЗ.Автор+РазделительСтрок+ТЗ.Дата+" "+ТЗ.Время; Таблица.ПрисоединитьСекцию("Заголовок|Значение"); КонецЦикла; Для Ном = 1 По СЗ.РазмерСписка() Цикл СЗ.ПолучитьЗначение(Ном, ИдРек); ВывестиРеквизит(ИдРек); КонецЦикла; Таблица.ВывестиСекцию("Дырка|Реквизит"); Таблица.ВывестиСекцию("ТЧ|Реквизит"); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку() = 1 Цикл ТЧ = ТЗ.ПолучитьЗначение(ТЗ.НомерСтроки, "ТЧ"); ИзмТЧ = ИзмТЧ(ТЗ, ТЗ.НомерСтроки); Если ТипЗначенияСтр(ИзмТЧ) = "ТаблицаЗначений" Тогда Если ИзмТЧ.КоличествоСтрок() = 0 Тогда ЕстьИзмТЧ = ""; Иначе Если ТолькоИзмененные = 1 Тогда ЕстьИзмТЧ = "Посмотреть изменения"; Иначе ЕстьИзмТЧ = "Посмотреть ТЧ"; КонецЕсли; КонецЕсли; Иначе ЕстьИзмТЧ = ""; КонецЕсли; Таблица.ПрисоединитьСекцию("ТЧ|Значение"); КонецЦикла; //Таблица.Опции(0,0,3,1); Таблица.Показать(); Если ПустоеЗначение(Форма.АктивныйЭлемент()) = 1 Тогда Активизировать("кн"); КонецЕсли; КонецПроцедуры // ПриОткрытии() //****************************************************************************** // ПоказатьТЧ(ТЗ, Таб) // Процедура ПоказатьТЧ(Зн, Таб) Если Зн.КоличествоСтрок() = 0 Тогда Возврат; КонецЕсли; Таб.Очистить(); Таб.ИсходнаяТаблица("ТЧ"); Таб.ВывестиСекцию("Шапка|Картинка"); Таб.ВывестиСекцию("Заголовок|Картинка"); Мтд = Метаданные.Документ(ВидДок); Для Ном = 1 По Мтд.РеквизитТабличнойЧасти() Цикл ИдРек = Мтд.РеквизитТабличнойЧасти(Ном).Идентификатор; Таб.ПрисоединитьСекцию("Заголовок|Реквизит") КонецЦикла; Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 1); // Зн.Сортировать(СтрокаТЧ); Зн.ВыбратьСтроки(); Пока Зн.ПолучитьСтроку() = 1 Цикл Если Зн._СравнениеТЗ = -1 Тогда Таб.ВывестиСекцию("Минус|Картинка"); Иначе Таб.ВывестиСекцию("Плюс|Картинка"); КонецЕсли; Для Ном = 1 По Мтд.РеквизитТабличнойЧасти() Цикл ИдРек = Мтд.РеквизитТабличнойЧасти(Ном).Идентификатор; ЗнРек = Зн.ПолучитьЗначение(Зн.НомерСтроки, ИдРек); Таб.ПрисоединитьСекцию("Строка|Реквизит"); КонецЦикла; КонецЦикла; //Подсвечиваем ячейки, в которых есть изменения СЗ_1 = СоздатьОбъект("СписокЗначений"); СЗ_2 = СоздатьОбъект("СписокЗначений"); Для Ном1 = 1 По Мтд.РеквизитТабличнойЧасти() Цикл СЗ_1.УдалитьВсе(); СЗ_2.УдалитьВсе(); ИдРек = Мтд.РеквизитТабличнойЧасти(Ном1).Идентификатор; Для Ном2 = 1 По Зн.КоличествоСтрок() Цикл ЗнРек = Зн.ПолучитьЗначение(Ном2, ИдРек); Знак = Зн.ПолучитьЗначение(Ном2, "_СравнениеТЗ"); Если Знак = -1 Тогда СЗ_1.ДобавитьЗначение(ЗнРек); Иначе СЗ_2.ДобавитьЗначение(ЗнРек); КонецЕсли; КонецЦикла; СЗ_1.Сортировать(); СЗ_2.Сортировать(); Если ЗначениеВСтрокуВнутр(СЗ_1) <> ЗначениеВСтрокуВнутр(СЗ_2) Тогда Таб.Область(4, Ном1+1, Таб.ВысотаТаблицы(), Ном1+1).ЦветФона(231,255,231); //Таб.Область(4, Ном1+1, Таб.ВысотаТаблицы(), Ном1+1).ЦветФона(255,255,198); КонецЕсли; КонецЦикла; Таб.ТолькоПросмотр(1); Таб.Показать(); КонецПроцедуры // ПоказатьТЧ() //****************************************************************************** // ОбработкаЯчейкиТаблицы() // Процедура ОбработкаЯчейкиТаблицы(Зн, Фл, Т, А) Перем Таб; Если ТипЗначенияСтр(Зн) = "ТаблицаЗначений" Тогда Зн.Выгрузить(ТекТЗ); Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("ТЧ"); ПоказатьТЧ(ТекТЗ, Таб); ИначеЕсли Лев(Т.Область("Название").Текст, 19) = "Изменения табличной" Тогда Если Лев(А, 3) = "R4C" Тогда ТекТЗ.Сортировать(Зн+",_СравнениеТЗ"); ПоказатьТЧ(ТекТЗ, Т); КонецЕсли; Иначе Фл = 1; КонецЕсли; КонецПроцедуры // ОбработкаЯчейкиТаблицы() //****************************************************************************** // ПриЗакрытии() // Процедура ПриЗакрытии() Если Закрывать = 0 Тогда СтатусВозврата(0); Закрывать = 1; ПриОткрытии(); КонецЕсли; КонецПроцедуры // ПриЗакрытии() все спихварено с инфостарта... |
|||
11
LobS
06.12.06
✎
13:04
|
(5) С хрена ли я накосячил? Доступ на использование общих внешних отчетов дана тому кому нужна. Данный список пользователей довольно широк. Бух ответственный за работу с данными доками ищет виновного, но соответственно ни кто не признается.
Мож как средствами Винды (2000 server) |
|||
12
coder1c80
06.12.06
✎
13:08
|
Накосячил, накосячил... Не кому нельзя давать таких прав кроме себя...
|
|||
13
LobS
06.12.06
✎
13:11
|
(12) Хочешь сказать запрещать всем работать с отчетами лежащих в ExtForms?
Шо за бред? |
|||
14
coder1c80
06.12.06
✎
13:18
|
(13) Не знаю как в семерке... В восьмерке делается справочник, например, в который ты же добавляешь доступные обработки. Которые, в свою очередь, запускаются программно пользователями и здесь же лог какой-нибудь прописывается... Типа как БП сделано...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |