Имя: Пароль:
1C
 
Ошибка на вызов функции возвращающей массив заказов
,
0 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
1 falselight
 
20.02.20
08:34
сейчас другая ошибка, видимо в этом цикле

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


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

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

А ЗаказКлиентаXDTO.OrderState

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

Сейчас идет такая ошибка на стороне консольного приложения, -

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

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

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


Что тут может быть не так?
6 falselight
 
20.02.20
08:55
Если ошибка тут         МассивЗаказовПокупателейXDTO.ClientOrder.Добавить(ЗаказКлиентаXDTO);
то
    МассивЗаказовКлиентовТип     = ПакетCML.Получить("ArrayClientOrder");
    МассивЗаказовПокупателейXDTO = ФабрикаXDTO.Создать(МассивЗаказовКлиентовТип);

http://joxi.ru/E2p654VcaajJXr

все же вроде правильно ?
7 falselight
 
20.02.20
08:56
8 falselight
 
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;
    // <-
КонецФункции
//
9 falselight
 
20.02.20
09:08
Должно же срабатывать добавление в массив ?
10 falselight
 
20.02.20
09:18
Подскажите что я не так сделал? Почему на этой строке ошибка?

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

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


http://joxi.ru/MAjgV4GfxxYDxr

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

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

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

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

Подскажите, из за чего эта ошибка?
15 vicof
 
20.02.20
10:13
У элемента сложное или непустое содержимое, это же очевидно
16 falselight
 
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;
17 falselight
 
20.02.20
10:20
XmlException: Непредусмотренный тип узла Element. Метод ReadElementString может быть вызван только для элементов с простым или пустым содержимым., строка 8, позиция 6.

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

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

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

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

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


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

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

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

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

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

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

Нормально будет??
24 falselight
 
20.02.20
11:50
Строку то вернет.

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

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