Статья изначально была написана для habrahabr и долго пылилась в Draft, так как не хватает кармы для ее опубликования. Решил, что опубликую ее здесь ;-)
Работаю с CRM и столкнулся с такой тривиальной задачей, как обновить Owner свойтство у сущности.
Со всеми сущностями я работаю через CRM4SDK и всю манипуляцию произвожу с помощью DynamicEntity.
Например создать сущность с Owner, отличающимся от CurrentUser (учетная запись под которой работает мой application) не составляет труда (здесь правильнее сказать, так же как и привычная работа с CRM):
//Создаем саму сущность DynamicEntity entity = new DynamicEntity(); entity.Name = entityName; // это может быть например "contact" как в моем случае entity.Properties = properties; // коллекция свойств, одно из которых OwnerProperty //Создаем запрос TargetCreateDynamic myTarget = new TargetCreateDynamic(); myTarget.Entity = entity; CreateRequest create = new CreateRequest(); create.Target = myTarget; //Выполняем собственно сам запрос CreateResponse response = (CreateResponse)Service.Instance.Execute(create); // ... ///
//Собственно создание OwnerProperty Owner owner = new Owner("systemuser", id); OwnerProperty ownerProperty = new OwnerProperty("ownerid", owner);
И это работает, но как только я пытаюсь обновить сущность, где одно из измененных полей это Owner,
Service.Instance.Execute(new UpdateRequest { Target = new TargetUpdateDynamic { Entity = dynamicEntity } });
То все поля обновляются, а Owner каким был, таким и остается.
Что я только не делал, и в дебаге смотрел каждую строчку, ошибку — все проходит без сучка и задоринки. Включил Trace — ничего, чтобы мне помогло узнать, почему не обновляется Owner. Проштудировал SDK и ни одного упоминаня, как менять owner на страницах работы с этим самим owner нет, отличного от того, как я написал выше.
Оказывается!!! Для того чтобы сделать у существующей сущности обновление существующего Owner, существует специальный запрос на это дело и нужно создавать отдельный экземпляр класса SecurityPrincipal и посылать отдельный запрос, только для того, чтобы обновить одно поле!!!
Вот она! Эта серебрянная пуля:
public static void UpdateOwner(Guid ownerid, Guid entityid, string entityName) { SecurityPrincipal assignee = new SecurityPrincipal {PrincipalId = ownerid}; TargetOwnedDynamic target = new TargetOwnedDynamic {EntityId = entityid, EntityName = entityName}; AssignRequest assign = new AssignRequest {Assignee = assignee, Target = target}; AssignResponse assignResponse = (AssignResponse)Service.Instance.Execute(assign); }
Надеюсь кому-нибудь сэкономлю кучу нервов и запросов в google.
«”Запустим стартап и станем миллиардерами” — иллюзия». Житель Витебска рассказывает про свой ИТ-бизнес
Наш основной проект, CRM-система Stick CRM, существует уже с 2015 года. Все началось со стартап-школы в Витебске — она так и называлась, «Стартап-школа». Там прошёл наш первый питч, мы победили в нескольких конкурсах. Хотя победы мало что дали, они привлекли к нам первое внимание.
Расскажу, почему мы решили ориентироваться на беларусский рынок, почему стартапы это не всегда про «много денег» и как развивать проект на протяжении 10 лет вдвоём.
Легко настроить под себя, но сложно разобраться. Какие плюсы и минусы у Notion
Если вы когда-нибудь пытались собрать все свои дела, идеи и проекты в одном месте, то, скорее всего, слышали о Notion. Этот сервис, который обещает стать вашим «вторым мозгом» — гибким, удобным и стильным.
Но недавно Notion ограничил доступ у пользователей из России. В Беларуси сервис пока что работает, но доверие к продукту подорвано.
Разберусь на реальных примерах, что в Notion действительно круто, а что может вызвать вопросы.
Рассказываю, как использовать Notion для бизнеса. Внутри 24 бесплатных шаблона
Notion — инструмент, который может значительно облегчить ведение бизнеса. В этой статье я расскажу, как можно использовать шаблоны Notion, чтобы создать базу знаний компании, управлять HR-процессами, вести CRM-воронки, адаптировать персонал, создавать веб-сайты и планировать встречи.
Наверняка вы слышали про Notion, и, может быть, даже работаете в нём. Делюсь с вами пятью фишками, которые прокачают вашу работу с программой. Все описанные функции доступны на бесплатном тарифе.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.