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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.12.2009, 09:40   #1  
datfi is offline
datfi
Участник
 
240 / 15 (1) ++
Регистрация: 20.08.2009
Адрес: Россия, Сыктывкар
Проверка на уникальность поля сущности
Добрый день, коллеги! У меня вопрос вот какого плана:

В сущности продукт есть поле артикул. Оно при заполнении проверяется на уникальность. Есть ли возможность сделать так же для поля, например Код организации?
Старый 01.12.2009, 09:49   #2  
slivka_83 is offline
slivka_83
Консультант-джедай
Аватар для slivka_83
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Регистрация: 18.12.2008
Адрес: default city
SOAP-запросом
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
За это сообщение автора поблагодарили: datfi (1).
Старый 01.12.2009, 10:06   #3  
datfi is offline
datfi
Участник
 
240 / 15 (1) ++
Регистрация: 20.08.2009
Адрес: Россия, Сыктывкар
Цитата:
Сообщение от slivka_83 Посмотреть сообщение
SOAP-запросом
а стандартным функционалом никак?
Старый 01.12.2009, 10:08   #4  
slivka_83 is offline
slivka_83
Консультант-джедай
Аватар для slivka_83
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Регистрация: 18.12.2008
Адрес: default city
Стандартом тут может быть только поиск на дубликаты. Но он работает только при сохранении. А у Вас вроде как оперативная проверка производится "при заполнении".
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
Старый 01.12.2009, 10:22   #5  
Bondonello is offline
Bondonello
Kostya Afendikov
Аватар для Bondonello
MCBMSS
Лучший по профессии 2009
 
510 / 106 (5) +++++
Регистрация: 06.06.2008
Адрес: Украина
Цитата:
Сообщение от datfi Посмотреть сообщение
Добрый день, коллеги! У меня вопрос вот какого плана:

В сущности продукт есть поле артикул. Оно при заполнении проверяется на уникальность. Есть ли возможность сделать так же для поля, например Код организации?

Вешаете следующий код на OnSave()
X++:
function GetAttributeValueFromID(sEntityName, GUID, sAttributeName)
{
var authenticationHeader = GenerateAuthenticationHeader();
// Prepare the SOAP message.
var xml = "";
xml = xml+"<?xml 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'>"+ 
authenticationHeader+ 
"<soap:Body>"+ 
"<Retrieve xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+ 
"<entityName>"+sEntityName+"</entityName>"+ 
"<id>"+GUID+"</id>"+ 
"<columnSet xmlns:q1='http://schemas.microsoft.com/crm/2006/Query' xsi:type='q1:ColumnSet'>"+ 
"<q1:Attributes>"+ 
"<q1:Attribute>"+sAttributeName+"</q1:Attribute>"+ 
"</q1:Attributes>"+ 
"</columnSet>"+ 
"</Retrieve>"+ 
"</soap:Body>"+ 
"</soap:Envelope>";
// Prepare the xmlHttpObject and send the request.
var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xHReq.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Retrieve");
xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xHReq.setRequestHeader("Content-Length", xml.length);
xHReq.send(xml);
// Capture the result.
var resultXml = xHReq.responseXML;

// Check for errors.
var errorCount = resultXml.selectNodes('//error').length;

var result = resultXml.selectSingleNode("//q1:" + sAttributeName).nodeTypedValue;
if (errorCount != 0)
{
 var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
result = " ";
 alert(msg);
}
// Display the retrieved value.
else
{
return result;
}
}




var resultXml;
var result;
var xml;
var okpo = "";


ObjectID = crmForm.ObjectId;
if(crmForm.all.NEW_OKPO.DataValue != null)
{okpo = crmForm.all.NEW_OKPO.DataValue;}

var xml = "" + 

"<?xml 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:Body>" + 
"    <query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\" xmlns=\"http://schemas.microsoft.com/crm/2006/WebServices\">" + 
"      <q1:EntityName>account</q1:EntityName>" + 
"      <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" + 
"        <q1:Attributes>" + 
"          <q1:Attribute>NEW_OKPO</q1:Attribute>" + 
"          <q1:Attribute>accountid</q1:Attribute>" + 
"        </q1:Attributes>" + 
"      </q1:ColumnSet>" + 
"      <q1:Distinct>false</q1:Distinct>" + 
"      <q1:Criteria>" + 
"        <q1:FilterOperator>And</q1:FilterOperator>" + 
"        <q1:Conditions>" + 
"          <q1:Condition>" + 
"            <q1:AttributeName>NEW_OKPO</q1:AttributeName>" + 
"            <q1:Operator>Equal</q1:Operator>" + 
"            <q1:Values>" + 
"              <q1:Value xsi:type=\"xsd:string\">"+okpo+"</q1:Value>" + 
"            </q1:Values>" + 
"          </q1:Condition>";

if (ObjectID != null)
{
xml += "          <q1:Condition>" + 
"            <q1:AttributeName>accountid</q1:AttributeName>" + 
"            <q1:Operator>NotEqual</q1:Operator>" + 
"            <q1:Values>" + 
"              <q1:Value xsi:type=\"xsd:string\">"+ObjectID+"</q1:Value>" + 
"            </q1:Values>" + 
"          </q1:Condition>";
};

xml +=  "          <q1:Condition>" + 
"            <q1:AttributeName>statecode</q1:AttributeName>" + 
"            <q1:Operator>Equal</q1:Operator>" + 
"            <q1:Values>" + 
"              <q1:Value xsi:type=\"xsd:int\">0</q1:Value>" + 
"            </q1:Values>" + 
"          </q1:Condition>" +
"        </q1:Conditions>" + 
"      </q1:Criteria>" + 
"    </query>" + 
"  </soap:Body>" + 
"</soap:Envelope>" + 
"";

var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
xmlHttpRequest.Open("POST", "/mscrmservices/2006/CrmService.asmx", false);
xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2006/WebServices/RetrieveMultiple");
xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
xmlHttpRequest.send(xml);
var resultXml = xmlHttpRequest.responseXML;
result = ReadXml(xmlHttpRequest.responseXML);
try{

if(isdefined(result.Envelope.Body.RetrieveMultipleResult.BusinessEntities.BusinessEntity)&& crmForm.all.parentaccountid.DataValue==null)
{
var accountid = resultXml.selectSingleNode("//q1:accountid").nodeTypedValue;

//alert(result1);
var accountname = GetAttributeValueFromID("account",accountid,"name");
var userid = GetAttributeValueFromID("account",accountid,"ownerid");
var userlastname = GetAttributeValueFromID("systemuser",userid,"lastname");
//var userfirstname = GetAttributeValueFromID("systemuser",userid,"firstname");


alert("Такой код ОКПО уже есть у предприятия: " + accountname +'\n'+  "Ответственный менеджер: " + userlastname +'\n'+ "Обратитесь к Вашему руководителю с запросом на открытие соответствующей бизнес-линии на этом предприятии для Вас");
event.returnValue = false;
return false;
}
}
catch(e){};
return true;
где NEW_OKPO -это поле для уникального ОКПО организации в моем случае
плюс, здесь проверка на то, что если есть родительская организация, то проверка не срабатывает, сможете модифицировать под себя
За это сообщение автора поблагодарили: datfi (1).
Старый 01.12.2009, 10:54   #6  
datfi is offline
datfi
Участник
 
240 / 15 (1) ++
Регистрация: 20.08.2009
Адрес: Россия, Сыктывкар
Цитата:
Сообщение от slivka_83 Посмотреть сообщение
Стандартом тут может быть только поиск на дубликаты. Но он работает только при сохранении. А у Вас вроде как оперативная проверка производится "при заполнении".
Пальчиком ткните где это поиск на дубликаты??
Старый 01.12.2009, 10:56   #7  
slivka_83 is offline
slivka_83
Консультант-джедай
Аватар для slivka_83
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Регистрация: 18.12.2008
Адрес: default city
Параметры - Управление данными - Правила обнаружения повторяющихся записей
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
Старый 01.12.2009, 11:53   #8  
datfi is offline
datfi
Участник
 
240 / 15 (1) ++
Регистрация: 20.08.2009
Адрес: Россия, Сыктывкар
Цитата:
Сообщение от slivka_83 Посмотреть сообщение
Параметры - Управление данными - Правила обнаружения повторяющихся записей
Что то я как то упустил этот момент Крутая штука, спасибо!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как получить значение поля одной сущности при обработке формы другой сущности zhenek Dynamics CRM: Разработка 25 05.07.2011 16:19
Изменение значения поля сущности по расписанию xmarina Dynamics CRM: Разработка 11 15.05.2009 23:00
Обращение к полю сущности MFCшный Wizard Dynamics CRM: Разработка 28 12.02.2009 14:35
Workflow: проверка на уникальность при автоматическом создании Lead'a SergeyV Dynamics CRM: Администрирование 2 02.10.2008 13:33
Обновление поля во внешней сущности через JScript Sergio_che Dynamics CRM: Разработка 4 06.06.2008 23:44
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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