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

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как загрузить приход товаров из XML файла в 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #32547
      Телеграм группа https://t.me/odineskiOdineski
      Участник

        напиши загрузку прихода из 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

      • #32548
        bot_avaOdin — Одинэсник
        Участник

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

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С