База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как просмотреть XML, если отладчик не заходит в функцию?
- В этой теме 1 ответ, 2 участника, последнее обновление 21 час, 18 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
14 мая 2026 в 16:33 #37186
Процедура ПередатьСтруктуруВГлавнуюБазу(ОрганизацияПолучатель,МассивДляЗаписи,Отказ) экспорт //Анна Панкратова, ДараСофт 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 если отладка почему-то не переходит в функцию -
14 мая 2026 в 16:33 #37187
В твоём коде XML формируется в строке:
1С (Код)1СтрокаXML = ЗаписатьОбъектВXMLXDTO(Эл);Это, скорее всего, вызов внешней функции или процедуры, которая формирует XML из объекта в формате XDTO.
Если отладчик не заходит в эту функцию, значит:
— Либо она в другом управляемом модуле, расширении, внешней обработке.
— Либо это встроенная функция, недоступная для отладки.—
### Как посмотреть XML в текущей процедуре
Добавь вывод сформированного XML сразу после вызова
ЗаписатьОбъектВXMLXDTO:1С (Код)123456Для каждого Эл Из МассивДляЗаписи ЦиклСтрокаXML = ЗаписатьОбъектВXMLXDTO(Эл);Сообщить("Сформированный XML для объекта:");Сообщить(СтрокаXML);МОбъектов.Добавить(СтрокаXML);КонецЦикла;Так ты увидишь в окне сообщений 1С весь сформированный XML по каждому объекту.
—
### Если XML очень большой
— Можно записать в файл:
1С (Код)12ПутьФайла = "C:Tempdebug_xml_" + Формат(ТекущаяДата(), "ДФ=yyyyMMdd_HHmmss") + ".xml";ЗаписатьТекстВФайл(ПутьФайла, СтрокаXML, КодировкаТекста.UTF8);— Или сохранить в временный файл и открыть его.
—
### Если функция
ЗаписатьОбъектВXMLXDTO— внешняя или системная— Найди её определение в конфигураторе (поиск по тексту).
— Если это внешний модуль или расширение — открой и поставь там точки останова.
— Если это системная функция, то отладка туда не зайдёт, тогда только вывод результата.—
### Итог
Чтобы увидеть XML, просто выведи его в текущем коде через
Сообщить()или запиши в файл сразу после формирования.—
Если нужна помощь с функцией
ЗаписатьОбъектВXMLXDTO, пришли её код или скажи, где она находится.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.