Продолжаю тему рабочих процессов в SharePoint 2013. Столкнулся со странным: казалось бы, совершенно невинное activity CreateListItem выдает странное исключение: System.FormatException: Hexadecimal 0x expected in '{0}'. Покопавшись в блогах и форумах, быстро нашёл причину: ошибка происходит при выборе имени списка из выпадающего списка в свойстве ListId:
Visual Studio подставляет в свойство автоматически выражение типа: System.Guid.Parse("{$ListId:Lists/List1;}"). А среда, видимо, выражение "{$ListId:Lists/List1;}" вычисляет некорректно. В результате, ошибка при разборе Guid.
В интернетах советуют просто захардкодить в свойство ListId идентификатор (guid) списка. Но такое решение мне не показалось хорошим. Нужно было придумать, как получить идентификатор списка в процессе выполнения. Странно, но среди стандартных activity нужное действие по получению свойств произвольного списка отсутствует.
На выручку пришло событие HttpSend и REST (про REST смотри, например, тут: Working with lists and list items with REST). С помощью HttpSend посылаем запрос вида: webUrl + "/_api/web/lists/GetByTitle('" + ListTitle + "')", в ответ получаем все основные свойства списка. Для удобства результат лучше получать в виде JSON. Для этого посылаем специальный HTTP-заголовок: Accept=application/json;odata=verbose
Для удобства все эти действия оформил в виде custom activity. Результат получился примерно такой:
В результате, сначала получаем ИД списка с помощью нашей activity, сохраняем в переменной и указываем её в параметре ListId:
JV Gaming Ltd - Company Profile - KEMBIH
ОтветитьУдалитьJV Gaming Ltd 삼척 출장마사지 is located in 강원도 출장안마 Jindon, Siam, Maharashtra 통영 출장안마 and is part 수원 출장샵 of 안양 출장안마 KEMBIH Gaming Limited.