Имя: Пароль:
1C
 
Кто запускал обработку?
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) Не знаю как в семерке... В восьмерке делается справочник, например, в который ты же добавляешь доступные обработки. Которые, в свою очередь, запускаются программно пользователями и здесь же лог какой-нибудь прописывается... Типа как БП сделано...