HelpF.pro

Как автоматически определить ОбъектXDTO или СписокXDTO мы парсим?

Код 1C v 8.2 УП
 &НаСервере
Процедура ДляКаждогоИзСписокXDTO(СписокXDTO, Делегат)

Если ТипЗнч(СписокXDTO) = Тип("СписокXDTO") Тогда

Для Каждого Строка Из СписокXDTO Цикл

Выполнить(Делегат + "(Строка);");

КонецЦикла;

ИначеЕсли ТипЗнч(СписокXDTO) = Тип("ОбъектXDTO") Тогда

Выполнить(Делегат + "("СписокXDTO);");

КонецЕсли;

КонецПроцедуры



Данный код позволяет автоматически определять тип значения, который мы собираемся распарсить, и вызывает процедуру распознавания значения.

Подобный код может пригодиться при парсинге списков, дело в том, что когда в списке всего 1 элемент, то он имеет тип "ОбъектXDTO", а когда больше 1 элемента, то "СписокXDTO".

Применяется вот таким образом:

Код 1C v 8.2 УП
 // Контрагенты
ДляКаждогоИзСписокXDTO(ПолученныеДанные.Clients.Client, "ЗаписатьСтрокуКонтрагент");


где ПолученныеДанные.Clients.Client - это данные, которые надо распарсить, а ЗаписатьСтрокуКонтрагент - процедура следующего вида:


Код 1C v 8.2 УП
 &НаСервере
Процедура ЗаписатьСтрокуКонтрагент(Client)

СтрокаКонтрагент = ТаблицаКонтрагенты.Добавить();
СтрокаКонтрагент.НаименованиеПолное = ?(ТипЗнч(Client.name) = Тип("Строка"), Client.name, "");
СтрокаКонтрагент.ТелефонКонтрагента = ?(ТипЗнч(Client.phone) = Тип("Строка"), Client.phone, "");

КонецПроцедуры

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq82/view/1365.html