1с 8.2 створення xml виходячи з xsd. Типізований об'єкт DataSet. Читання та запис XML-документів

01.11.2019 Безпека

Анотація: XML-схеми даних (XSD) Створення XSD-схеми у середовищі Visual Studio.NET. Створення типізованого об'єкту DataSet. Отримання інформації про структуру об'єкту DataSet. Завантаження XML-документів та XSD-схем у типізований та звичайний об'єкти DataSet. Методи ReadXml та ReadXmlSchema. Запис вмісту та структури типізованого та звичайного об'єкта DataSet. Методи WriteXml та WriteXmlSchema

Типізований об'єкт DataSet. Читання та запис XML-документів

XML-схеми даних (XSD)

Схеми даних 1 Точний переклад XML Schema Document -< схема документа XML>, проте ми будемо використовувати термін "схема даних XML". XSD (XML Schema Document, XSD) є альтернативний спосібправил побудови XML-документів У порівнянні з DTD, схеми мають більш потужні засоби для визначення складних структур даних, забезпечують більш зрозумілий спосіб опису граматики мови, здатні легко модернізуватися і розширюватися. Схема XSD може містити таку інформацію:

  • подання зв'язків між елементами даних, аналогічне зв'язків зовнішніх ключів між таблицями в реляційній базі даних;
  • представлення унікальних ідентифікаторів, подібних до первинного ключа;
  • специфікацію типівданих кожного індивідуального елемента та атрибуту у XML-документі.

Для створення схеми даних Visual Studio .NET в головному меню переходимо File \ New \ File і вибираємо зі списку шаблонів (див. рис. 11.3) XML Schema . З'являється вікно з написом "Щоб розпочати, перетягніть об'єкти з вікна Server Explorer або Toolbox на робочу область (область дизайну) або клацніть правою кнопкою" (рис. 11.1):


Мал. 11.1.

Справа в тому, що ми перебуваємо в режимі дизайну. Переключаємося в режим коду, для чого натискаємо кнопку (XML):

Перший рядок - це вже знайома вказівка ​​на те, що схема є XML-документом з кореневим елементом xs:schema . Префікс xs : випереджає всі елементи схеми, вказуючи на свій простір імен. У другому рядку знаходиться довгий, докладний і часто зовсім непотрібний опис схеми (порівняйте з аналогічним кодом для HTML-сторінок). Для коректної роботи цілком достатньо обмежитися наступним уявленням:

Утім, вбудовані засоби візуалізації студії передбачають наявність цієї "шапки", тому її не слід видаляти. Створення схеми, що описує заданий XML-документ у Visual Studio .NET - досить просте завдання. Створимо наступний документ XMLEasy.xml:

1

Перемикаємось на вкладку (Data) і бачимо лише один запис (рис. 11.2).


Мал. 11.2.

Створити схему, що описує цей документ, можна декількома способами: у головному меню вибрати пункт "XML \ Create Schema" (рис. 11.3, А), в режимі XML контекстному менювибрати цей пункт (рис. 11.3, Б), у режимі Data у контекстному меню вибрати цей пункт (рис. 11.3, У), і, нарешті, у режимі Data натиснути кнопку панелі інструментів XML (рис. 11.3, Р).


Мал. 11.3.

У будь-якому випадку з'являється схема документа як таблиці (рис. 11.4). Залишимо поки режим Schema і перейдемо в режим (XML).


Мал. 11.4.

Середовище згенерувало XML-код, який описує структуру документа:

Сюди входить також опис, необхідний подальшого маніпулювання схемою з допомогою об'єктів ADO .NET. У вихідному документі XMLEasy.xml з'явилося посилання на схему даних:

Документ XMLEasy.xsd був автоматично створений у тій же директорії, де знаходиться XMLEasy.xml.

Щоб навчитися розуміти схеми XSD, спочатку слід попрацювати з описом даних у чистому вигляді, без додаткових елементів. У таблиці 11.1 наводиться кілька найпростіших XML-документів та його схем, сформованих без прив'язки до об'єктів ADO .NET.

Таблиця 11.1. Приклади складання XSD-схем
Вміст XML-документа Вміст XSD-схеми

1

Опис
У документі XMLEasy.xml елемент TOUR – кореневий елемент, що містить дочірній елемент IDTOUR. Загальна схемадля кореневого елемента має такий вигляд:

: Вміст елемента...

Дочірні елементи описуються так:

Вміст XML-документа Вміст XSD-схеми

1 Кіпр 25 000,00 грн. У вартість двох дорослих путівок входить ціна однієї дитячої (до 7 років) 2 Греція 32 000,00 грн. У серпні та вересні діють спеціальні знижки. 3 Таїланд 30 000,00 грн. Не включаючи вартість авіаквитка 4 Італія 26 000,00 грн. Сніданок у готелі включений у вартість путівки 5 Франція 27 000,00 грн. Додаткові екскурсії не входять у вартість путівки

Опис
Кореневий елемент TABLE містить елемент TOUR , що складається, своєю чергою, із групи дочірніх елементів. Елемент choice визначає вибір інших елементів, причому значення unbounded (необмежено) атрибуту maxOccurs вказує на можливість необмеженої наявності груп TOUR .

: :

Вміст XML-документа Вміст XSD-схеми

1 Кіпр 25 000,00 грн. 1 У вартість двох дорослих путівок входить ціна однієї дитячої (до 7 років)


Мал. 11.5.
Опис
Для елемента IDTOUR було встановлено тип даних int , для елемента CLOSED - тип boolean , інших - за умовчанням тип string . Змінювати тип даних можна безпосередньо в режимі XML-схеми даних, але зручніше - в режимі Schema (в даному випадку режим буде називатися DataSet) вибирати тип даних зі списку, що випадає (рис. 11.5):

У програмне забезпеченнядо курсу ви знайдете всі файли цієї таблиці в папці XSD (CodeGlava5XSD).

Завдання типу даних у XML-документі (останній приклад – табл. 11.1) – один із способів обмеження вмісту. Для обмеження значення заданого типу використовуються додаткові атрибути. У наступному фрагменті схеми значення елемента PRICE має бути в межах від 50 до 100:

Для обмеження документа XML деякими фіксованими значеннями використовується наступна конструкція:

Тут елемент NAME може набувати лише одного фіксованого значення з п'яти назв країн.

Розробка XSD-схеми є досить копіткою роботою. Візуальні засоби середовища Visual Studio .NET значно полегшують це завдання. Для освоєння основних концепцій бажано вивчити кілька схем документів XML, створених автоматично. У таблицях 11.2-11.4 наводиться опис основних елементів та атрибутів, які при цьому можна зустріти.

Таблиця 11.2. Елементи XSD-схем
Елемент Опис
all Вкладені елементи можуть визначатися у довільному порядку
Annotation Батьківський елемент елементів-коментарів і
any Будь-які вкладені елементи
anyAttribute Будь-які атрибути
appInfo Елемент-коментар. Задає титул схеми
attribute Атрибут
attributeGroup Група атрибутів
choice Вибір інших елементів. Аналог оператора "|" у DTD
complexContent Обмеження або розширення моделівмісту складного типу
complexType Елемент складного типу
documentation Елемент-коментар. Надає інформацію про схему
element Елемент
extension Розширення елемента
field Оголошення поля. Застосовується всередині елемента для визначення полів
group Група елементів
import Імпорт декларації типів з іншої схеми
include Включення іншої схеми до існуючого простору імен
key Завдання елемента або атрибута з ключем, який вказує на інший елемент
keyref Завдання елемента або атрибута, на який вказує ключ
list Елемент, який може містити перелік значень
redefine Перевизначення вже оголошених елементів
restriction Обмеження елемента
schema Кореневий елемент схеми
selector Селектор для відбору XML-елементів
sequence Послідовність інших елементів. Аналог оператора "," у DTD
simpleContent Модель, вміст якої представляє лише символьні дані
simpleType Елемент простого типу
union Елемент або атрибут, який може мати множину
unique Елемент чи атрибут, який повинен мати унікальне значення
Таблиця 11.3. Атрибути – обмеження XSD-схем
Атрибут Опис
enumeration Список значень
length Довжина
maxLength Максимальна довжина
minLength Мінімальна довжина
maxExclusive Максимальне значення
maxInclusive Максимальне значення включно
minExclusive Мінімальне значення
minInclusive Мінімальне значення включно
fractionDigits Кількість знаків після коми у дробових числах
totalDigits Кількість цифр
pattern Зразок (патерн) вмісту елементів
default Значення елемента або атрибута за замовчуванням
elementFormDefault Завдання властивостей локального елемента як глобально визначеного
fixed Фіксоване значення елемента чи атрибута
form Локально оголошені елементи визначаються у конкретних примірниках документів
itemType Тип пунктів списку
memberTypes Тип членів, використаних у об'єднанні (union)
maxOccurs Максимальна кількість входжень елемента
minOccurs Мінімальна кількість входжень елемента
mixed Завдання елемента, що має змішаний тип
name Назва елемента чи атрибута
namespace Простір імен
noNamespace Завдання розташування документа-схеми,
SchemaLocation не має результуючих просторів імен
nillable Визначення того, що елемент може мати пусте значення NULL(nil)
ref Завдання посилання на глобально визначений елемент
schemaLocation Визначення розташування схеми
substitutionGroup Визначення заміни елементів на інші елементи
targetNamespace Результуючий простір імен схеми
type Тип елемента
use Чи є елемент обов'язковим чи ні
value Значення елемента схеми
xsi:nil Завдання реального змісту порожнього (NULL) елемента XML-документа
xsi:schemaLocation Реальне розташування елемента в XML-документі
xsi:type Реальний тип елемента у XML-документі

Платформи: 1С: Підприємство 8.3, 1С: Підприємство 8.2, 1С: Підприємство 8.1
Зміни: Усі конфігурації

2012-11-25
34938

XDTO - це механізм, який необхідний під час створення та роботи web-сервісів. За допомогою пакетів XDTO здійснюється опис структури необхідного файлу XML, необхідного для зміни даних з XML та XML.

XML - це метод дозволяє у звичайному текстовому файлі описати складну структуру даних. У ньому описуються як безпосередньо дані, а й поля, де вони зберігаються.
Ось базовий приклад XML файлу:

XML for dummies

Імена (теги), використані в даному файлі- root, list, name, el – можуть бути абсолютно довільними. Основні правила освіти XML файлу видно відразу за його структурою:
- можливе вкладення елементів;

Початок елемента<Имя>, закінчення - те саме ім'я, але з приєднанням символу «/».

Перебувати всередині елемента можуть:
- вкладені елементи;
- текст.

У кожного елемента можлива наявність властивостей (атрибутів), у них вказується значення та ім'я. У XML забороняється використовувати будь-які символи, тому що кілька з них зайняті безпосередньо для XML, приклад «<» и «>». Спосіб опису XML дуже зручний для використання при обміні з іншими сторонніми програмамиі використовується він у 1С механізмі обміну даними.

Простір імен

Файл XML починається з заголовка, що описує версію XML, кодування тощо… Заголовок в XML не зовсім обов'язковий і часто його просто не застосовують. У заголовку також можливе визначення - простору імен.

XML файли передаються через інтернет і сприймаються багатьма різними програмами. Сприймаються - це означає, що в їхньому коді є захист - якщо зустрінеш у файлі XML певне ім'я елемента, то необхідно сприймати його саме так і робити саме ось це. Тому при використанні нами тега IBM, існує досить високий шанс того, що інша програма подумає, що це IBM, відомий їй, в той час як ми мали на увазі щось своє.

Для запобігання подібному і для того, щоб явно вказувати на відмінність нашого IBM від усіх інших, у файлі можливе завдання найменування простору імен - префікс, що використовується перед назвою елементів.

Визначити простір імен (namespace) можна наступним чином xmlns:Префікс (Ім'яПростору) = “URL”, приклад:
xmlns:store = "http://site.ru"

Навіщо ж необхідний URL? Хто вже подумав і дивиться далі - звісно простір імен, нами придуманий, може бути не унікально, тобто. хтось інший також може використовувати його. Саме тому вказується особливий унікальний ідентифікатор, Який визначає заодно і виконавця простору імен.

Природно мається на увазі той факт, що людина, яка вказала простір імен, є виключно чесною. Він вказує на свій сайт та не застосовує з одним сайтом кілька різних просторів імен. Як правило, вказують як URL сайту, так і URL певної папки на сайті, для того, щоб була можливість створення іншого простору імен в будь-якій папці на даному сайті, для його застосування в будь-якій ситуації.

DOM

Об'єктом називається конкретна структура даних, що є самодостатньою і містить у собі всі свої дані.

У зв'язку з тим, що в XML файлі відбувається опис структурованих даних, тобто даних у вигляді структури, яка має свої властивості та інше, відповідно на них можна дивитися як на об'єкти. У розглянутому прикладі може використовуватися об'єкт LIST з властивостями та вкладеним елементом.

DOM є способом розгляду XML файлу не як тексту в конкретному форматі, а як набор об'єктів з полями, властивостями та інше.

До мінусів даного способуроботи відноситься високі вимоги до продуктивності ПК, т.к. DOM обробляє (формує структуру як об'єктів) одночасно весь XML файл, незалежно від його розміру, і файли великого розміру(Більше 4Гб) він просто не зможе "переварити".

Для аналізу великих файлів, використовується SAX, цей метод аналізу файлу заснований на послідовному читанні файлу, а не на побудові відразу всієї його структури .

Опис файлу XML

Якщо ми застосовуємо файл конкретної структури постійно здійснення обміну між 2-ма програмами, ми ймовірно хотіли таке:

Щоб використані були конкретні назви;
- щоб використовувалися лише ті елементи, які ми очікуємо (які «мають існувати для застосування в обміні»);
- Щоб в атрибутах вказувалися лише ті типи, очікувані нами (число, рядок та інше).

Для опису XML структури бувають такі формати файлів (які зберігаються також у простому текстовому файлі):

Розширення DTD – це Document Type Definition;
- Розширення XSD - це XML Shema.

Ці формати описують яким має бути документ. Процедуру перевірки відповідності XML, що описується у подібному файлі стандарту, називають верифікацією.

XDTO

XDTO - це об'єкт 1С, що дозволяє додати конфігурацію опис файлу XML. Точніше описується не сам файл, а певні структури XML.

Для вказівки типів, можливих до використання – застосовується список, бібліотека типів – званий фабрикою XDTO. У даній фабриці вказуються не тільки прості типи (дата, рядок, число), які використовуються в інших програмах, мовах та інше, але також і типи 1С, що використовуються в 1С і в певній конфігурації.

Фабрика XDTO включає кілька пакетів. Початкові типи описуються у пакеті з назвою www.w3.orgТипи даних конфігурації описуються в пакеті http://v8.1c.ru/8.1/data/enterprise/current-config

Ці типи називаються відповідно до назв у конфігураторі з додаванням англомовного вигляду (CatalogRef, DocumentObject, CatalogObject, DocumentRef), наприклад:

CatalogObject.Контрагенти

Додавання пакету XDTO

Ми дійшли до теми XSLT - способу перетворення файлів XML на щось інше, наприклад в файли HTML. Тема XML вкрай велика і написана по ній не одна книга.

Нашим завданням є зрозуміти, що XDTO дозволяє описати елементи, які повинні знаходитися у XML пакету, який потрібно рахувати або сформувати. XDTO пакети знаходяться в конфігурації 1С та у гілці Загальні – XDTO-пакети.

Додати XDTO пакет у 1С можливо вручну, але найкраще дістати відповідний файл XSD з готовим докладним описомсхеми. Опис схеми об'єктів XSD будь-якої конфігурації можна отримати шляхом натискання на гілку Загальні - XDTO-пакети та вибравши в меню пункт " Експорт XMLсхеми даних конфігурації".

Цей текстовий файл, Ви можете відредагувати в блокноті Windows, при цьому прибравши зайві об'єкти (непотрібні Вам). Додати готову схему XSD в 1С можливо шляхом натискання правою кнопкою миші на гілку Загальні - XDTO-пакети та вибравши в меню пункт "Імпорт XML-схеми".

Роботою з XDTO в 1С називається перетворення значень з XML і XML. Це робиться за допомогою об'єктів 1С мови Читання XML/XMLЗапис.

При роботі з XDTO треба вказати пакет, з яким безпосередньо працюєте. Їм може бути типовий пакет (див. в обговоренні вище, XDTO), так і пакет, доданий в конфігурацію.

Ідентифікація пакета здійснюється за URL-адресою, яка вказана в пакеті. Є два способи роботи, які є основними – це:

Серіалізація - автоматична зміназначень із XML в 1С і навпаки;

Заповнення полів об'єкта, його створення та запис у XML (а також відповідно читання з XML та надалі читання його полів).

Наведемо приклад серіалізації значення:

Серіалізатор = Новий XDTO Серіалізатор (XDTO Фабрика);
XML Файл = Новий XML Запис();
XMLФайл.ВідкритиФайл(«Ім'яФайлу»);
Серіалізатор.ЗаписатиXML(XMLФайл, 1С Значення);

Зворотня функція – Серіалізатор. XMLЧитання (), використовується з об'єктів 1С мови ЧитанняXML.
Приклад запису/читання об'єкта:

Довідник XDTOОб'єкт = ФабрикаXDTO.Створити(XDTOФабрика. Тип("http://v8.1c.ru/8.1/data/enterprise/current-config", "CatalogObject.Контрагенти"));
ЗаповнитиЗначенняВластивостей(ДовідникXDTOОб'єкт, Довідник.Контрагенти.ЗнайтиПоРеквізиту("Ім'я", "Іванів).Посилання);

Потім можна зробити запис створеного об'єкта в XML так само, як і серіалізація. Під час читання XML у такий самий спосіб, що розглядався вище, може повернутися не XDTO значення, а саме такий об'єкт.

Під час створення XDTO об'єкта створюється структура, яка аналогічна структурі об'єкта конфігурації (якщо, звичайно, Ви створюєте об'єкт конфігурації з пакета, який вказаний у прикладі вище). Типові поля (найменування, код тощо) є англомовними, а об'єкт створюється порожнім, тому його необхідно заповнювати, окремо кожне поле або з використанням функції ЗаповнитиЗначенняВластивостей

Формат XML користується великою популярністю при обміні різними текстовими документамиміж інформаційними системами. Можливість створення унікальної структури документів дозволяє її використовувати в багатьох галузях – електронні бібліотеки, WEB, імпорт/експорт, а також багатьох інших. Без можливості зручної роботиз цим форматом системи 1С не змогли б набути такої популярності. Оскільки 1С активно використовує WEB-технології, кожен розробник має вміти читати XML та записувати у них інформацію.

Подання файлу XML та його читання

Однією з ключових переваг мови розмітки XML є досить зручна та інтуїтивно зрозуміла структура та синтаксис. При його створенні автори ставили за мету створити мову розмітки, яка була б зручною для читання і людиною, і ЕОМ. На сьогоднішній день XML набув широкого розвитку в інші формати, але залишається популярним і широко використовується. Структура XML файлу будується за такою схемою:

Для розгляду прикладу імпорту даних у 1С достатньо буде представленого вище файлу. Щоб написана процедура змогла прочитати файл XML, достатньо в неї передати шлях до самого файлу. Це можна зробити через інтерфейс, дозволивши користувачам самостійно вказувати файл, або жорстко прописавши текст обробки.

Одним із популярних способів роботи з XML розміром до 100 МБ у 1С вважається використання об'єктної моделі документа (DOM). Його зміст полягає в почерговій обробці всіх вузлів документа, які представлені в XML. Вбудованою мовою 1С цей алгоритм виглядає так:

  1. Оголошення механізмів, за допомогою яких відбувається читання XMLфайлу; Цикл для обходу вузлів;
  2. Зчитування даних та атрибутів у вузлі;
  3. Виведення інформації. Якщо є необхідність, на цьому етапі може відбуватися запис у змінні або одразу в потрібні таблиці;
  4. Завершення роботи механізму.
&НаСервері Процедура ЧитатиНаСервері(ШляхКФайлу) //оголошення механізмів МеханізмЧитання = Новий ЧитанняXML; МеханізмЧитання.ВідкритиФайл(ШляхКФайлу); Побудовальник = Новий ПобудовальникDOM; Документ = Построитель.Прочитать(МеханизмЧтения); //цикл для обходу вузлів Для кожного елемента З Документ.ЕлементДокумента.ДочірніВузли Цикл //зчитування даних Якщо елемента.Ім'яВузла = "Товар" Тоді товар = елемента; Для кожного значення З товар.ДочірніВузли Цикл Якщо значення.Ім'яВузла = "Найменування" тоді Найменування = значення; Колір = Найменування.Атрибути.ОтриматиІменованийЕлемент("Колір"); Інакше Якщо значення. Ім'я Вузла = "Ціна" тоді Вартість = значення; Валюта = Вартість. Атрибути. КінецьЯкщо; КінецьЦикл; //висновок повідомлень Повідомити("Найменування: " + Найменування.ТекстовеВміст + "; колір: "+Колір.Значення +"; Ціна: "+Вартість.ТекстовеВміст + "; Валюта: "+Валюта.Значення); КінецьЯкщо; КінецьЦикл; //закриття механізму НеханізмЧитання.Закрити(); КінецьПроцедури

Як результат ми виводимо користувачеві повідомлення з імпортованими даними. Також ви можете помістити всі дані в потрібну структурута на її підставі запрограмувати створення документа чи записів у довіднику. Швидкість роботи 1С з XML досить велика, тому все частіше саме цей формат використовується при обміні даними з іншими джерелами.

Для вивантаження інформації нам також знадобиться взаємодія з файлами формату XML. Розглянемо приклад запису з допомогою об'єкта платформи 1С ЗаписьXML і вивантажимо дані номенклатурі. Головними його перевагами є простота коду та швидкість обробки даних. Серверний алгоритм запису файлу XML можна представити у вигляді кількох послідовних кроків:

  1. Підключаємось до файлу xml;
  2. Створюємо головні елементи і записуємо дані. Якщо ви хочете вивантажити в XML файл великий обсяг інформації, то на цьому етапі у вас будуть використовуватись цикли. Будьте обережні і не забувайте, що запит даних потрібно робити до циклу, а не в ньому;
  3. Закриваємо файл.
//відкриваємо файл Nomenclatura.xml і записуємо головний елемент ЗаписВФайл = Новий ЗаписХML(); ЗаписВФайл.ВідкритиФайл("D:\Nomenclatura.xml", "UTF-8"); ЗаписВФайл.3аписатиПочатокЕлементу("Товари"); //вибираємо дані для запису ВибіркаДовідника = Довідники.Номенклатура.Вибрати(); //цикл, в якому відбувається запис Поки ВибіркаЗ Довідника.Наступний() цикл //запис нових даних ЗаписВФайл.ЗаписатиПочатокЕлементу("Товар"); ЗаписВФайл.ЗаписатиАтрибут("Найменування", ВибіркаДовідника.Найменування); ЗаписВФайл.ЗаписатиАтрибут("ПочатковаЦіна", Рядок(ВибіркаЗДовідника.ПочатковаЦіна)); ЗаписВФайл.ЗаписатиКінецьЕлементу(); КінецьЦикл; //Закриваємо головний елемент та файл ЗаписВФайл.ЗаписатиКінецьЕлементу(); ЗаписВФайл.Закрити();

Механізм XDTO в 1С

Розробники компанії 1С обмінюватись інформацією через XML створили власний механізм – XDTO (XML Data Transfer Objects). Починаючи з версії 8.1, у платформі з'являється можливість обмінюватися даними з іншими системами, не вникаючи питання формування файлу XML. Більшість технічних питаньбере на себе 1С, а нам залишається лише вказувати дані, необхідні для формування XML. Щоправда, для цього розробнику необхідно заздалегідь зробити деякі маніпуляції.

Щоб завантажити файл XML, використовуючи XDTO, ми повинні повідомити структуру файлу 1С. Вона передається через набір схем, які можна створити в текстовому редакторі або скористатися спеціалізованою програмою. В результаті повинен вийти файл, що описує загальну структуру та типи даних, які використовуються у файлі XML. Перед тим як зчитувати або записувати новий XML, розробник повинен завантажити його схему в конфігурацію до розділу «Пакети XDTO».

У разі створимо руками простий пакет, щоб 1С розуміла структуру нашого файлу для прикладу. Щоб формування файлу закінчилося успішно, нам потрібно відобразити у схемі, що у нас присутній головний елемент та вкладення з атрибутами. Створену схему потрібно експортувати у файл формату xsd і передати разом із xml, щоб іншій стороні не знадобилося розбиратися зі структурою і знову створювати пакет xdto.


Зберегти новий XML на жорсткий дискдопоможе серверний алгоритм, схожий на попередній. Відмінність полягає лише в необхідності додавання даних по 1 товару у фабрику XDTO – спеціальний механізм платформи 8.3 1С. Якщо є необхідність робити більше рівнів вкладеності, доведеться описувати кожен головний елемент.

//Відкриваємо файл XML ЗаписВФайл = Новий ЗаписXML; ЗаписВФайл.ВідкритиФайл("D:\Nomenclatura.xml", "UTF-8"); //Вказуємо 1C, який тип даних слід створити - головний елемент ВсеТовари = ФабрикаXDTO.Створити(ФабрикаXDTO.Тип("http://wiseadviceXML.org","Товари")); //вибираємо дані для вивантаження ВибіркаДовідника = Довідники.Номенклатура.Вибрати(); //Додаємо окремі товари в головний елемент Поки ВибіркаДовідника.Наступний() цикл Товар = ФабрикаXDTO.Створити(ФабрикаXDTO.Тип("http://wiseadviceXML.org","Товар")); Товар.Найменування = ВибіркаДовідника.Найменування; Товар.ПочатковаЦіна = Рядок(ВибіркаЗДовідника.ПочатковаЦіна); ВсіТовари.Додати(Товар); КінецьЦикл; //записуємо дані та закриваємо файл ФабрикаXDTO.ЗаписатиXML(ЗаписВФайл, ВсеТовари); ЗаписВФайл.Закрити();

Розглянуті механізми є досить універсальними і при правильному налаштуванніможуть вирішити більшість завдань. Однак у взаємодії 1С та XML досить багато нюансів. Вивчати їх набагато ефективніше в реальних умовах, а не на тестових завданнях, в яких обробка файлу XML вирішує досить вузькі завдання.

Помилка, що повідомляє про те, що файл не відповідає XSD-схемі, є спільною для випадків, коли система не може вважати дані зі звіту. Загалом такі помилки у людей виникають нерідко, а впоратися з ними досить нескладно.

Для початку потрібно розібратися в тому, що означає XSD-схема, щоб зрозуміти, чому ваш файл не відповідає.

Отже, XSD – це мова програмування, з його допомогою описується структура звіту. До структури входять, наприклад, параметри змісту звіту, тип, вид, синтаксис даних, розділи, які містять інформацію.

Виходить, що XSD-схема-це опис структури вашого звіту, виконане однією з мов програмування. Якщо до звіту буде внесено неправильну інформацію, то для схеми вона буде просто нечитана, саме тому система видає помилку про те, що файл не відповідає XSD-схемі.

Це говорить про те, що інформація, яку ви запровадили, не може бути прочитана мовою програмування, отже, програма визнає її неправильною.

Варто зазначити, що дана проблема може виникнути як через невірно введених даних(наприклад, ви помилилися, коли вводили ІПН організації), так і через неправильний формат введення даних (наприклад, ви вказали зайві прогалини або дефіси).

Однак це не єдина причина, яка спричиняє невідповідність файлу XSD-схемі. Ця помилкатакож може виникати через те, що на Вашому пристрої встановлено застаріла версіяпрограми, в якій ви робите звіт, а також, якщо у самому податковому органі не інстальовано оновлення програми.

Для того, щоб вирішити помилку в XSD-схемі, вам необхідно буде перевірити правильність усіх даних,які ви ввели, а також уточнити, чи не виходило оновлення програми, в якій ви працюєте. Однак, перш ніж перевіряти файл, уважно подивіться на текст помилки, яку видає.

Справа в тому, що в деяких ситуаціях після тексту про те, що файл не відповідає схемі, стоїть двокрапка і далі вказується причина цієї проблеми. Якщо причина в самій помилці не вказана, оновіть програму до останньої версії.

Завершивши оновлення, спробуйте знову надіслати звіт. Якщо після оновлення файл знову видає помилку, то необхідно шукати проблему у ньому.Якщо ви працюєте в програмі 1С, ви можете перевірити файл за допомогою спеціальної кнопки, яка називається «перевірити в інтернеті».

Якщо два попередні пункти не допомогли виявити вам проблему, перевірте, чи всі обов'язкові поля ви заповнили, чи правильно ви ввели всі дані, адже багато з них необхідно заповнювати цифрами, в такому випадку дуже легко допустити друкарську помилку.

Крім цього, вам необхідно перевірити всі поля на відсутність зайвих прогалин, дефісів та інших знаків. Якщо ви перевірили весь файл і не можете знайти помилку або якщо помилку знайти вдалося, але виправити її ви ніяк не можете, вам обов'язково варто звернутися до служби технічної підтримкипрограми, за допомогою якої ви робите звіт або до її розробників.

Для того, щоб вирішити цю проблему за допомогою розробників програми, вам буде потрібно відправити деякі документи, такі як сам файл, в якому знаходиться звіт, протокол сповіщення, який вам видає комп'ютер.

Крім цього, розробники можуть запросити у вас деяку інформацію про вашу організацію, а також інші відомості, які їм видадуться потрібними, їх ви обов'язково повинні надати, інакше вирішити проблему не вдасться.

Отже, якщо ви намагаєтеся надіслати звіт до податкового органу, але файл видає помилку про те, що він не відповідає XSD-схемі, це означає, що ваш звіт не може бути відправлений,оскільки програма не може прочитати дані, які ви запровадили.

Але піддаватися паніці не варто, адже здебільшого ця проблема вирішується досить простота швидко. До того ж, якщо звіт ви надіслали вчасно, але він не був прийнятий через невірний формат, то податкова не має права штрафуватиза не вчасно наданий звіт. Насамперед, зверніть увагу на сам текст помилки, можливо, там уже вказано причину її виникнення.

По суті, причин може бути лише дві. Або у вас на пристрої встановлено стара версіяпрограми, за допомогою якої ви робите звіт, у такому випадку вирішити проблему легко, потрібно просто завантажити саме останнє оновленнязазвичай його можна знайти на сайті програми, яку ви використовуєте. Другою причиною може бути те, що ви неправильно заповнили якісь дані, або взагалі не заповнили якесь поле.

У такому разі вам необхідно перевіряти ваш файл, при цьому потрібно пам'ятати про те, що програма може вважати помилкою навіть зайва прогалина. Якщо ви ніяк не можете знайти причину помилки, то ви можете звернутися до технічну підтримкупрограми, там фахівці обов'язково допоможуть вирішити вашу проблему.