Odin | База знаний 1С

Как загрузить прихо...
 

Как загрузить приход товаров из XML файла в 1С?


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

напиши загрузку прихода из xml файла

-<issuance sender="590764707" xmlns="

-

ПоступлениеТоваров

24.02.2025

3000661

Склад опт по ул.Пушкина 37А

5

Резерв Сервисного центра

18

-

DK0050X1

Набор инструментов DK0050X1 (HP1631 / GA5030R) + набор (D-08660)

MAKITA

Инструмент MAKITA

_MAKITA

MAKITA

245.55

252.41

301.52

1

515

-

122D65-7

Редуктор__DHP489

MAKITA

Запчасти MAKITA

_MAKITA

MAKITA

187.16

187.16

224.59

1

393.5



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

Сергей, вот пример кода для загрузки прихода из 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");

Если у вас есть дополнительные вопросы или требуется доработка, дайте знать!



   
ОтветитьЦитата