Имя: Пароль:
1C
1С v8
ОбъектXDTO в реквизитах
0 Klesk666
 
01.11.13
13:27
Есть веб сервис, который с сайта получает заказы

но в пустых полях , которые незаполнены на сайте, появляется выражение ОбъектXDTO

Если ТипЗнч(OrderHeader) = Тип("ОбъектXDTO") Тогда
        РазобратьОбъектXDTO(OrderHeader, ШапкаЗаказа);
    КонецЕсли;



Процедура РазобратьОбъектXDTO(ОбъектXDTO, ТаблицаЗаказов)
    
    Последовательность = ОбъектXDTO.Последовательность();
    Количество = Последовательность.Количество()-1;
    Для инд = 0 По Количество Цикл
        
        Значение = Последовательность.ПолучитьЗначение(инд);
        
        Если ТипЗнч(Значение) = Тип("ОбъектXDTO") Тогда
            
            //Получаем свойства последовательности
            Свойства = Значение.Свойства();
            Для Каждого Свойство ИЗ Свойства Цикл
                Если Свойство.Имя = "item" Тогда //в этом свойстве хранятся данные о заказе
                    
                    НоваяСтрока = ТаблицаЗаказов.Добавить();
                    
                    //Получаем список объектов для данного заказа (номер, дата, статус)
                    СписокОбъектовЗначений = Значение.ПолучитьСписок(Свойство);                    
                    Для Индекс = 0 По СписокОбъектовЗначений.Количество()-1 Цикл
                        
                        //позиционируемся на очередном свойстве заказа
                        ТекОбъектЗначение = СписокОбъектовЗначений.ПолучитьXDTO(Индекс);
                        
                        ТекКлюч = ТекОбъектЗначение.Получить("Key");                        
                        //извлекаем значение
                        ТекЗначение = ТекОбъектЗначение.Получить("Value");
                        
                        //МассивСвойств.Добавить("" + ТекЗначение + ТипЗнч(ТекЗначение));
                        
                        НоваяСтрока[ТекКлюч] = ТекЗначение;
                    КонецЦикла;
                    
                КонецЕсли;
                
            КонецЦикла;
            
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

подскажите как поправить это, пытался
вставить

    
    Для Каждого РеквизитШапки ИЗ ШапкаЗаказа Цикл
        Если ТипЗнч(РеквизитШапки)= Тип("Строка")ТОГДА
            РеквизитШапки=СтрЗаменить(РеквизитШапки,"ОбъектXDTO","");
        КонецЕсли;
    КонецЦикла;

но без результатно
1 Serginio1
 
01.11.13
14:13
В отладчике посмотри что это за ОбъектXDTO.
Можешь вызвать РазобратьОбъектXDTO рекурсивно.
2 Klesk666
 
01.11.13
14:24
к сожалению отладка не работает, так как все на сервере апачи, который на другом сервере
3 Serginio1
 
01.11.13
14:31
Я имел ввиду отладка в 1С. Посмотри в отладчике что из себя представляет твой ОбъектXDTO
4 Klesk666
 
01.11.13
14:39
я и говорю что не работает
5 Klesk666
 
01.11.13
14:44
Для Каждого РеквизитШапки ИЗ ШапкаЗаказа Цикл
        Если ТипЗнч(РеквизитШапки)= Тип("Строка")ТОГДА
            ЗаписьВлог(РеквизитШапки);
            РеквизитШапки=СтрЗаменить(РеквизитШапки,"ОбъектXDTO","");
        КонецЕсли;
    КонецЦикла;

здесь нет ошибки? может я что то не то перебираю?
6 Infsams654
 
01.11.13
14:45
(5) а ШапкаЗаказа - это что ?
7 Klesk666
 
01.11.13
14:48
таблица значений
8 Serginio1
 
01.11.13
14:48
(5) А что должно работать? Ты смотри что записывается в твой реквизит Шапки.Он же у тебя строковый
9 Klesk666
 
01.11.13
14:49
нет, даже не заходит в этот цикл, хотя

ШапкаЗаказа = Новый ТаблицаЗначений;
    ШапкаЗаказа.Колонки.Добавить("ClientSurname"    , Новый ОписаниеТипов("Строка"));
    ШапкаЗаказа.Колонки.Добавить("ClientName"        , Новый ОписаниеТипов("Строка"));
10 Klesk666
 
01.11.13
14:50
или в условие
11 Klesk666
 
01.11.13
14:52
в цикл не заходит, странно
12 Infsams654
 
01.11.13
14:54
(11) а строки в ШапкаЗаказа откуда беруться ?
13 Klesk666
 
01.11.13
14:56
там одна строка
14 Infsams654
 
01.11.13
15:04
(13) если строка есть, то в цикл должно зайти. Другое дело, что РеквизитШапки - это СтрокаТаблицыЗначений, а никак не Тип("Строка")
15 Klesk666
 
01.11.13
15:05
точно, разобрался, спасибо


    Для Каждого КолонкаШапки ИЗ ШапкаЗаказа.Колонки Цикл
             Если ТипЗнч(ШапкаЗаказа[0][КолонкаШапки.Имя])= Тип("Строка")ТОГДА
              ШапкаЗаказа[0][КолонкаШапки.Имя]=СтрЗаменить(ШапкаЗаказа[0][КолонкаШапки.Имя],"ОбъектXDTO","");
            КонецЕсли;
    КонецЦикла;