#0
by Антиквар
Всем привет! Есть 1C 8.1. и 1С 8.2. (не принципиально что использовать, но вдруг в 8.2. есть что-то полезное для XML, чего нет в 8.1.) Есть некие файлы формата XML. Требуется эти файлы периодически загружать в базу, предварительно проверив структуру XML. Структура XML описана в ворде в виде таблички. Все тэги и элементы расписаны, обязательность и тип данных установлены. Формат XML периодически претерпевает изменения. Вопрос: как лучше реализовать проверку структуры XML. Должна соблюдаться последовательность элементов (тэгов), а также тип данных. Ну тип данных я думаю будет проверяться уже при непосредственной загрузке этих данных в базу, а вот предварительная проверка структуры? Я думал делать либо макет со структурой файла, либо справочник в 1С с этой структурой. Причем макет думаю предпочтительней, т.к. формат XML может меняться. Но вот мне кажется, что есть какие-то более прогрессивные средства. Знаю, что есть специальные схемы описания формата, что на основании их как-то формат проверяется. Например для сдачи 2-НДФЛ есть описание формата XML, а также файл-шаблон (может не так называется правильно), на основании которого наверное спец. программы в налоговой как раз и проверяют структуру, да и тот же CheckXML. Подскажите, кто занимается такими вещами, как лучше реализовать. Читал сейчас про всякие XDTO-фабрики, объекты DOM,... что-то ничего не понял, да и возможно это не то что мне надо, во всяком случае надеюсь на это :) Вообще с разбором XML проблем нет, но вот первый раз встала задача проверки структуры. Или легче не заморачиваться, а сделать макет в 1С со структурой файла, и сверять с ним?
#1
by Антиквар
Т.е. главный мой вопрос в том, возможно ли создать файл-описание структуры моего XML, чтобы потом я мог на основании его проверять файлы XML, либо чтоб 1С могла сама проверить файл XML по этому файлу-описанию? Я видел так называемые "XML Schema", но не понял как это использовать. Пока мне кажется проще и очевиднее сделать в 1С макет со структурой, но может это прошлый век уже ? :)
#4
by Антиквар
Схемы не существует, есть просто описание в ворде, как приложение к приказу. Если схему самому создавать - это сложно? Но формат большой, таблица на 12 листов в ворде. Если не сложно, поделитесь как это делается, может приду к такому решению. XSD - это как раз файл-описание структуры? Но у меня его нет, его вообще нет. Про остальное вообще не понял, какой объект на выходе я получаю?
#5
by Wobland
ты непременно придёшь к мысли о том, что нормальная схема (xsd) сильно лучше каракулей на листочке (word). изучай
#6
by Wobland
кстати, свою схему я нашёл прямо в xml. оказалась немного сложнее, чем ожидал <FictionBook xmlns=";
#8
by Антиквар
>> ты непременно придёшь к мысли о том, что нормальная схема (xsd) сильно лучше каракулей на листочке (word) Но дело в том, что при изменении формата я буду получать тоже описание в табличке ворда :) Т.е. схему создавать всегда самому. Поэтому данная процедура имеет смысл только в том случае, если так намного удобнее реализовать проверку структуры. Имеешь ввиду, что в заголовке XML указана ссылка на схему? У нас заголовок обычный "<?xml version="1.0" encoding="windows-1251"?>" Или я не понял о чем речь :) Как создавать схему - нужно ещё учиться. И даже научившись, мне кажется, что перенести структуру в макет 1С всё-равно проще, чем создавать схему XSD. Но я так понимаю, что зато проверку структуры со схемой можно как-то автоматизировать? Т.е. потом процесс проверки и загрузки XML-файлов будет проще? Я просто не представляю пока, что делать с созданной схемой, как её использовать для проверки структуры файлов. Соответственно боюсь ввязаться в это дело, потеряв кучу времени, и не получив ожидаемого. Поэтому вопрос в том, оправдан ли этот "геморой" (во всяком случае для меня пока геморой). -------------------------------------------------- Ещё поясню: форматы XML разрабатываются не мной, а гос.органами на региональном и федеральном уровне. Никаких схем у меня никогда не будет, т.к. они их не делают. Только если я сам, прочитав описание формата, буду эти схемы создавать. Но поясните, как их потом использовать? :)
#10
by SleepyHead
"Ещё поясню: форматы XML разрабатываются не мной, а гос.органами на региональном и федеральном уровне. " Что за файлы? На примере отчетов в ПФР и НДФЛ - схемы есть, и они публикуются.
#12
by Антиквар
Это файлы обмена между медицинскими организациями и ФОМСом, а также между мед. организациями и страховыми. Ну в общем отчетность по больницам и прочим мед. учреждениям.
#13
by Vladuha
XSD тебе в помощь, для начала сгенерируй на основе xml, таких сервисов навалом, например
#14
by Антиквар
Спасибо. Т.е. я могу сгенерировать XSD по XML, но поскольку ни один XML не включает полностью весь формат (слишком много различных частных случаев), то потом вручную надо доработать XSD. Ну хорошо, допустим я создам XSD. А что дальше с ним делать, почему с ним проще проверить структуру XML? Есть какие-то стандартные команды в 1С? Не поделитесь кусочком кода, как осуществляется проверка XML на основании XSD. В чем удобство?
#15
by Maxus43
Проверить (Validate) Синтаксис: Проверить Описание: Проверяет данный объект на соответствие модели XDTO.
#16
by Антиквар
Спасибо, но видимо кроме синтаксис-помощника мне надо что-то ещё почитать, чтобы понять хоть что-то :)
#17
by Леша1с
вам предлагают сначала разработать ключ к вашему файлу XML. Если разработаете схему - всегда можно найти, соответствует ли данный XML файл тому, что ожидается (схеме XML). Тут вообще все сугубо-ручное. Ручная обработка, "ручное" чтение...
#19
by Maxus43
ФабрикаXDTO (XDTOFactory) На основе набора схем XML Синтаксис: Там потом можно создавать объекты фабрики на основе схем и писать их в XMl. Перед записью можно дополнительно юзать Проверить на фабрике, оно проверит на валидность файла xml схеме xml
#20
by Maxus43
для простоты xdto пакет можно в конфигурации добавить (импортировать схему xml, чтоб файлики не искать потом со схемой)
#21
by Зойч
Все равно файл ворд нужно будет перевести в машиночитаемый вид. Естественно выбрать для этого уже известный все xsd формат
#22
by Vladuha
xsd - это по сути схема, описывающая струтуру xml-документа, т.е. с помощью xsd как раз выполняется проверка xml-документа на "правильность". Грубо говоря, загрузил схему, подсунул xml-документ, вызвал проверку, получил либо либо ОК (документ валиден), либо ошибку (xml не соответствует шаблону). В 1С есть такое понятие, как xdto. Это 1Совский механизм для работы со схемами. Вот посмотри, например на инфостарте
#24
by Леша1с
XDTO - это механизм доступа (работы) с XML. Это чуть переделанный и переобозванный (а как же!) SOAP.
#26
by Антиквар
Спасибо за участие в вопросе! Что-то проясняется. >> Все равно файл ворд нужно будет перевести в машиночитаемый вид. >> Естественно выбрать для этого уже известный всем xsd формат Вот для меня это и неестественно как раз :) Я понимаю, что формат нужно перевести в машиночитаемый. Я и хотел использовать для этого объект конфигурации "Макет". И при загрузке XML проверять на соответствие моему макету. Т.е. самому писать программный код проверки. Я правильно понимаю, что лучше сделать не Макет, а файл XSD, и тогда проверку мне писать не надо, 1С будет выполянть её сама по моему шаблону XSD. Так? >>загрузил схему, подсунул xml-документ, вызвал проверку, получил либо либо ОК (документ валиден), либо ошибку (xml не соответствует шаблону). Мне нужна не просто ошибка, нужно указать, где именно эта ошибка случилась и почему. Ошибки: - Ошибочный порядок тегов - Отсутствует обязательное поле - Неверный тип данных - Неверный код (это когда переданы коды, отсутствующие в справочниках) - Дубль ключевого идентификатора (это когда есть повторение неких уникальный полей). Если я сделаю свой макет-шаблон и сам буду проверять, то я смогу любые ошибки обнаружить. А вот с помощью встроенных средств через XSD вдруг так получится, что валидность сработает при ошибке например "Неверный код". Можно ли такую проверку заложить в структуру XSD...
#27
by Vladuha
для примера тебе текст ошибки: Cvc-complex-type.2.4.a: Invalid Content Was Found Starting With Element 'author1'. One Of '{author, Title}' Is Expected.. Line '3', Column '18'.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Ошибка при загрузке данных при обмене УТ 10.3-БП 3.0 после обновления БП 3.0.31
- Ввод остатков НЗП в КА
- БП 3.0 куда делось: компенсация за задержку зарплаты
- Параметры выбора + параметры динамического списка
- загрузка .cf файла
- СКД. Как сделать условное оформление по полю, которого нет в группировке?
- Получить дату последнего прихода из регистра накопления "Партии товаров на складе"
- Дублирование номеров документов
- ERROR: timestamp out of range
- Не списался товар со склада 1С 8.2 УПП
- Как в построитель запроса передать текст запроса из ТЗ?
- Не работает отбор в СКД..
- Расскажите, чем можно обновить УТ 11.1.4.10?
- Может ли 1С 8.2 / 8.3 работать как сервер, отвечая на POST / GET HTTP Запросы?
- КА, Обработка "восстановление состояния расчетов"
- Настройка видеоадаптера в VirtualBox
- Закрытие кассовой смены в УТ11.1 - задним числом можно?
- не хватает памяти серверу 1с
- При активизации строки не выводит данные в подчиненной табличной части.
- Кодировка для переноса текстового файла из 1С8.2 в 1С7.7