Вход | Регистрация
 

Ошибка на вызов функции возвращающей массив заказов

Ошибка на вызов функции возвращающей массив заказов
Я
   falselight
 
20.02.20 - 07:45
Функция ПолучитьЗаказыЗаПериод(ИНН) Экспорт
    URIПространстваИмен              = "http://localhost/IB/ws/ClientOrders";;
    ПакетCML                         = ФабрикаXDTO.Пакеты.Получить(URIПространстваИмен);
    ЗаказКлиентаТип                  = ПакетCML.Получить("ClientOrder");
    ЗаказКлиентаXDTO                 = ФабрикаXDTO.Создать(ЗаказКлиентаТип);
    //
    МассивЗаказовКлиентовТип         = ПакетCML.Получить("ArrayClientOrder");
    //
    Запрос                           = Новый Запрос;
    Запрос.Текст                     = "
        |ВЫБРАТЬ
        |    ЗаказПокупателя.Номер                                                                         КАК НомерЗаказа,
        |    ЗаказПокупателя.Дата                                                                         КАК ДатаЗаказа,
        |    ЗаказПокупателя.СостояниеЗаказа                                                             КАК СостояниеЗаказа,
        |    ЗаказПокупателя.СуммаДокумента                                                              КАК СуммаЗаказа,
        |    ВЫБОР
        |        КОГДА ДОБАВИТЬКДАТЕ(ЗаказПокупателя.Дата, ДЕНЬ, ДоговорыКонтрагентов.СрокОплатыПокупателя) < &ТекДата
        |            ТОГДА ИСТИНА
        |        ИНАЧЕ ЛОЖЬ
        |    КОНЕЦ                                                                                         КАК ИндикаторПросрочки,
        |    ЗаказПокупателя.СуммаДокумента - ЕСТЬNULL(ОплатаСчетовИЗаказовОбороты.СуммаОплатыОборот, 0) КАК СуммаДолга
        |ПОМЕСТИТЬ ВТ_ОплатыЗаказаКлиента
        |ИЗ
        |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
        |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
        |        ПО ЗаказПокупателя.Контрагент = ДоговорыКонтрагентов.Владелец
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОплатаСчетовИЗаказов.Обороты(, &ТекДата, , ) КАК ОплатаСчетовИЗаказовОбороты
        |        ПО ЗаказПокупателя.Ссылка = ОплатаСчетовИЗаказовОбороты.СчетНаОплату
        |ГДЕ
        |    ЗаказПокупателя.Контрагент.ИНН = &ИНН
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТ_ОплатыЗаказаКлиента.НомерЗаказа КАК НомерЗаказа,
        |    ВТ_ОплатыЗаказаКлиента.ДатаЗаказа КАК ДатаЗаказа,
        |    ВТ_ОплатыЗаказаКлиента.СостояниеЗаказа КАК СостояниеЗаказа,
        |    ВТ_ОплатыЗаказаКлиента.СуммаЗаказа КАК СуммаЗаказа,
        |    ВТ_ОплатыЗаказаКлиента.СуммаДолга КАК СуммаДолга,
        |    ВТ_ОплатыЗаказаКлиента.ИндикаторПросрочки КАК ИндикаторПросрочки
        |ИЗ
        |    ВТ_ОплатыЗаказаКлиента КАК ВТ_ОплатыЗаказаКлиента";
    Запрос.УстановитьПараметр("ИНН",     ИНН);
    Запрос.УстановитьПараметр("ТекДата", ТекущаяДата());
    Результат = Запрос.Выполнить();
    Если Результат.Пустой() Тогда
        Возврат "0";
    КонецЕсли;
    //
    МассивЗаказовПокупателейXDTO = ФабрикаXDTO.Создать(МассивЗаказовКлиентовТип);
    //
    Выборка    = Результат.Выбрать();
    Пока Выборка.Следующий() Цикл
        ЗаказКлиентаXDTO.OrderNumber     = Выборка.НомерЗаказа;
        ЗаказКлиентаXDTO.OrderData       = Выборка.ДатаЗаказа;
        ЗаказКлиентаXDTO.OrderState      = Выборка.СостояниеЗаказа;
        ЗаказКлиентаXDTO.OrderSum        = Выборка.СуммаЗаказа;
        ЗаказКлиентаXDTO.IndicatorDelays = Выборка.ИндикаторПросрочки;
        ЗаказКлиентаXDTO.AmountDept      = Выборка.СуммаДолга;
        //
        МассивЗаказовПокупателейXDTO.ClientOrder.Добавить(ЗаказКлиентаXDTO);
    КонецЦикла;
    Возврат МассивЗаказовПокупателейXDTO;
    // <-
КонецФункции




Функция вызывается в консольном приложении. Из за чего может выходить вот такая ошибка ?

http://joxi.ru/bmo5Q4kU99ll7A
   falselight
 
1 - 20.02.20 - 08:34
сейчас другая ошибка, видимо в этом цикле

    Выборка    = Результат.Выбрать();
    Пока Выборка.Следующий() Цикл
        ЗаказКлиентаXDTO.OrderNumber     = Выборка.НомерЗаказа; 
        ЗаказКлиентаXDTO.OrderData       = Выборка.ДатаЗаказа;
        ЗаказКлиентаXDTO.OrderState      = Выборка.СостояниеЗаказа;
        ЗаказКлиентаXDTO.OrderSum        = Выборка.СуммаЗаказа;
        ЗаказКлиентаXDTO.IndicatorDelays = Выборка.ИндикаторПросрочки;
        ЗаказКлиентаXDTO.AmountDept      = Выборка.СуммаДолга;
        //

        МассивЗаказовПокупателейXDTO.ClientOrder.Добавить(ЗаказКлиентаXDTO);
    КонецЦикла;
    Возврат МассивЗаказовПокупателейXDTO;
    // <-

КонецФункции


Ошибка при установке значения атрибута контекста (OrderState)по причине:
{ОбщийМодуль.ЛичныйКабинетДилераСервер.Модуль(58)}: Ошибка при установке значения атрибута контекста (OrderState)
по причине:
   hhhh
 
2 - 20.02.20 - 08:39
(1) наверно типы не соответствуют. Какой тип у Выборка.СостояниеЗаказа ?
   falselight
 
3 - 20.02.20 - 08:46
(2)

СправочникСсылка.СостоянияЗаказовПокупателей, СправочникСсылка.СостоянияЗаказНарядов
А ЗаказКлиентаXDTO.OrderState 

string (http://www.w3.org/2001/XMLSchema)
   falselight
 
4 - 20.02.20 - 08:47
(2) Наверное их в ЗаказКлиентаXDTO все как строки помещать с преобразованием.
   falselight
 
5 - 20.02.20 - 08:53
Привел все к строковому типу.

Сейчас идет такая ошибка на стороне консольного приложения, -
ОбщийМодуль.ЛичныйКабинетДилераСервер.Модуль(64)}: Значение не является значением объектного типа (Добавить)

видимо на строке

        МассивЗаказовПокупателейXDTO.ClientOrder.Добавить(ЗаказКлиентаXDTO);
    КонецЦикла;
    Возврат МассивЗаказовПокупателейXDTO;
    // <-

КонецФункции


Что тут может быть не так?
   falselight
 
6 - 20.02.20 - 08:55
Если ошибка тут         МассивЗаказовПокупателейXDTO.ClientOrder.Добавить(ЗаказКлиентаXDTO);

то
    МассивЗаказовКлиентовТип     = ПакетCML.Получить("ArrayClientOrder");
    МассивЗаказовПокупателейXDTO = ФабрикаXDTO.Создать(МассивЗаказовКлиентовТип);

http://joxi.ru/E2p654VcaajJXr

все же вроде правильно ?
   falselight
 
7 - 20.02.20 - 08:56
   falselight
 
8 - 20.02.20 - 09:00
Сейчас такой исходный код.
Почему на строке, МассивЗаказовПокупателейXDTO. Добавить(
ошщибка?


    //

    URIПространстваИмен          = "http://localhost/IB/ws/ClientOrders";;
    ПакетCML                     = ФабрикаXDTO.Пакеты.Получить(URIПространстваИмен);
    //                            
    МассивЗаказовКлиентовТип     = ПакетCML.Получить("ArrayClientOrder");
    МассивЗаказовПокупателейXDTO = ФабрикаXDTO.Создать(МассивЗаказовКлиентовТип);
    //
    ЗаказКлиентаТип              = ПакетCML.Получить("ClientOrder");
    //
    Выборка = Результат.Выбрать();
    Пока Выборка.Следующий() Цикл
        ЗаказКлиентаXDTO                 = ФабрикаXDTO.Создать(ЗаказКлиентаТип);
        //
        ЗаказКлиентаXDTO.OrderNumber     = СТРОКА(Выборка.НомерЗаказа);
        ЗаказКлиентаXDTO.OrderData       = СТРОКА(Выборка.ДатаЗаказа);
        ЗаказКлиентаXDTO.OrderState      = СТРОКА(Выборка.СостояниеЗаказа);
        ЗаказКлиентаXDTO.OrderSum        = СТРОКА(Выборка.СуммаЗаказа);
        ЗаказКлиентаXDTO.IndicatorDelays = СТРОКА(Выборка.ИндикаторПросрочки);
        ЗаказКлиентаXDTO.AmountDept      = СТРОКА(Выборка.СуммаДолга);
        //
        МассивЗаказовПокупателейXDTO.ClientOrder.Добавить(ЗаказКлиентаXDTO);
    КонецЦикла;
    Возврат МассивЗаказовПокупателейXDTO;
    // <-
КонецФункции
//
   falselight
 
9 - 20.02.20 - 09:08
Должно же срабатывать добавление в массив ?
   falselight
 
10 - 20.02.20 - 09:18
Подскажите что я не так сделал? Почему на этой строке ошибка?

МассивЗаказовПокупателейXDTO. Добавить(
   falselight
 
11 - 20.02.20 - 09:18
(19) Точнее вот     МассивЗаказовПокупателейXDTO.ClientOrder.Добавить(ЗаказКлиентаXDTO);
   ДенисЧ
 
12 - 20.02.20 - 09:20
"Подскажите что я не так сделал?"

Не ту профессию выбрал.
   falselight
 
13 - 20.02.20 - 09:24
попробовал задать такие значения


http://joxi.ru/MAjgV4GfxxYDxr

=> при этом необходимо указать, что минимальное количество «0», а максимальное количество «-1», это говорит о том, что этот объект будет массивом.

Возможно в этом дело.
   falselight
 
14 - 20.02.20 - 10:08
http://joxi.ru/D2PlR54CkkW0X2

Другая ошибка

теперь другая ошибка: XmlException: Непредусмотренный тип узла Element. Метод ReadElementString может быть вызван только для элементов с простым или пустым содержимым., строка 8, позиция 6.

Подскажите, из за чего эта ошибка?
   vicof
 
15 - 20.02.20 - 10:13
У элемента сложное или непустое содержимое, это же очевидно
   falselight
 
16 - 20.02.20 - 10:16
(15) А где смотреть? Вот весь код

    Запрос                           = Новый Запрос;
    Запрос.Текст                     = "
        |ВЫБРАТЬ
        |    ЗаказПокупателя.Номер                                                                         КАК НомерЗаказа,
        |    ЗаказПокупателя.Дата                                                                         КАК ДатаЗаказа,
        |    ЗаказПокупателя.СостояниеЗаказа                                                             КАК СостояниеЗаказа,
        |    ЗаказПокупателя.СуммаДокумента                                                              КАК СуммаЗаказа,
        |    ВЫБОР
        |        КОГДА ДОБАВИТЬКДАТЕ(ЗаказПокупателя.Дата, ДЕНЬ, ДоговорыКонтрагентов.СрокОплатыПокупателя) < &ТекДата
        |            ТОГДА ИСТИНА
        |        ИНАЧЕ ЛОЖЬ
        |    КОНЕЦ                                                                                         КАК ИндикаторПросрочки,
        |    ЗаказПокупателя.СуммаДокумента - ЕСТЬNULL(ОплатаСчетовИЗаказовОбороты.СуммаОплатыОборот, 0) КАК СуммаДолга
        |ПОМЕСТИТЬ ВТ_ОплатыЗаказаКлиента
        |ИЗ
        |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
        |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
        |        ПО ЗаказПокупателя.Контрагент = ДоговорыКонтрагентов.Владелец
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОплатаСчетовИЗаказов.Обороты(, &ТекДата, , ) КАК ОплатаСчетовИЗаказовОбороты
        |        ПО ЗаказПокупателя.Ссылка = ОплатаСчетовИЗаказовОбороты.СчетНаОплату
        |ГДЕ
        |    ЗаказПокупателя.Контрагент.ИНН = &ИНН
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТ_ОплатыЗаказаКлиента.НомерЗаказа КАК НомерЗаказа,
        |    ВТ_ОплатыЗаказаКлиента.ДатаЗаказа КАК ДатаЗаказа,
        |    ВТ_ОплатыЗаказаКлиента.СостояниеЗаказа КАК СостояниеЗаказа,
        |    ВТ_ОплатыЗаказаКлиента.СуммаЗаказа КАК СуммаЗаказа,
        |    ВТ_ОплатыЗаказаКлиента.СуммаДолга КАК СуммаДолга,
        |    ВТ_ОплатыЗаказаКлиента.ИндикаторПросрочки КАК ИндикаторПросрочки
        |ИЗ
        |    ВТ_ОплатыЗаказаКлиента КАК ВТ_ОплатыЗаказаКлиента";
    Запрос.УстановитьПараметр("ИНН",     ИНН);
    Запрос.УстановитьПараметр("ТекДата", ТекущаяДата());
    Результат = Запрос.Выполнить();
    Если Результат.Пустой() Тогда
        Возврат "0";
    КонецЕсли;
    //
    URIПространстваИмен          = "http://localhost/IB/ws/ClientOrders";;
    ПакетCML                     = ФабрикаXDTO.Пакеты.Получить(URIПространстваИмен);
    //                            
    МассивЗаказовКлиентовТип     = ПакетCML.Получить("ArrayClientOrder");
    МассивЗаказовПокупателейXDTO = ФабрикаXDTO.Создать(МассивЗаказовКлиентовТип);
    //
    ЗаказКлиентаТип              = ПакетCML.Получить("ClientOrder");
    //
    Выборка = Результат.Выбрать();
    Пока Выборка.Следующий() Цикл
        ЗаказКлиентаXDTO                 = ФабрикаXDTO.Создать(ЗаказКлиентаТип);
        //
        ЗаказКлиентаXDTO.OrderNumber     = СТРОКА(Выборка.НомерЗаказа);
        ЗаказКлиентаXDTO.OrderData       = СТРОКА(Выборка.ДатаЗаказа);
        ЗаказКлиентаXDTO.OrderState      = СТРОКА(Выборка.СостояниеЗаказа);
        ЗаказКлиентаXDTO.OrderSum        = СТРОКА(Выборка.СуммаЗаказа);
        ЗаказКлиентаXDTO.IndicatorDelays = СТРОКА(Выборка.ИндикаторПросрочки);
        ЗаказКлиентаXDTO.AmountDept      = СТРОКА(Выборка.СуммаДолга);
        //
        МассивЗаказовПокупателейXDTO.ClientOrder.Добавить(ЗаказКлиентаXDTO);
    КонецЦикла;
    Возврат МассивЗаказовПокупателейXDTO;
   falselight
 
17 - 20.02.20 - 10:20
XmlException: Непредусмотренный тип узла Element. Метод ReadElementString может быть вызван только для элементов с простым или пустым содержимым., строка 8, позиция 6.

А где эта строка 8 позиция 6 ?

Если код такой (16) Как устранить эту ошибку? Я вроде как все преобразую в строку и все.
   vicof
 
18 - 20.02.20 - 10:22
Нехрен все к строке преобразовывать
   falselight
 
19 - 20.02.20 - 10:30
(18) Что бы не заморачиваться. Слишком много ошибок.
Для упрощения. Я решил все что есть просто преобразовывать в строку, и заполнять поля. Все так же сделал строками.

Перенес код в обработку.

Вот этот массив заполняется без проблем.

        МассивЗаказовПокупателейXDTO.ClientOrder.Добавить(ЗаказКлиентаXDTO);
    КонецЦикла;
    Возврат МассивЗаказовПокупателейXDTO;


Как можно дальше отловить и исправить ошибку?

Если дело не в коде то тогда в чем?
   vicof
 
20 - 20.02.20 - 10:33
(19) Дело в мозгах
   falselight
 
21 - 20.02.20 - 10:35
Живой кто нибудь есть? XDTO кто знает технологию?

Как узнать причину ошибки?

XmlException: Непредусмотренный тип узла Element. Метод ReadElementString может быть вызван только для элементов с простым или пустым содержимым., строка 8, позиция 6.
   vicof
 
22 - 20.02.20 - 10:37
   falselight
 
23 - 20.02.20 - 10:56
(22) Спасибо, но я то это не правлю. Я возвращал строку. Все проходило.
А сейчас при возврате массива с использованием XDTO такие трудности.

Сейчас рассматриваю вариант, как вернуть все одной строкой.

Если элементы строки разделять ; 
а строки ;;

Нормально будет??
   falselight
 
24 - 20.02.20 - 11:50
Строку то вернет.
Почему на возврат массива МассивЗаказовПокупателейXDTO.ClientOrder.Добавить(ЗаказКлиентаXDTO);

эта ошибка XmlException: Непредусмотренный тип узла Element. Метод ReadElementString может быть вызван только для элементов с простым или пустым содержимым., строка 8, позиция 6.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.