none
Вставка записей в список Sharepoint с разными типами контента из MS Access RRS feed

  • Вопрос

  • Есть список в SharePoint 2010, который содержит разные типы контента, у этих типов есть некоторый не пересекающийся набор полей. При чем один из типов контента содержит поля, которые для него являются обязательными, а для других таковыми не являются, либо вовсе не используются.

    Подключил этот список к Access 2010 и пытаюсь изменить запись в этом списке, которая принадлежит типу контента не имеющего обязательных полей. При попытке записи получаю ошибку, что одно из обязательных полей должно быть заполнено.

    Как вставить изменения, если по условию, для этого типа контента данное поле должно быть не заполненным?

    30 марта 2015 г. 8:00

Ответы

  • Потестировал с fiddler.
    Вот как оно работает:
    когда вы подключаетесь из access к списку на SharePoint, идёт запрос через сервис list.asmx.
    Который возвращает xml - описание списка.
    В этом описании перечислены поля в данном списке. Информация о типах контента в этом списке туда не включается. 
    Так как вы используете Site Columns, то приходят описания этих колонок (и не важно, что на уровне списка вы можете изменять эти колонки, т.е. делать их обязательными, либо нет).

    Допустим у вас два типа контента: Contact, MyContact. В обоих есть колонка E-Mail. На уровне списка (либо типа контента) вы устанавливаете для Contcact поле E-Mail - Required, а для MyContact - Not Required.
    Подключаетесь из Access и получаете Not Required. Но не из-за того, что в типах контента выставлены такие настройки, а из-за того, что site column - E-Mail имеет по-умолчанию Not Required.

    Т.е. если мы хотим, чтобы наше поле всё же было обязательным - то заходим в site columns - и ставим Required, но тогда Access всегда будет требовать данные для этого поля невзирая на настройки для контента, и наоборот, если поставить для site column - Not Required - то в Access сможете устанавливать, либо оставлять пустыми колонки, которые реально могут быть Required. Данные при этом спокойно сохранятся в списке. А required колонка будет пустой (это не противоречит SharePoint).

    [custom.development]


    30 марта 2015 г. 10:06

Все ответы

  • Скорее всего так происходит из-за того, что Access использует Content type, который выбран по-умолчанию.

    [custom.development]

    30 марта 2015 г. 9:05
  • Потестировал с fiddler.
    Вот как оно работает:
    когда вы подключаетесь из access к списку на SharePoint, идёт запрос через сервис list.asmx.
    Который возвращает xml - описание списка.
    В этом описании перечислены поля в данном списке. Информация о типах контента в этом списке туда не включается. 
    Так как вы используете Site Columns, то приходят описания этих колонок (и не важно, что на уровне списка вы можете изменять эти колонки, т.е. делать их обязательными, либо нет).

    Допустим у вас два типа контента: Contact, MyContact. В обоих есть колонка E-Mail. На уровне списка (либо типа контента) вы устанавливаете для Contcact поле E-Mail - Required, а для MyContact - Not Required.
    Подключаетесь из Access и получаете Not Required. Но не из-за того, что в типах контента выставлены такие настройки, а из-за того, что site column - E-Mail имеет по-умолчанию Not Required.

    Т.е. если мы хотим, чтобы наше поле всё же было обязательным - то заходим в site columns - и ставим Required, но тогда Access всегда будет требовать данные для этого поля невзирая на настройки для контента, и наоборот, если поставить для site column - Not Required - то в Access сможете устанавливать, либо оставлять пустыми колонки, которые реально могут быть Required. Данные при этом спокойно сохранятся в списке. А required колонка будет пустой (это не противоречит SharePoint).

    [custom.development]


    30 марта 2015 г. 10:06