|
Ошибка на вызов функции возвращающей массив заказов | ☑ | ||
---|---|---|---|---|
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. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |