AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.03.2013, 10:55   #1  
probka is offline
probka
Участник
Аватар для probka
 
98 / 11 (1) +
Регистрация: 20.02.2012
Адрес: Ростов-на-Дону
CRM 4.0 Выполнение плагина
Добрый день!
Есть плагин, который выполняется после создания экземпляра кастомной сущности new_grmember, у которой есть атрибут new_groupid. При запуске двух параллельных процессов создания двух различных экземпляров этой сущности с двух разных компьютеров одновременно в алгоритме плагина, запущенного для первого экземпляра, почему-то появляется значение new_groupid из PostImage второго экземпляра. Почему такое может быть? Это какой-то баг или ошибка алгоритма? Текст алгоритма привожу ниже.

X++:
Guid groupId = ((Lookup)GetEntityProperty("new_groupid")).Value;

//------------------//

       protected object GetEntityProperty(string propertyName)
        {
            if (_currentContext.Stage == MessageProcessingStage.AfterMainOperationOutsideTransaction)
            {
                if (_postEntityImage == null)
                    _postEntityImage = GetPostEntityImage(_currentContext, TargetEntity.Name);

                if (_postEntityImage == null)
                {
                    if (_entity.Properties.Contains(propertyName))
                    {
                        return _entity[propertyName];
                    }


                }
                else if (_postEntityImage.Properties.Contains(propertyName))
                {
                    return _postEntityImage[propertyName];
                }

                return null;
            }

            else // (_currentContext.Stage == MessageProcessingStage.BeforeMainOperationOutsideTransaction)
            {
                if (!_entity.Properties.Contains(propertyName))
                {
                    if (_preEntityImage == null)
                        _preEntityImage = GetPreEntityImage(_currentContext, TargetEntity.Name);

                    if (_preEntityImage == null)
                        return null;

                    else if (_preEntityImage.Properties.Contains(propertyName))
                    {
                        return _preEntityImage[propertyName];
                    }

                    return null;

                }

                return _entity[propertyName];
            }
            
        }

        protected static DynamicEntity GetPostEntityImage(IPluginExecutionContext _currentContext, string _EntityName)
        {
            DynamicEntity postImageEntity = null;

            if (_currentContext.PostEntityImages.Contains(_EntityName))
                postImageEntity = _currentContext.PostEntityImages[_EntityName] as DynamicEntity;

            return postImageEntity;
        }
__________________
Так победим!

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 12 Blog bot Dynamics CRM: Blogs 0 30.01.2013 01:11
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 10 Blog bot Dynamics CRM: Blogs 0 17.08.2012 03:27
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 7 Blog bot Dynamics CRM: Blogs 0 27.03.2012 02:11
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 4 Blog bot Dynamics CRM: Blogs 0 24.09.2011 01:16
CRM DE LA CREME! Configuring Microsoft Dynamics CRM 4.0 for Internet-facing deployment Blog bot Dynamics CRM: Blogs 0 18.08.2009 11:05

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:07.