[РЕШЕНО] Проверка файла XML

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем nbIpKuH_BaH9I, 6 окт 2014.

  1. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Ребят, привет. Есть у меня удаленные точки. С этих удаленных точек в xml-файл выгружаются данные. Но. Есть один косяк. Иногда возникает проблема с инетом на одной из точки, и, файл создается, но заполняется не полностью. Видимо, обрыв происходит в момент копирования этого файла на FTP. И в итоге этот файл просто оборванный. Когда происходит загрузка, то естественно происходит ошибка при чтении файла и регл. задание отваливается. Вопрос: может у кого есть пример, как проверить структуру файла XML? Правильная она или есть не закрытые теги и т.д.?
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    а не проще проверять файл на обеих сторонах по времени создания и размеру?
    при необходимости файл пересылается заново.
  3. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Нет.
  4. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    файлик чем создается? если есть схема - можно проверить по ней. в крайнем случае - загрузка в транзакции.
  5. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Файл создается просто кодом. ЗаписьXML и т.д. Загрузка происходит в транзакции. 1 файл - 1 транзакция. Но регл. задание все равно отваливается.
  6. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    тогда просто в попытку заверни выполнение регзадания, если транзакция все-равно отваливается.
    ну либо сделай схему, если есть возможность, по ней xdto и им проверяй файлик перед загрузкой.
  7. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    А смысл регл задание в попытку? Будет ошибка, опять отвалится. И будет тоже самое. Может есть еще какие другие пути решения проблемы? Не обязательно через проверку файла. В голову совсем ничего не лезет.
  8. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Такая же фигня (в голову ничего не лезет). Может тогда пересмотреть способ передачи?, например, через мыло ?
  9. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Все завязано под FTP. Переделывать не буду. Тратить время не хочу. Т.к. опять в пустую просижу, а этого никто даже не заметит. Устал я от этого. Кое че придумал. Сейчас тестирую, потом отпишусь.
  10. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Чем передача по FTP с проверкой размера и времени создания файла не устраивает?
  11. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Каким образом я буду передавать время и размер файла?
  12. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Это типовой функционал FTP со всеми вытекающими.
  13. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Было у меня так:
    Код:
    Пока ОбъектXML.Прочитать() Цикл
    Сделал так:
    Код:
    Пока Истина Цикл
    Попытка
    ОбъектXML.Прочитать();
    Исключение
    // {НАЧАЛО - ЛОГ}
    ОбщиеФункции.ЗаписатьЛогФайл(КаталогЛогФайлов, ИмяЛогФайла , "Проблемный файл: " + Строка(Файл.ПолноеИмя) + "...");
    // {КОНЕЦ - ЛОГ}
    ФайлБитый = Истина;
    Прервать;
    КонецПопытки;
    ТипУзла = ОбъектXML.ТипУзла;
    ИмяУзла = ОбъектXML.Имя;
    Если ИмяУзла = "" Тогда
    // прерываем выполнение цикла, т.к. файл уже кончился.
    Прервать;
    КонецЕсли;
    
  14. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    вот ты и засунул регзадание в попытку :)
    только попытку поглубже запрятал
  15. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    А ты это имел в виду?! :)
  16. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    примерно да - просто в начале процедуры регзадания начать попытку, а в конце - закончить.
  17. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Ну вроде тесты прошли успешно. Завтра буду уже на рабочих данных пробовать.

Поделиться этой страницей