База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как загрузить приход товаров из XML файла в 1С? › RE: Как загрузить приход товаров из XML файла в 1С?
Сергей, вот пример кода для загрузки прихода из XML файла в 1С. Этот код считывает данные из предоставленного XML и создает документ «Поступление товаров» с соответствующими реквизитами и строками товаров.
1C
&НаСервереФункция ЗагрузитьПриходИзXML(ПутьКФайлу)
// Создаем объект для чтения XML
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ПутьКФайлу);
// Создаем новый документ "Поступление товаров"
ДокументПрихода = Документы.ПоступлениеТоваров.СоздатьДокумент();
// Читаем корневой элемент
ЧтениеXML.Прочитать();
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "issuance" Тогда
// Читаем данные документа
ЧтениеXML.Прочитать();
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "Dokument" Тогда
// Читаем реквизиты документа
Пока ЧтениеXML.Прочитать() Цикл
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Если ЧтениеXML.Имя = "Vid" Тогда
ДокументПрихода.Вид = ЧтениеXML.ЧитатьТекст();
КонецЕсли;
Если ЧтениеXML.Имя = "DataDok" Тогда
ДокументПрихода.Дата = ЧтениеXML.ЧитатьТекст();
КонецЕсли;
Если ЧтениеXML.Имя = "NomerDok" Тогда
ДокументПрихода.Номер = ЧтениеXML.ЧитатьТекст();
КонецЕсли;
Если ЧтениеXML.Имя = "SkladOtpravitel" Тогда
ДокументПрихода.СкладОтправитель = ЧтениеXML.ЧитатьТекст();
КонецЕсли;
Если ЧтениеXML.Имя = "SkladPoluchatel" Тогда
ДокументПрихода.СкладПолучатель = ЧтениеXML.ЧитатьТекст();
КонецЕсли;
КонецЕсли;
Если ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
Если ЧтениеXML.Имя = "Dokument" Тогда
// Переходим к чтению товаров
Прервать;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
// Читаем товары
Пока ЧтениеXML.Прочитать() Цикл
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "Tovar" Тогда
// Создаем строку товара
СтрокаТовара = ДокументПрихода.Товары.Добавить();
Пока ЧтениеXML.Прочитать() Цикл
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Если ЧтениеXML.Имя = "Tovar_Artikul" Тогда
СтрокаТовара.Артикул = ЧтениеXML.ЧитатьТекст();
КонецЕсли;
Если ЧтениеXML.Имя = "Tovar_Name" Тогда
СтрокаТовара.Наименование = ЧтениеXML.ЧитатьТекст();
КонецЕсли;
Если ЧтениеXML.Имя = "Tovar_Kol" Тогда
СтрокаТовара.Количество = Число(ЧтениеXML.ЧитатьТекст());
КонецЕсли;
Если ЧтениеXML.Имя = "Tovar_CenaRealizaciiUchetnaya" Тогда
СтрокаТовара.Цена = Число(ЧтениеXML.ЧитатьТекст());
КонецЕсли;
КонецЕсли;
Если ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
Если ЧтениеXML.Имя = "Tovar" Тогда
Прервать;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЕсли;
// Закрываем документ
ДокументПрихода.Записать();
ЧтениеXML.Закрыть();
КонецФункции
### Описание кода:
1. **Чтение XML**: Используется объект `ЧтениеXML` для открытия и чтения данных из файла.
2. **Создание документа**: Создается новый документ «Поступление товаров».
3. **Чтение реквизитов**: Извлекаются реквизиты документа из XML.
4. **Чтение товаров**: Для каждого товара создается строка в документе, где заполняются необходимые поля.
5. **Запись документа**: После заполнения всех данных документ записывается в базу.
Этот код можно вызывать, передавая путь к XML файлу, например:
1C
ЗагрузитьПриходИзXML("C:pathtoyourfile.xml");
Если у вас есть дополнительные вопросы или требуется доработка, дайте знать!