Как просмотреть XML, если отладчик не заходит в функцию?

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

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #37186
      Фото аватараOdineski
      Участник

        Процедура ПередатьСтруктуруВГлавнуюБазу(ОрганизацияПолучатель,МассивДляЗаписи,Отказ) экспорт //Анна Панкратова, ДараСофт 02.11.2023 12:09:24 задача #15445 Начало
        Организация = дсОбщегоНазначенияУП.ПолучитьОрганизациюТекущегоПользователя();
        ПараметрыПодключенияВнесены = ИСТИНА;
        //ПарDSUSDE = DSUSDE_Module.ПолучитьПараметрыПодключенияDSUSDE();
        ПарDSUSDE = НОвый Структура(«ИмяСервера,HTTPЗапрос,Пользователь,Пароль»,
        ОрганизацияПолучатель.ИмяСервера_DSUSDE,
        ОрганизацияПолучатель.ИмяHTTPСервиса_DSUSDE,
        ОрганизацияПолучатель.Пользователь_DSUSDE,
        ОрганизацияПолучатель.Пароль_DSUSDE);
        Если ПарDSUSDE.ИмяСервера = «» Тогда
        ПараметрыПодключенияВнесены = ЛОЖЬ;
        КонецЕсли;
        Если ПарDSUSDE.HTTPЗапрос = «» Тогда
        ПараметрыПодключенияВнесены = ЛОЖЬ;
        КонецЕсли;
        Если НЕ ПараметрыПодключенияВнесены Тогда
        Сообщить(«Не внесены параметры подключения к базе филиала » + ОрганизацияПолучатель+ «. Не удалось передать данные.»);
        Возврат;
        КонецЕсли;

        Попытка
        Соединение = Новый HTTPСоединение(ПарDSUSDE.ИмяСервера,,ПарDSUSDE.Пользователь,ПарDSUSDE.Пароль);
        Исключение
        Сообщить(«Не удалось подключиться к базе филиала » + ОрганизацияПолучатель+ » и передать данные. Проверьте настройки подключения.»);
        Возврат;
        КонецПопытки;

        Запрос = Новый HTTPЗапрос(ПарDSUSDE.HTTPЗапрос);

        ПараметрыЗапроса = Новый Структура();
        ПараметрыЗапроса.Вставить(«ИмяПользователя»,»» + ПараметрыСеанса.ТекущийПользователь);
        ПараметрыЗапроса.Вставить(«Организация»,СокрЛП(Организация.Код));
        ПараметрыЗапроса.Вставить(«ИмяФункции»,»ОбработатьСтруктуру»);
        ПараметрыЗапроса.Вставить(«ИдентификаторИБ»,дсОбщегоНазначенияУП.ПолучитьУникальныйИдентификаторДляКонсолидированнойОтчетности());
        МОбъектов = НОвый Массив();
        Для каждого Эл Из МассивДляЗаписи Цикл
        СтрокаXML = ЗаписатьОбъектВXMLXDTO(Эл);
        МОбъектов.Добавить(СтрокаXML);
        КонецЦикла;

        ПараметрыЗапроса.Вставить(«Параметры»,
        Новый Структура(«Параметр1»,
        Новый Структура(«Имя,Тип,Значение,Порядок»,»МОбъектов»,»Массив»,МОбъектов,1)));
        ЗаписьJSON = Новый ЗаписьJSON;
        ЗаписьJSON.УстановитьСтроку();
        ЗаписатьJSON(ЗаписьJSON, ПараметрыЗапроса);
        СтрокаДляЗапроса = ЗаписьJSON.Закрыть();
        Запрос.УстановитьТелоИзСтроки(СтрокаДляЗапроса);
        Попытка
        Ответ = Соединение.Получить(Запрос);
        Если Ответ.КодСостояния = 200 Тогда
        ЧтениеJSON = Новый ЧтениеJSON;
        ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
        РезультатСоответствие = ПрочитатьJSON(ЧтениеJSON,Истина);
        Для Каждого Строки из РезультатСоответствие Цикл
        Если Строки.Ключ = «РезультатЗапроса» Тогда
        РезультатЗапросаСтроки = Строки.Значение;
        Для Каждого СтрокиП из РезультатЗапросаСтроки Цикл
        Сообщить(СтрокиП);
        КонецЦикла;
        ИначеЕсли Строки.Ключ = «СлужебнаяИнформация» Тогда
        РезультатЗапросаСтроки = Строки.Значение;
        Для Каждого СтрокиП из РезультатЗапросаСтроки Цикл
        Сообщить(СтрокиП);
        КонецЦикла;
        КонецЕсли;
        КонецЦикла;
        ИначеЕсли Ответ.КодСостояния = 401 Тогда
        Сообщить(«Не удалось передать объект в центральную базу» + Символы.ПС +»Неверная авторизация пользователя, проверьте настройки подключения к http сервису (Error 401)»);
        ИначеЕсли Ответ.КодСостояния = 500 Тогда
        Сообщить(«Не удалось передать объект в центральную базу» + Символы.ПС +»Произошла внутренняя ошибка http сервиса (Error 500)»);
        ИначеЕсли Ответ.КодСостояния = 301 Тогда
        Сообщить(«Не удалось передать объект в центральную базу» + Символы.ПС +»Проверьте настройки подключения к http сервису (Error 301)»); //Запрошенный ресурс был перемещен,
        Иначе
        Сообщить(«Не удалось передать объект в центральную базу» + Символы.ПС +»Произошла ошибка http сервиса (Error » + Ответ.КодСостояния + «)»);
        КонецЕсли;
        Исключение
        Сообщить(«Описание ошибки: «+ОписаниеОшибки());
        КонецПопытки;
        КонецПроцедуры
        Как посмотреть xml если отладка почему-то не переходит в функцию

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

          В твоём коде XML формируется в строке:

          Это, скорее всего, вызов внешней функции или процедуры, которая формирует XML из объекта в формате XDTO.

          Если отладчик не заходит в эту функцию, значит:

          — Либо она в другом управляемом модуле, расширении, внешней обработке.
          — Либо это встроенная функция, недоступная для отладки.

          ### Как посмотреть XML в текущей процедуре

          Добавь вывод сформированного XML сразу после вызова ЗаписатьОбъектВXMLXDTO:

          Так ты увидишь в окне сообщений 1С весь сформированный XML по каждому объекту.

          ### Если XML очень большой

          — Можно записать в файл:

          — Или сохранить в временный файл и открыть его.

          ### Если функция ЗаписатьОбъектВXMLXDTO — внешняя или системная

          — Найди её определение в конфигураторе (поиск по тексту).
          — Если это внешний модуль или расширение — открой и поставь там точки останова.
          — Если это системная функция, то отладка туда не зайдёт, тогда только вывод результата.

          ### Итог

          Чтобы увидеть XML, просто выведи его в текущем коде через Сообщить() или запиши в файл сразу после формирования.

          Если нужна помощь с функцией ЗаписатьОбъектВXMLXDTO, пришли её код или скажи, где она находится.

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