|   |   | 
| 
 | Ожидание с периодической проверкой наличия файла на диске | ☑ | ||
|---|---|---|---|---|
| 0
    
        padaril 03.07.13✎ 14:08 | 
        С формы отправляется на сервер запрос файла с данными, сервер в виде ответа отправляет на диск файл csv. Вопрос как сделать отслеживание появления этого файла? Наименование и путь к файлу известны.
  Может сделать что-то вроде: цикл Пока, внутри через попытку пробовать прочитать файл, если файл прочтен - выходить из цикла, если ошбка - обработать и продолжать цикл. Но полагаю, это сильно загрузит систему. Еще думал через ПодключитьОбработчикОжидания, но тоже не фонтан решение | |||
| 1
    
        Maxus43 03.07.13✎ 14:09 | 
        регл задание, обработчик ожидания. выбирай     | |||
| 2
    
        padaril 03.07.13✎ 14:13 | 
        регламентка не подходит, ибо процедура происходит в процессе создания дока (запрос стороннего сервера на предоставление дисконта)     | |||
| 3
    
        Лефмихалыч 03.07.13✎ 14:15 | 
        (0),(2) хрень какая-то. Ты что-то делаешь не так.     | |||
| 4
    
        stix2010 03.07.13✎ 14:15 | 
        (0) в других средах таймеры всех устраивают, а тебя нет     | |||
| 5
    
        padaril 03.07.13✎ 14:16 | 
        (3) есть другое видение?     | |||
| 6
    
        Maxus43 03.07.13✎ 14:27 | 
        (5) чем обработчик ожидания не устраивает?     | |||
| 7
    
        padaril 03.07.13✎ 14:36 | 
        спасиб, запилил. Если кому интересно:
  &НаКлиенте Процедура Получить(Команда) ПодключитьОбработчикОжидания("ПолучитьСервер", 1); КонецПроцедуры &НаКлиенте Процедура ПолучитьСервер() Сообщить("куку"); ИмяФайла = "in.csv"; ПутьКФайлу = "C:\Users\Alex\Desktop\vedroid\" + ИмяФайла; ТекстДок = Новый ТекстовыйДокумент; Попытка ТекстДок.Прочитать(ПутьКФайлу, "windows-1251"); Исключение Возврат; КонецПопытки; // тут обрабатывается файл ОтключитьОбработчикОжидания("ПолучитьСервер"); КонецПроцедуры | |||
| 8
    
        Maxus43 03.07.13✎ 14:39 | 
        раз в секунду частовато долбить то имхо, ну сам смотри     | |||
| 9
    
        hhhh 03.07.13✎ 14:39 | 
        надо в типовых посмотреть. Там есть фишка "Выполнять обмен при появлении файла"     | |||
| 10
    
        Поросенок Петр 03.07.13✎ 14:43 | 
        Мало курили. Надо было данные читать непосредственно с с диска физически.     | |||
| 11
    
        Поросенок Петр 03.07.13✎ 14:46 | 
        "С формы отправляется на сервер запрос файла с данными, сервер в виде ответа отправляет на диск файл csv."
  А двоичные данные он не может на клиент прислать? | |||
| 12
    
        Smallrat 03.07.13✎ 14:56 | 
        (7) что за попытка исключение ?
  Файл = Новый Файл(имяфайлcsv); Если Файл.Существует() Тогда ТекстДок = Новый ТекстовыйДокумент; ну и там всякие обработки добавить на случай если файл остался от предыдущей сессии | |||
| 13
    
        Jump 03.07.13✎ 14:57 | 
        Делать ожидание файла, в модуле документа, ИМХО очень неразумное решение.
  Проблема со связью и будет у тебя док бесконечно ждать погоды. А если и делать то банально по кнопке - кнопка послать запрос, и кнопка проверить наличие ответа. | |||
| 14
    
        Smallrat 03.07.13✎ 14:58 | 
        (13) да кстати - перед записью сделать ожидание ответа, если ответ не пришел то и не начинать проведени. а как пришел так и проводить.     | |||
| 15
    
        padaril 03.07.13✎ 15:54 | 
        у клиента свое ИМХО :)
  необходимо МИНИМУМ вмешательства в систему. Он видит все решение как внешняя обработка. | |||
| 16
    
        savaB 03.07.13✎ 16:08 | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |