diadoc / diadocsdk-csharp

Official Diadoc SDK for C#
MIT License
35 stars 64 forks source link

Фильтрация документов по DepartmentID #1029

Closed AlekseyMakshakov closed 1 year ago

AlekseyMakshakov commented 1 year ago

Добрый день. Есть работающая интеграция, получает документы из ящика, и далее их обрабатывает. Получение идет примерно таким кодом:

DocumentsFilter oDocFilter = new DocumentsFilter();
oDocFilter.BoxId = boxid;
oDocFilter.FilterCategory = filterCategory;
oDocFilter.TimestampFrom = startDate;
oDocFilter.TimestampTo = endDate;
var docs = Api.GetDocuments(authTokenLogin, oDocFilter);

При этом документы собираются из всех подразделений, к которым имеет доступ пользователь, от имени которого работает интеграция. Возникла необходимость фильтровать подразделения, из которых будут собираться документы. Для этого добавляю еще одну строчку фильтра, и соответственно, документы должны получаться только из указанного подразделения:

oDocFilter.departmentId = DepartmentID;

Но непонятно, каким образом получить документы из головного подразделения. В документации написано: departmentId – идентификатор подразделения, в котором производится поиск документов. Необязательный параметр. Если не указан, поиск производится в головном подразделении. Однако, тут очевидно какая-то ошибка, ведь при неуказании departmentId загружаются вообще все документы, из всех подразделений.

Так каким образом мне получить документы только из головного подразделения?

Спасибо!

AlekseyMakshakov commented 1 year ago

Похоже, разобрался. Головное подразделение всегда имеет ID 00000000-0000-0000-0000-000000000000 Если не указан параметр departmentId в запросе - подставляется именно этот нулевой ID. При этом по умолчанию берутся документы из указанного подразделения (головного, если не указано) и всех его дочерних подразделений. Если нужно брать документы исключительно из указанного в запросе подразделения, без дочерних, нужно в запросе указать параметр excludeSubdepartments=true.

Таким образом, отвечая на свой же вопрос - чтобы получить документы только из головного подразделения нужно в запросе указать departmentId=00000000-0000-0000-0000-000000000000 (либо опустить этот параметр) и excludeSubdepartments=true