Имя: Пароль:
1C
1С v8
Отслеживание появления (или изменения) файла
, ,
0 padaril
 
28.06.13
16:48
Задача: отслеживать появление определенного файла (или любого в определенном каталоге), или же изменение существующего. Пока вижу единственный вариант ПодключитьОбработчикОжидания, но реакция нужна немедленная, а маленький интервал скажется на производительности
1 ДенисЧ
 
28.06.13
16:50
внешнюю компоненту напиши, с подпиской на каталог и генерацией внешнего события
2 shuhard
 
28.06.13
16:52
(0) 1С не система реального времени, затея обречена на провал
3 МихаилМ
 
28.06.13
16:52
в WMI можно создать ивент, который сработает
но более точно не подскажу.
все зависит от ОС хранилища файла.
4 H A D G E H O G s
 
28.06.13
16:54
Нетленка может, но для 8.2 - негарантированно.
5 padaril
 
28.06.13
16:55
(1) что-то вроде vk?
6 H A D G E H O G s
 
28.06.13
17:03
Работает под 8.2, родимая...

http://infostart.ru/public/download.php?file=51733

Объект=Новый ("Addin.FileWatch");
ФильтрСобытий=Новый Структура;
СледитьИЗаВложеннымиКаталогами=ИСТИНА;
Путь="c:\";
ФильтрСобытий.Вставить("ДобавлениеИзменениеУдалениеФайла",Истина);
Объект.НачатьНаблюдение(Путь,ФильтрСобытий,СледитьИЗаВложеннымиКаталогами);
7 ДенисЧ
 
28.06.13
17:10
(5) Да, vneshnaya komponenta
8 ДенисЧ
 
28.06.13
17:10
(6) Или так. :-)
9 ДенисЧ
 
28.06.13
17:11
(6) Новый ("Addin.FileWatch")    {(1)}: Тип не определен (Addin.FileWatch)
10 H A D G E H O G s
 
28.06.13
17:12
(9) Согласно новым исследованиям Британских ученых - вегетарианец с древнеиндийского - "херовый охотник".
11 ДенисЧ
 
28.06.13
17:14
А, понял :-)
ТАкая компонента, что я в (1) описал - уже написана. Всё уже украдено до нас (с)
12 drcrasher
 
28.06.13
17:20
(6) что-то правильное было при написании мануала к компоненте =)
13 padaril
 
28.06.13
17:29
и все же (9): Тип не определен (Addin.FileWatch)
чяднт?
14 H A D G E H O G s
 
28.06.13
17:36
(13) v8add.dll не разместил в папке bin 1С-ины и не сделал
ЗагрузитьВнешнююКомпоненту("V8ADD.dll");

Херово, когда такие вопросы возникают.
15 padaril
 
28.06.13
17:50
ЗагрузитьВнешнююКомпоненту("V8ADD.dll");
по причине:
Ошибка при загрузке внешней компоненты

Пишу все подряд, в обработке, файл V8ADD.dll закинул в bin 1с-ки

Процедура Команда1(Команда)
   ЗагрузитьВнешнююКомпоненту("V8ADD.dll");
   
   Объект = Новый ("Addin.FileWatch");
   ФильтрСобытий = Новый Структура;
   СледитьИЗаВложеннымиКаталогами = ИСТИНА;
   Путь = "c:\";
   ФильтрСобытий.Вставить("ДобавлениеИзменениеУдалениеФайла",Истина);
   Объект.НачатьНаблюдение(Путь,ФильтрСобытий,СледитьИЗаВложеннымиКаталогами);
КонецПроцедуры
16 H A D G E H O G s
 
28.06.13
17:50
ТонкийКлиент?
17 padaril
 
28.06.13
17:51
ага, 8.2
http://d.pr/i/cjAz
18 H A D G E H O G s
 
28.06.13
18:00
В модуль управляемого приложения:

Перем Объект;

Процедура ПриНачалеРаботыСистемы()
   Результат=ПодключитьВнешнююКомпоненту("V8ADD.dll","V8ADD",ТипВнешнейКомпоненты.COM);
   Объект=Новый ("Addin.V8ADD.FileWatch");
   ФильтрСобытий=Новый Структура;
   СледитьИЗаВложеннымиКаталогами=Истина;
   Путь="c:\";
   ФильтрСобытий.Вставить("ДобавлениеИзменениеУдалениеФайла",Истина);
   ФильтрСобытий.Вставить("ДобавлениеИзменениеУдалениеПапки",Истина);
   ФильтрСобытий.Вставить("ЧтениеФайла",Истина);
   ФильтрСобытий.Вставить("ЗаписьФайла",Истина);
   ФильтрСобытий.Вставить("ИзменениеАтрибутовФайла",Истина);
   ФильтрСобытий.Вставить("ИзменениеРазмераФайла",Истина);
   ФильтрСобытий.Вставить("ИзменениеПравДоступаФайла",Истина);
   ФильтрСобытий.Вставить("ИзменениеВремениСозданияФайла",Истина);
   Объект.НачатьНаблюдение(Путь,ФильтрСобытий,СледитьИЗаВложеннымиКаталогами);
КонецПроцедуры

Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
   Если Лев(Источник,9)="FILEWATCH" Тогда
       Текст=Формат(ТекущаяДата(),"ДЛФ=T")+"--->"+Событие+"--->"+Данные;
       Сообщить(Текст);
   КонецЕсли;
КонецПроцедуры

Процедура ПередЗавершениемРаботыСистемы(Отказ)
   Объект.ЗакончитьНаблюдение();
КонецПроцедуры
19 padaril
 
28.06.13
18:08
Отлично, заработало! Спасибо!
А без правок конфигурации, уместить все в обработке не удастся никак я полагаю?
20 H A D G E H O G s
 
28.06.13
18:13
(19) Пеши тоже самое в обработке, чебынет.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший