Загрузка и выгрузка данных в формате XML 1.0 по номенклатуре, контрагентам, договорам и счетам клиента из Битрикс в Бухгалтерию предприятия 3.0.38.55 с максимальной защитой от ошибок загрузки и возможностью отладки.

02.07.15

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

При серьезной доработке интернет-магазина на Битриксе возникла задача определять ошибки в файлах XML на стороне 1C 8 для максимально корректного ведения учета еще на этапе загрузки. В данной обработке помимо механизма чтения XML 1.0 предусмотрено ведение протокола на стороне сервера полностью до момента ошибки с передачей его на клиента со всеми ошибками для выяснения их причин. Обработка также находится в стадии доработки и может быть применена как образец для тестирования выгрузок и для модификации под подобные решения, а также для изучения работы механизмов клиент-серверного взаимодействия. Платформа 8.3.5.1383. Режим исполнения тонкий клиент.
Примечание: по отзывам скачавших пользователей без больших усилий переделывается под Управление торговлей 11.1.

Скачать файлы

Наименование Файл Версия Размер
Загрузка-выгрузка данных из Битрикс через XML 1.0 по номенклатуре, контрагентам и счетам клиента в Бухгалтерию предприятия 3.0.38.55
.epf 45,29Kb
29
.epf 2.0 45,29Kb 29 Скачать

Учитывая важность и работоспособность как очень хорошего шаблона для доработок под другие конфигурации (писали что чуток подправить и можно грузить данные в Управление торговлей 11.1) с 02.06.2015 цена поднята до 3-х стартмани!

Общий вид обработки приведен ниже на рисунке 1:

Рисунок 1 -общий вид обработки

Основой решения послужила задача на форуме Загрузка XML в бухгалтерию 3.0 Предстояло сделать сложный этап - загрузку. Также для тестирования подобных задач применил идею создания списка значений, структур на клиенте для передачи их на сервер для того, чтобы как при штатной отработке, так и в случае возникновения синтаксической ошибки или ошибке в данных периода исполнения вся информация ДО данного момента по прочей загрузке была сохранена в протоколе загрузки.

Достоинства обработки:

1. Контроль ввода пользователем всех данных (обычная системная ПроверитьЗаполнение() реквизитов для нужного режима).

2. Возможность сохранения и восстановления настроек формы (тоже все стандартные возможности платформы 8.3).

3. Как уже упоминалось, возможность отладки. Есть "глобальная" транзакция, которая может быть зафиксирована только по флажку, с целью получения "отчета" по возможным ошибкам загрузки. Также учтено что платформа 1С 8 не поддерживает механизма вложенных транзакций. Также учтена особенность неявных транзакций Попытка...Исключение. Во всех случаях протокол создается в виде файла на стороне клиента

4. Ведение счетчика успешно загруженных объектов для предварительного контроля. Опять таки, не учитываются основные договора контрагентов.

5. Для оптимизации не передается контекст формы на сервер.

 

Недостатки:

1. На больших объемах XML (если файл, допустим, 2 Гб) обработка может зависать, т.к. файл (см. фрагмент кода 1) передается с клиента на сервер для обработки.

2. Не использованы современные парсеры, а использованы примитивные методы платформы 1С 8 Новый ЧтениеXML  для "построчного" анализа кода. В данном случае изначально представлялись файлы с ошибками (специально не соответствовали формату XML по спецификации 1.0 - отсутствующие теги и прочее), и даже возникала необходимость предварительной обработки таких текстов. Хорошо, потом данную ошибку устранили в источнике на базе битрикса.

3. Нет индикатора процесса, что сильно бы усложнило задачу, ведь потребовалось бы периодическое возвращение на клиент с потерей всех серверных результатов. 

Ниже привожу фрагмент кода главной процедуры:

&НаКлиенте
Процедура ЗагрузитьВсе(Команда)
	
	Если НЕ ПроверитьЗаполнение() Тогда
		Возврат;
	КонецЕсли;
	
	Попытка		
		Лог = Новый ТекстовыйДокумент;
		Лог.ИспользуемоеИмяФайла = Объект.ПутьЛог;
		Лог.ДобавитьСтроку("--> Начали лог загрузки "+ТекущаяДата() );
		Лог.Записать(Лог.ИспользуемоеИмяФайла);		
		Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(Объект.ПутьФайлХМЛ), ЭтаФорма.УникальныйИдентификатор);
		СписокВЛог = Новый СписокЗначений; // Сообщения сервера
		СтруктКол = Неопределено;
		ПрочитатьХМЛНаСервере(Адрес, Объект.ФиксироватьТранзакцию, Объект.ВидНоменклатурыТовар, Объект.ВидНоменклатурыУслуга, СтруктКол, СписокВЛог, Объект.Организация, Объект.ВидДоговора); // Вызываем для оптимальной работы без контекста формы
		
		Если СписокВЛог = Неопределено Тогда
			ВызватьИсключение("Была фатальная ошибка на сервере"); // Дальше общий обработчик
		Иначе
			Для Каждого Стр Из СписокВЛог Цикл
				Лог.ДобавитьСтроку(Стр.Значение);
			КонецЦикла;	
		КонецЕсли;
		
		Лог.Записать(Лог.ИспользуемоеИмяФайла);
	Исключение
		Инфо = ИнформацияОбОшибке();
		ТекстОшибок = ПолучитьВсеОписаниеОшибокНаКлиентеНаСервере(Инфо);
		СообщитьНаКлиентеНаСервере(ТекстОшибок);		
		
		Если СписокВЛог <> Неопределено Тогда
			Для Каждого СтрокаЛога Из СписокВЛог Цикл
				Лог.ДобавитьСтроку(СтрокаЛога.Значение);
			КонецЦикла;	
		КонецЕсли;
		
		Лог.ДобавитьСтроку(ТекстОшибок); // Ситуация, когда лог не может создаться/сохраниться		
		Лог.Записать(Лог.ИспользуемоеИмяФайла);	
		
		Возврат;
		
	КонецПопытки;
	Лог.Записать(Лог.ИспользуемоеИмяФайла);	
	
	// Нормально завершение работы загрузки
	Если СтруктКол <> Неопределено Тогда
		Лог.ДобавитьСтроку("--> Закончили чтение XML в 1С в "+ТекущаяДата() );
		Лог.ДобавитьСтроку("");		
		Лог.ДобавитьСтроку("--> Загружено: Номенклатуры "+ СтруктКол.КолНом+  " шт");
		Лог.ДобавитьСтроку("--> Загружено: Контрагентов "+ СтруктКол.КолКон+  " шт");
		Лог.ДобавитьСтроку("--> Загружено: Договоров    "+ СтруктКол.КолДог+  " шт");
		Лог.ДобавитьСтроку("--> Загружено: Счетов       "+ СтруктКол.КолСчет+ " шт");
	КонецЕсли;
	Лог.Записать(Лог.ИспользуемоеИмяФайла);	
	СообщитьНаКлиентеНаСервере("ОК");
КонецПроцедуры 

Фрагмент кода 1 - главная процедура чтения.

 

Для "парсинга" тегов использовал унифицированные процедуры приведеннные ниже. Сами алгоритмы создания контрагентов, договоров, Номенклтуры не представляют сложности и аналогичны как в обработка в толстом клинете

&НаСервереБезКонтекста
Процедура ЧтениеИСозданиеКонтрагентовНаСервере(СтруктПар)
	НомСтр = Новый Структура;	
	// Чтение тегов <Элемент>...</Элемент> У Номенклатуры
	Пока СтруктПар.Чтение.Прочитать() Цикл
		ИмяУзла  = СтруктПар.Чтение.Имя;
		ТипУзла  = СтруктПар.Чтение.ТипУзла;
		ЗначУзла = СтруктПар.Чтение.Значение;
		
		Если ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
			Если ИмяУзла = "Контрагенты" Тогда
				Возврат;			
			ИначеЕсли ИмяУзла = "Элемент" Тогда				
				НайтиСоздатьКонтрагента(НомСтр, СтруктПар);
				НомСтр = Новый Структура; // Очищается Все
				Продолжить; // Читаем следующий элемент у Номенклатуры
			КонецЕсли;
		КонецЕсли; // Если Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда...	
		
		// Заполняем данные для Нового элемента
		Если ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
			Если ИмяУзла = "Элемент" Тогда
				Продолжить;
			Иначе
				СохрИмяУзла = ИмяУзла;
			КонецЕсли;
		ИначеЕсли ТипУзла = ТипУзлаXML.Текст Тогда						
			НомСтр.Вставить(СохрИмяУзла, ЗначУзла); // // Читаем все Теги номенклатуры что есть во входном файле.
		КонецЕсли; // Если Чтение.ТипУзла =...	
	КонецЦикла;	// Пока Чтение.Прочитать()...
	
КонецПроцедуры	

Фрагмент кода 2 - унифицированный алгоритм разбора тегов файла XML.

XML Обмен данными Бухгалтерия предприятия 3.0 тонкий клиент обработка загрузка протокол ошибок коррекция ошибок ведение протокола ошибок клиент сервер обмен XML битрикс

См. также

SALE! 15%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 22572 руб.

12.06.2017    134984    721    291    

388

SALE! 20%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

34650 27720 руб.

15.04.2019    68449    180    138    

111

SALE! 20%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Предлагаем приобрести готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

43450 34760 руб.

03.12.2020    34182    80    58    

78

SALE! 10%

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 25200 руб.

23.07.2020    46322    196    64    

158

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9217    9    8    

10

SALE! 10%

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.223.x) и БП 3.0 (3.0.149.x). Правила подходят для версии ПРОФ и КОРП.

28000 25200 руб.

15.12.2021    20266    132    38    

90

SALE! 10%

Перенос данных из БП 3.0 в УНФ 3.0 / УНФ 1.6. Переносятся остатки, документы и справочная информация

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

В продаже с 2018г. | Воспользовались более 41 предприятия! | Правила конвертации (КД 2) для переноса данных из БП 3 в УНФ | Переносятся все виды документов, начальные остатки и вся возможная справочная информация | Есть фильтр по организациям | Оперативно обновляем на новые релизы | Оказываем техподдержку | В комплект файлов входит инструкция, авторская версия обработки "Универсальный обмен...", актуальные правила переноса данных и архив старых версий переноса | Учет в БП 3 должен быть корректным, некорректные данные не переносятся | Можно бесплатно проверить на вашем сервере до покупки!

50722 45650 руб.

10.07.2018    67460    41    122    

46

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 11.12.2023, версия 9.5 - 9.9)

13200 руб.

20.11.2015    150760    365    375    

501
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. dima_home 238 02.06.15 06:52 Сейчас в теме
Всегда парсил XML только на клиенте, а лишь в момент создания конечных объектов (каждого по отдельности) передавал на сервер структуру объекта. Этот принцип также легко позволяет решить вопрос с отражением состояния процесса загрузки XML.
jobkostya1c_ERP; +1 Ответить
2. jobkostya1c_ERP 100 02.06.15 18:29 Сейчас в теме
(1) dima_home, благодарю за дельное замечание. Мне просто показалось что парсинг XML это довольно затратная процедура по ресурсам ПК и решил все делать на сервере. Теперь понимаю, что файлы редко бывают очень большого размера, а вот их количество обычно большое.
Плюс обработке на сервере можно сделать автоматическую загрузку по расписанию.
3. Гость 16.06.15 17:55
В каком формате данная обработка выгружает номенклатуру?
4. jobkostya1c_ERP 100 17.06.15 13:54 Сейчас в теме
(3) Гость, забыл на данном ресурсе выложить по задаче. Если что для свободного скачивания доступен тут на 1Слансере
Также публикую формат здесь. Формат на тестовых данных БП 3.0 (демо) чисто для примера. В реальных задачах его допиливать и допиливать.
<?xml version="1.0" encoding="UTF-8"?>
<Exchange>
<Номенклатура>
	<Элемент>
		<Код>БП-00000003</Код>
		<Наименование>Тестовый товар , зведен 11.02.  в 16.41</Наименование>
		<НаименованиеПолное>Тестовый товар , зведен 11.02.  в 16.41</НаименованиеПолное>
		<ПризнакГруппы>Нет</ПризнакГруппы>
		<Родитель/>
		<Комментарий/>
		<Артикул/>
		<ЕдиницаИзмерения>шт</ЕдиницаИзмерения>
		<СтавкаНДС>18%</СтавкаНДС>
		<Услуга>Да</Услуга>
	</Элемент>
	<Элемент>
		<Код>БП-00000001</Код>
		<Наименование>Тетовый товар их бухгалтер</Наименование>
		<НаименованиеПолное>Тетовый товар их бухгалтер</НаименованиеПолное>
		<ПризнакГруппы>Нет</ПризнакГруппы>
		<Родитель/>
		<Комментарий/>
		<Артикул/>
		<ЕдиницаИзмерения>шт</ЕдиницаИзмерения>
		<СтавкаНДС>18%</СтавкаНДС>
		<Услуга>Нет</Услуга>
	</Элемент>
</Номенклатура>
<Контрагенты>
	<Элемент>
		<Код>00-000050</Код>
		<Наименование>Торговый дом "Комплексный"</Наименование>
		<НаименованиеПолное>ЗАО "Торговый дом Комплексный"</НаименованиеПолное>
		<ПризнакГруппы>Нет</ПризнакГруппы>
		<Родитель>00-000046</Родитель>
		<ЮридическоеФизическоеЛицо>Юридическое лицо</ЮридическоеФизическоеЛицо>
		<ИНН>0056123412</ИНН>
		<КПП>56789</КПП>
		<КодПоОКПО/>
		<ОсновнойБанковскийСчетКод>000000057</ОсновнойБанковскийСчет­Код>
		<ОсновнойБанковскийСчетНомерСчета>40702810000000089945</Осно­внойБанковскийСчетНомерСчета>
		<ОсновнойБанковскийСчетБанкНаименование>ОАО БАНК ВТБ</ОсновнойБанковскийСчетБанкНаименование>
		<ОсновнойБанковскийСчетБанкКод>044525187</ОсновнойБанковский­СчетБанкКод>
		<ОсновнойБанковскийСчетБанкКоррСчет>30101810700000000187</Ос­новнойБанковскийСчетБанкКоррСчет>
		<ОсновнойБанковскийСчетБанкАдрес/>
		<ОсновнойДоговорКонтрагентаКод>000000051</ОсновнойДоговорКон­трагентаКод>
		<ОсновнойДоговорКонтрагентаНаименование>Основной договор</ОсновнойДоговорКонтрагентаНаименование>
	</Элемент>
</Контрагенты>
<Договора>
	<Элемент>
		<Код>00-000024</Код>
		<Наименование>3 от 01.04.2013</Наименование>
		<ПризнакГруппы>Нет</ПризнакГруппы>
		<Родитель/>
		<КонтрагентКод>00-000028</КонтрагентКод>
	</Элемент>
</Договора>
<Счета>
	<Элемент>
		<Номер>ТД00-000001</Номер>
		<Дата>24.01.2013 12:00:00</Дата>
		<Проведен>Да</Проведен>
		<ВалютаДокумента>руб.</ВалютаДокумента>
		<СуммаВключаетНДС>Да</СуммаВключаетНДС>
		<СуммаДокумента>136 500</СуммаДокумента>
		<СтатусОплаты>Не оплачен</СтатусОплаты>
		<ДокументБезНДС>Нет</ДокументБезНДС>
		<ТипЦен/>
	</Элемент>
</Счета>
</Exchange>
Показать
Прикрепленные файлы:
Exchange исправленный.xml
5. jobkostya1c_ERP 100 27.11.15 10:12 Сейчас в теме
По обработке!!! Опубликовал с ошибкой пример ВХОДНОГО файла XML (так первоначально представил заказчик). Ниже образец, который открывается в любом редакторе XML.
Информация потенциальным заказчикам (пошли массовые вопросы в личку). Эта задача под конкретный формат под конкретную конфигурацию БП 3.0, но доработки в т.ч. для УТ 11.1 и последние релизы БП 3.0 минимальны. Формат ХМЛ приведен выше. Больше интересен ваш входной формат XML-файла. В задачу программиста 1С НЕ входит знание особенностей функционирования тот или иной веб-системы, а также знания языков php, HTML на уровне веб-дизайнера. Эти вещи должны согласовываться письменно либо сразу после тестов писать ТЗ на изменение стандартного функционала по обмену с 1С-Битрикс! Все задачи по обмену программистом 1С решаются на стороне 1С!
Насчет оценки трудоемкости по обмену есть утилита xsd.exe для генерации XSD-схемы по входному XML-файлу. Запускается из командной стройки где в качестве одного из параметров полное имя входного файла xml. Описание содержит полный состав, структуру подчиненности и типы данных, содержащихся в XML-файле. Так становится все ясно и понятно какую информацию содержит файл и настолько большая трудоемкость его "распарсить". Дальше уже можно принимать решение или модифицировать стандартные стредства если обмен на основе типовых решений или писать мелкую обработку "с нуля".
Для вышеприведенного примера схема XSD будет выглядеть как показано ниже (файлы прикреплены):
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="Exchange" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <xs:element name="Элемент">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Код" type="xs:string" minOccurs="0" />
        <xs:element name="Наименование" type="xs:string" minOccurs="0" />
        <xs:element name="НаименованиеПолное" type="xs:string" minOccurs="0" />
        <xs:element name="ПризнакГруппы" type="xs:string" minOccurs="0" />
        <xs:element name="Родитель" type="xs:string" minOccurs="0" />
        <xs:element name="Комментарий" type="xs:string" minOccurs="0" />
        <xs:element name="Артикул" type="xs:string" minOccurs="0" />
        <xs:element name="ЕдиницаИзмерения" type="xs:string" minOccurs="0" />
        <xs:element name="СтавкаНДС" type="xs:string" minOccurs="0" />
        <xs:element name="Услуга" type="xs:string" minOccurs="0" />
        <xs:element name="ЮридическоеФизическоеЛицо" type="xs:string" minOccurs="0" />
        <xs:element name="ИНН" type="xs:string" minOccurs="0" />
        <xs:element name="КПП" type="xs:string" minOccurs="0" />
        <xs:element name="КодПоОКПО" type="xs:string" minOccurs="0" />
        <xs:element name="ОсновнойБанковскийСчетКод" type="xs:string" minOccurs="0" />
        <xs:element name="ОсновнойБанковскийСчетНомерСчета" type="xs:string" minOccurs="0" />
        <xs:element name="ОсновнойБанковскийСчетБанкНаименование" type="xs:string" minOccurs="0" />
        <xs:element name="ОсновнойБанковскийСчетБанкКод" type="xs:string" minOccurs="0" />
        <xs:element name="ОсновнойБанковскийСчетБанкКоррСчет" type="xs:string" minOccurs="0" />
        <xs:element name="ОсновнойБанковскийСчетБанкАдрес" type="xs:string" minOccurs="0" />
        <xs:element name="ОсновнойДоговорКонтрагентаКод" type="xs:string" minOccurs="0" />
        <xs:element name="ОсновнойДоговорКонтрагентаНаименование" type="xs:string" minOccurs="0" />
        <xs:element name="КонтрагентКод" type="xs:string" minOccurs="0" />
        <xs:element name="Номер" type="xs:string" minOccurs="0" />
        <xs:element name="Дата" type="xs:string" minOccurs="0" />
        <xs:element name="Проведен" type="xs:string" minOccurs="0" />
        <xs:element name="ВалютаДокумента" type="xs:string" minOccurs="0" />
        <xs:element name="СуммаВключаетНДС" type="xs:string" minOccurs="0" />
        <xs:element name="СуммаДокумента" type="xs:string" minOccurs="0" />
        <xs:element name="СтатусОплаты" type="xs:string" minOccurs="0" />
        <xs:element name="ДокументБезНДС" type="xs:string" minOccurs="0" />
        <xs:element name="ТипЦен" type="xs:string" minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Exchange" msdata:IsDataSet="true" msdata:Locale="en-US">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="Элемент" />
        <xs:element name="Номенклатура">
          <xs:complexType>
            <xs:sequence>
              <xs:element ref="Элемент" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Контрагенты">
          <xs:complexType>
            <xs:sequence>
              <xs:element ref="Элемент" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Договора">
          <xs:complexType>
            <xs:sequence>
              <xs:element ref="Элемент" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Счета">
          <xs:complexType>
            <xs:sequence>
              <xs:element ref="Элемент" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>
Показать


Прикрепленные файлы:
xsd.exe
test.xml
test.xsd
6. jobkostya1c_ERP 100 27.11.15 10:20 Сейчас в теме
Вот другой (правда тоже не очень удачный пример без подчиненных элементов) по генерации схемы XSD где основная информация в артибутах тегов.
Исходный XML-файл:
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
	<Запись ИНН="1112223334" КПП="555501001" ДатаДоговора="2015-09-01T00:00:00" НомерДоговора="75/2015 ТМ" Груз="КГМ" КолТКО="0" СуммаТКО="0" КолКГМ="29860" СуммаКГМ="9555.2" КолПрочие="0" СуммаПрочие="0">Номер записи 1 из 89</Запись>
	<Запись ИНН="1112226666" КПП="666650001" ДатаДоговора="2014-03-22T00:00:00" НомерДоговора="???/2015 ТМ" Груз="КГМ" КолТКО="0" СуммаТКО="0" КолКГМ="1340" СуммаКГМ="505.98" КолПрочие="0" СуммаПрочие="0">Номер записи 2 из 89</Запись>	
	<Запись ИНН="1112227777" КПП="777750001" ДатаДоговора="0001-01-01T00:00:00" НомерДоговора="" Груз="КГМ" КолТКО="0" СуммаТКО="0" КолКГМ="1620" СуммаКГМ="0" КолПрочие="0" СуммаПрочие="0">Номер записи 89 из 89</Запись>
</ROOT>

Схема XSD:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="ROOT" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <xs:element name="ROOT" msdata:IsDataSet="true" msdata:Locale="en-US">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="Запись" nillable="true">
          <xs:complexType>
            <xs:simpleContent msdata:ColumnName="Запись_Text" msdata:Ordinal="11">
              <xs:extension base="xs:string">
                <xs:attribute name="ИНН" type="xs:string" />
                <xs:attribute name="КПП" type="xs:string" />
                <xs:attribute name="ДатаДоговора" type="xs:string" />
                <xs:attribute name="НомерДоговора" type="xs:string" />
                <xs:attribute name="Груз" type="xs:string" />
                <xs:attribute name="КолТКО" type="xs:string" />
                <xs:attribute name="СуммаТКО" type="xs:string" />
                <xs:attribute name="КолКГМ" type="xs:string" />
                <xs:attribute name="СуммаКГМ" type="xs:string" />
                <xs:attribute name="КолПрочие" type="xs:string" />
                <xs:attribute name="СуммаПрочие" type="xs:string" />
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>
Показать

P.S. Подобные схемы не только позволяют упростить анализ, но и увеличить скорость чтения до 10 раз с использованием Фабрики XDTO.
Прикрепленные файлы:
test.xml
test.xsd
GenSCEMA.bat
xsd.exe
Оставьте свое сообщение