Повторяющиеся события SharePoint являются случайными? - PullRequest
5 голосов
/ 25 июня 2019

Примечание: Этот вопрос похож на существующий вопрос без ответа ( CAML OrderBy для SharePoint Событие повторяющегося календаря ).

Как я могу использовать веб-сервис Lists.asmx для извлечения повторяющихся событий, которые происходят сегодня или позже?

Я предоставляю параметр <CalendarDate>2019-06-25T15:55:04.108Z</CalendarDate> при отправке запроса в веб-службу /_vti_bin/Lists.asmx, но я все еще получаю события из прошлого (как показано на скриншоте ниже)!

Это ответ XML (скриншот). Обратите внимание, что даты события до сегодня, даже если «CalendarDate» задано как «2019-06-25»:

enter image description here

Это полезная нагрузка XML, отправленная с запросом:

<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>
  <soap:Body>
    <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'>
      <listName>{ my list GUID }</listName>
      <query>
        <Query>
          <OrderBy>
            <FieldRef Ascending='TRUE' Name='EventDate' />
          </OrderBy>
          <Where>
            <And>
              <Eq>
                <FieldRef Name="fRecurrence" />
                <Value Type="Boolean">1</Value>
              </Eq>
              <DateRangesOverlap>
                <FieldRef Name="EventDate" />
                <FieldRef Name="EndDate" />
                <FieldRef Name="RecurrenceID" />
                <Value Type='DateTime'>
                  <Year/>
                </Value>
              </DateRangesOverlap>
            </And>
          </Where>
        </Query>
      </query>
      <viewFields>
        <ViewFields>
          <FieldRef Name="Category" />
          <FieldRef Name="Location" />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <ViewAttributes Scope="RecursiveAll" />
          <RecurrencePatternXMLVersion>v3</RecurrencePatternXMLVersion>
          <DateInUtc>TRUE</DateInUtc>
          <ExpandRecurrence>TRUE</ExpandRecurrence>
          <CalendarDate>2019-06-25T15:55:04.108Z</CalendarDate>
          <RecurrenceOrderBy>TRUE</RecurrenceOrderBy>
        </QueryOptions>
      </queryOptions>
      <rowLimit>20</rowLimit>
    </GetListItems>
  </soap:Body>
</soap:Envelope>

Редактировать: Ниже приведен пример события, которое не возвращается запросом выше.

enter image description here

1 Ответ

1 голос
/ 06 июля 2019

Year не учитывает свойство CalendarDate - возвращает предыдущие события, которые произошли в течение года с текущей даты, и будущие события через год с текущей даты.

Использование <Value Type='DateTime'><Now /></Value> в DateRangesOverlap и удалите CalendarDate, чтобы получить повторяющиеся события, которые происходят сегодня или позже

...