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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.01.2011, 11:39   #1  
Kipetcoff is offline
Kipetcoff
Участник
 
136 / 16 (1) ++
Регистрация: 20.05.2009
Адрес: Санкт-Петербург
Ошибка need to start transaction before commit
В своем коде использую фреймворк "Ascentium_CrmService" для копирования сущностей... Смысл в том что я сначала получаю все атрибуты исходной сущности,а потом перебираю и создаю новую.. код самого создания ниже..

Код:
var beIncident = new BusinessEntity("incident");
                                                        
                            for (var j = 0; j < beResult.length; j++) {
                                var oField = beResult[j];
                                var oName = oField[0];
                                var oBO = oField[1];
                                if (oName != "createdby" && oName != "createdon" && oName != "modifiedon" && oName != "incidentid" && oName != "ownerid" && oName != "owningbusinessunit" && oName != "statecode" && oName != "statuscode") {
                                    if (oName == "title") {
                                        beIncident.attributes[oName] = oBO.value + " КОПИЯ";
                                    }
                                    else if(oName == "customerid") {
                                    beIncident.attributes[oName] = new CrmLookup("account", oBO.value);
                                    }
                                    else {
                                        beIncident.attributes[oName] = oBO.value;
                                    }                                    
                                }

                            }
                            var sNew_IncidentId = oService.Create(beIncident);
Так вот..на создании выдается ошибка "need to start transaction before commit". Дело тут наверняка в поле customerid. Только не понятно что ему не нравится.. Причем сущность та создается, но проблема в том что метод oService.Create не возвращает ID новой записи и вылезает окно с ошибкой.
Гугл по поводу этого не многословен...может тут кто-то знает?
Старый 20.01.2011, 11:51   #2  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Хм, а отладживаться вы пробовали?
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 21.01.2011, 13:35   #3  
Kipetcoff is offline
Kipetcoff
Участник
 
136 / 16 (1) ++
Регистрация: 20.05.2009
Адрес: Санкт-Петербург
Попробовал посмотреть что происходит. Ошибка возникает на вызове сервиса

X++:
<?sXml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Header>
    <CrmAuthenticationToken xmlns="http://schemas.microsoft.com/crm/2007/WebServices">
      <AuthenticationType xmlns="http://schemas.microsoft.com/crm/2007/CoreTypes">0</AuthenticationType>
      <CrmTicket xmlns="http://schemas.microsoft.com/crm/2007/CoreTypes"></CrmTicket>
      <OrganizationName xmlns="http://schemas.microsoft.com/crm/2007/CoreTypes">Payment</OrganizationName>
      <CallerId xmlns="http://schemas.microsoft.com/crm/2007/CoreTypes">00000000-0000-0000-0000-000000000000</CallerId>
    </CrmAuthenticationToken>
  </soap:Header>
  <soap:Body>
    <Create xmlns="http://schemas.microsoft.com/crm/2007/WebServices">
      <entity xsi:type="incident">
        <new_invoicedate>2011-01-19T00:00:00+03:00</new_invoicedate>
        <ticketnumber>CAS-05105-WHK6D5</ticketnumber>
        <subjectid>{08E99922-A2FF-4834-A00E-1D3E0D5971BF}</subjectid>
        <isdecrementing>1</isdecrementing>
        <new_invoicevat_base>113</new_invoicevat_base>
        <severitycode>1</severitycode>
        <title>test </title>
        <modifiedby>{55798C5C-87F4-DE11-AF95-00155D8E4B06}</modifiedby>
        <new_invoicevat>113</new_invoicevat>
        <customerid type="account">{9F1F74AE-47CD-DD11-870C-0003FFC1F036}</customerid>
        <new_invoiceamount_base>100</new_invoiceamount_base>
        <new_manager_peyment>{ADF7EE54-87F4-DE11-AF95-00155D8E4B06}</new_manager_peyment>
        <productserialnumber>1234</productserialnumber>
        <new_office>{90E3C441-FFCC-DD11-870C-0003FFC1F036}</new_office>
        <new_systemuser_respon>{55798C5C-87F4-DE11-AF95-00155D8E4B06}</new_systemuser_respon>
        <new_supplier>{B78ACFC7-6095-DF11-AA67-00155D8E4B06}</new_supplier>
        <new_paymentdone>0</new_paymentdone>
        <timezoneruleversionnumber>0</timezoneruleversionnumber>
        <exchangerate>1</exchangerate>
        <followupby>2011-01-31T00:00:00+03:00</followupby>
        <new_invoiceamount>100</new_invoiceamount>
        <prioritycode>2</prioritycode>
        <new_legalentity>{B3F6B417-EC37-DF11-8CBE-00155D8E4B06}</new_legalentity>
        <incidentstagecode>1</incidentstagecode>
        <transactioncurrencyid>{CB1A9219-98BF-DD11-AF67-0003FFC1F036}</transactioncurrencyid>
      </entity>
    </Create>
  </soap:Body>
</soap:Envelope>
Был установлен плагин на эту сущность, но я его отключил и это ничего не изменило. Единственное что меня смущает, так это то что в стандартной сущости incident поле customerid имеет тип customer. Когда создаешь новую запись incident вручную в поле customerid можно выбирать присваивать account или contact. Мне здается что проблема именно в этом страном поле. И беда в том что оно является обязательным и я не могу избежать его заполнения. И не могу изменить его так чтобы оно не стало обязательным.
Старый 21.01.2011, 14:33   #4  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Цитата:
Сообщение от Kipetcoff Посмотреть сообщение
Единственное что меня смущает, так это то что в стандартной сущости incident поле customerid имеет тип customer.
Единственное что меня смущает, так это то, что вы используете сторонний фреймворк. Причем, судя по всему, неправильно.
Поставьте код инструкцию
Код:
dubugger;
. Разрешите отладку в настройках Internet Explorer и посмотрите что и почему падает!
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 21.01.2011, 15:08   #5  
Kipetcoff is offline
Kipetcoff
Участник
 
136 / 16 (1) ++
Регистрация: 20.05.2009
Адрес: Санкт-Петербург
Не, я использую вполне человеческий фреймворк и часто им пользуюсь http://mmcrm.ru/?p=790. Именно дебаггером я это и достал. Я поставил дебаггер на метод Create и проследил весь путь вплоть до отправки запроса на создание. Этот самый запрос я выше и процитировал.
Старый 22.01.2011, 14:47   #6  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Я знаю что это за фреймворк! Не нужно тыкать мне ссылки на сайты плагиаторов, предпочитаю читать в оригинале.
Какую мысль я пытался до вас донести: очень похоже, что это внутренняя ошибка фреймворка, поэтому искать ее нужно дебагером. Не метод который ее возвращает, а внутри этого метода. Если же это ошибка самого сервера, то нужно читать логи и делать выводы. В любом случае те бесполезные строки кода, которые вы привели к решению проблемы нас нисколько не приближают.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 26.01.2011, 18:00   #7  
Kipetcoff is offline
Kipetcoff
Участник
 
136 / 16 (1) ++
Регистрация: 20.05.2009
Адрес: Санкт-Петербург
В общем при копировании сущности "incident" есть какой-то атрибут который копировать нельзя. Я пробовал скопировать сущность из кода c# та же самая ошибка. Атрибут incidentid я конечно удалял и раньше + я сделал список разрешенных атрибутов, куда занес все используемые видимые атрибуты с формы, остальные стал удалять и все прекрасно создалось.

Последний раз редактировалось Kipetcoff; 26.01.2011 в 18:02.
Старый 27.01.2011, 08:51   #8  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Так может быть поделитесь своими наблюдениями? Значения каких атрибутов не следует заполнять создавая Обращение?
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 27.01.2011, 17:00   #9  
Kipetcoff is offline
Kipetcoff
Участник
 
136 / 16 (1) ++
Регистрация: 20.05.2009
Адрес: Санкт-Петербург
Я исключил из приведенного ниже списка все созданные мной атрибуты сущности "incident" и получился такой список

arrAllowed.Add("subjectid");
arrAllowed.Add("title");
arrAllowed.Add("productserialnumber");
arrAllowed.Add("customerid");

arrAllowed.Add("isdecrementing");
arrAllowed.Add("caseorigincode");
arrAllowed.Add("contractid");
arrAllowed.Add("contractdetailid");
arrAllowed.Add("transactioncurrencyid");
arrAllowed.Add("followupby");
arrAllowed.Add("casetypecode");

На самом деле я сейчас посмотрел тут запрос который я написал в первый раз и увидел что поле "ticketnumber" наверняка и есть то самое злополученое поле, которое нельзя копировать. Оно генерируется автоматически и наверняка присвоение не приветствуется.

Последний раз редактировалось Kipetcoff; 27.01.2011 в 17:04.
Старый 27.01.2011, 17:01   #10  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Kipetcoff Посмотреть сообщение
На самом деле я сейчас посмотрел тут запрос который я написал в первый раз и увидел что поле "ticketnumber" наверняка и есть то самое злополученое поле, которое нельзя копировать. Оно генерируется автоматически и наверняка присвоение не приветствуется.
Когда исследовал твою проблему - это предположил сразу, но это не оказалось правдой. Можешь попробовать =)

Тут надо по одному параметру накидывать, чтобы понять какой именно вызвал ошибку.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 27.01.2011, 17:08   #11  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Согласен. Гораздо интереснее понять "что нельзя", нежели что можно.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 27.01.2011, 17:20   #12  
Kipetcoff is offline
Kipetcoff
Участник
 
136 / 16 (1) ++
Регистрация: 20.05.2009
Адрес: Санкт-Петербург
Цитата:
Сообщение от a33ik Посмотреть сообщение
Когда исследовал твою проблему - это предположил сразу, но это не оказалось правдой. Можешь попробовать =)

Тут надо по одному параметру накидывать, чтобы понять какой именно вызвал ошибку.
Я проверил сначала поочередным добавлением этих атрибутов
severitycode
modifiedby
timezoneruleversionnumber
exchangerate
prioritycode
incidentstagecode

Потом добавил "ticketnumber". И вот он попался!! Так что все таки ОН.))
Старый 27.01.2011, 17:28   #13  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Kipetcoff Посмотреть сообщение
Я проверил сначала поочередным добавлением этих атрибутов
severitycode
modifiedby
timezoneruleversionnumber
exchangerate
prioritycode
incidentstagecode

Потом добавил "ticketnumber". И вот он попался!! Так что все таки ОН.))
Наверное очень много зависит от деплоймента...
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 28.01.2011, 09:41   #14  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Ну, может быть и он... Его же какая-то хранимка обновляет, может и случилась какая-то коллизия транзакций... Хотя поддержу Андрея: мне тоже удавалось записать в это поле произвольную муру.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ошибка публикации кастомного БП Буденый Dynamics CRM: Разработка 2 27.10.2010 17:34
Ошибка открытия приложения ms crm Camena Dynamics CRM: Администрирование 3 04.06.2010 18:57
Модуль "Маркетинг" - ОШИБКА с действиями кампаний nataly_veksler Dynamics CRM: Разработка 5 06.11.2009 00:48
Ошибка при добавлении отчета e.pasechny Dynamics CRM: Администрирование 5 11.12.2007 14:00
Ошибка при установке MS CRM Outlook клиента flay Dynamics CRM: Администрирование 0 29.06.2006 10:16
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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