|
ИС ЭСФ Казахстан - 2 | ☑ | ||
---|---|---|---|---|
0
Вася Теркин
20.04.18
✎
09:46
|
В продолжение https://www.forum.mista.ru/topic.php?id=814278&all=1
Сделал запросец HTTP, хочу список всех ЭСФ за квартал взять. Засылаю в ВыполнитьМетодВебСервиса. Там все отлично проходит, выполняет по концовке HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос); ТекстОтвета = СокрЛП(HTTPОтвет.ПолучитьТелоКакСтроку()); и возвращает ответ. Когда прогоняю через XDTO на выходе не более 1000 значений. А как оттуда следующие тысячи вытаскивать? То есть: СписокХДТО = Обработка.ВернутьСписокЭСФСПортала(Спр.Ссылка,Перечисления.НаправленияЭСФ.Входящий,НачПериода,КонПериода); Для каждого Эл из СписокХДТО Цикл //Сообщить("" + Эл.registrationNumber); Стр = ТЗ.Добавить(); Стр.Дата = Дата(СтрЗаменить(Лев(Эл.inputDate,10),"-","")); Стр.РегНомер = Эл.registrationNumber; Стр.Статус = Эл.invoiceStatus; Стр.Количество = 1; КонецЦикла; так дает только первую тысячу, а у меня много тысяч. |
|||
1
Вася Теркин
20.04.18
✎
09:48
|
В принципе такую функцию сделал
Функция ВернутьСписокЭСФСПортала(ПрофильИСЭСФ, НаправлениеЭСФ = Неопределено, Дата1 = Неопределено, Дата2 = Неопределено) Экспорт Если НаправлениеЭСФ = Неопределено Тогда НаправлениеЭСФ = Перечисления.НаправленияЭСФ.Входящий; КонецЕсли; Если Дата1 = Неопределено Тогда Дата1 = НачалоГода(ТекущаяДата()); КонецЕсли; Если Дата2 = Неопределено Тогда Дата2 = КонецДня(ТекущаяДата()); КонецЕсли; ПараметрыЭСФ = ЭСФСерверПовтИсп.ПолучитьПараметрыЭСФ(); ВерсияИСЭСФ = ПараметрыЭСФ.ВерсияИСЭСФ; ИдентификаторСессии = ЭСФВызовСервера.ОткрытьСессию(ПрофильИСЭСФ, ВерсияИСЭСФ); попытка //Дальше если падает обязательно сессию закрыть; ФабрикаInvoiceInfo = ФабрикаInvoiceInfo_Версия2(); // Фабрика для приема сообщений с секцией CDATA ШаблонЗапроса = ПолучитьМакет("ЗапросСписокЭСФ").ПолучитьТекст(); ЗапросXML = ШаблонЗапроса; ЗапросXML = СтрЗаменить(ЗапросXML, "[INBOUND_OUTBOUND]", ?(НаправлениеЭСФ = Перечисления.НаправленияЭСФ.Входящий,"INBOUND","OUTBOUND")); ЗапросXML = СтрЗаменить(ЗапросXML, "[dateFrom]", Формат(Дата1,"ДФ=yyyy-MM-dd")); ЗапросXML = СтрЗаменить(ЗапросXML, "[dateTo]", Формат(КонецДня(Дата2)+1,"ДФ=yyyy-MM-dd")); ЗапросXML = СтрЗаменить(ЗапросXML, "[sessionId]", ИдентификаторСессии); ОтветXML = ВыполнитьМетодВебСервиса(ЗапросXML, ИмяСервисаInvoiceService(),,ВерсияИСЭСФ); ИнформацияОбОшибке = Неопределено; Если НЕ ЭтоМодульнаяОшибка(ОтветXML, ИнформацияОбОшибке) Тогда ОтветXDTO = ЭСФСервер.ОбъектXDTOИзСтрокиXML(ОтветXML, ФабрикаXDTO); invoiceInfoList = ЭСФСервер.ПолучитьСвойство(ОтветXDTO.Body.queryInvoiceResponse.invoiceInfoList, "invoiceInfo", Неопределено); Возврат invoiceInfoList; ИначеЕсли ЭтоМодульнаяОшибкаСессияЗакрыта(ОтветXML) Тогда ИдентификаторСессии = ОткрытьСессию(ПрофильИСЭСФ, ВерсияИСЭСФ); ПредыдущийLastEventId = Неопределено; ПредыдущийLastEventDate = Неопределено; ПредыдущийlastInvoiceId = Неопределено; Иначе ЗакрытьСессию(ПрофильИСЭСФ, ИдентификаторСессии, ВерсияИСЭСФ); ЗаписьЖурналаРегистрации( НСтр("ru = 'ОбменЭСФ.ПолучитьНовыеЭСФ'"), УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); //ВызватьИсключение НСтр("ru = 'При получении новых ЭСФ возникла ошибка.'") + Символы.ПС + ИнформацияОбОшибке.ПодробноеПредставление; КонецЕсли; Исключение ЗакрытьСессию(ПрофильИСЭСФ, ИдентификаторСессии, ВерсияИСЭСФ); КонецПопытки; Возврат Неопределено; КонецФункции |
|||
2
Вася Теркин
20.04.18
✎
09:48
|
Но все равно выдает только первую тыщу
|
|||
3
Вася Теркин
20.04.18
✎
09:54
|
У ответа ХДТО
rsCount "1000" lastBlock "false" но мне надо дальше |
|||
4
catena
20.04.18
✎
09:55
|
Ну, надо играться параметрами дэйт фром, дейт ту
|
|||
5
Вася Теркин
20.04.18
✎
09:56
|
То есть мне нужно несколько сотен запросов чтобы получить несколько сотен тысяч ЭСФ?
|
|||
6
Вася Теркин
20.04.18
✎
09:56
|
Такой путь не желателен...
|
|||
7
catena
20.04.18
✎
09:57
|
(6)Все вопросы к КГД.
|
|||
8
Вася Теркин
20.04.18
✎
10:20
|
И я не заметил чтобы запрос эту тысячу в хронологической последовательности давал. Он дает тыщу штук, но вроде произвольную тыщу из перечня.
Добавил Стр.LastEventDate = Эл.inputDate; Но дело в том, что если я допустим с 4 января по 4 января делаю получаю штук сорок. 2018-01-04T10:15:30.297+06:00 2018-01-04T10:29:49.537+06:00 2018-01-04T10:35:32.795+06:00 2018-01-04T11:17:35.330+06:00 2018-01-04T11:20:37.793+06:00 2018-01-04T11:39:07.727+06:00 2018-01-04T11:45:17.491+06:00 2018-01-04T15:28:14.736+06:00 2018-01-04T15:28:14.736+06:00 2018-01-04T15:33:41.109+06:00 2018-01-04T17:06:34.711+06:00 2018-01-04T20:20:05.220+06:00 2018-01-04T20:20:05.220+06:00 2018-01-04T20:20:05.220+06:00 2018-01-04T08:05:27.586+06:00 2018-01-04T08:05:36.343+06:00 2018-01-04T08:05:45.777+06:00 2018-01-04T08:05:52.150+06:00 2018-01-04T08:05:58.136+06:00 2018-01-04T08:06:03.463+06:00 ..... А если поставлю запрос с 4 по 8 января, то получаю за 4 только до 2018-01-04T20:20:05.220+06:00, а остальные вообще не выдает, а дальше сразу за 5 начинает кидать тоже не полностью. Он ни по какому полю не сортирует запрос похоже, выдает первые попавшиеся. |
|||
9
Вася Теркин
20.04.18
✎
10:27
|
То есть выборка вернется вот так
2018-01-04T10:15:30.297+06:00 2018-01-04T10:29:49.537+06:00 2018-01-04T10:35:32.795+06:00 2018-01-04T11:17:35.330+06:00 2018-01-04T11:20:37.793+06:00 2018-01-04T11:39:07.727+06:00 2018-01-04T11:45:17.491+06:00 2018-01-04T15:28:14.736+06:00 2018-01-04T15:28:14.736+06:00 2018-01-04T15:33:41.109+06:00 2018-01-04T17:06:34.711+06:00 2018-01-04T20:20:05.220+06:00 2018-01-04T20:20:05.220+06:00 2018-01-04T20:20:05.220+06:00 2018-01-05T10:11:03.662+06:00 2018-01-05T10:11:07.657+06:00 2018-01-05T10:11:07.657+06:00 2018-01-05T10:11:07.657+06:00 .... |
|||
10
catena
20.04.18
✎
10:41
|
Это что за даты? На сколько я помню, сортируются по дате последнего редактирования. Не могу сейчас проверить.
|
|||
11
Вася Теркин
20.04.18
✎
10:48
|
К сожалению нет... Уже все даты посмотрел какие есть у объекта
Стр.inputDate = Эл.inputDate; Стр.deliveryDate = Эл.deliveryDate; Стр.lastUpdateDate = Эл.lastUpdateDate; Каша какая-то |
|||
12
Вася Теркин
20.04.18
✎
10:49
|
Там момент подачи, момент доставки и момент последнего изменения.
|
|||
13
Вася Теркин
20.04.18
✎
10:49
|
все три даты в разнобой..
|
|||
14
Вася Теркин
20.04.18
✎
10:50
|
Мне гораздо интереснее почему за 4 число выборка возвращается разная если брать за 1 день или за несколько?
|
|||
15
piter3
20.04.18
✎
10:56
|
asc boolean Направление сортировки
|
|||
16
Вася Теркин
20.04.18
✎
11:00
|
(15) Это в запрос вставить?
|
|||
17
Вася Теркин
20.04.18
✎
11:01
|
3.4.2.2 Criteria
нашел... |
|||
18
Вася Теркин
20.04.18
✎
11:02
|
Но у меня и так все есть
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:esf="esf"> <soapenv:Header/> <soapenv:Body> <esf:queryInvoiceRequest> <sessionId>[sessionId]</sessionId> <criteria> <direction>[INBOUND_OUTBOUND]</direction> <dateFrom>[dateFrom]T00:00:00.000+06:00</dateFrom> <dateTo>[dateTo]T23:59:59.999+06:00</dateTo> <asc>true</asc> </criteria> </esf:queryInvoiceRequest> </soapenv:Body> </soapenv:Envelope> |
|||
19
Вася Теркин
20.04.18
✎
11:03
|
Вот чего ещё есть
orderBy asc pageNum |
|||
20
Вася Теркин
20.04.18
✎
11:03
|
Это надо попробовать
|
|||
21
Вася Теркин
20.04.18
✎
11:14
|
Добавил
<orderBy>inputDate</orderBy> получил "Unmarshalling Error: cvc-complex-type.2.4.a: Invalid content was found starting with element 'orderBy'. One of '{pageNum}' is expected." Тогда ещё добавил <pageNum>1</pageNum> Теперь <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:esf="esf"> <soapenv:Header/> <soapenv:Body> <esf:queryInvoiceRequest> <sessionId>c645c455df334854bd3afb59d25bc7c2-991140005177-</sessionId> <criteria> <direction>INBOUND</direction> <dateFrom>2018-01-04T00:00:00.000+06:00</dateFrom> <dateTo>2018-01-04T23:59:59.999+06:00</dateTo> <orderBy>inputDate</orderBy> <asc>true</asc> <pageNum>1</pageNum> </criteria> </esf:queryInvoiceRequest> </soapenv:Body> </soapenv:Envelope> возвращает пустую выборку |
|||
22
Вася Теркин
20.04.18
✎
11:40
|
Главное что и в примере мануала orderBy и pageNum не используются. Хотя в списке параметров они есть.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |