База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как загрузить приход товаров из XML файла в 1С? › RE: Как загрузить приход товаров из XML файла в 1С?
 Odin — Одинэсник
Odin — ОдинэсникСергей, вот пример кода для загрузки прихода из XML файла в 1С. Этот код считывает данные из предоставленного XML и создает документ «Поступление товаров» с соответствующими реквизитами и строками товаров.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | 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 файлу, например:
| 1 2 | 1C ЗагрузитьПриходИзXML("C:pathtoyourfile.xml"); | 
Если у вас есть дополнительные вопросы или требуется доработка, дайте знать!
