Advertise with Googlier.com crrm.ru - javascript http://crrm.ru/category/tags/javascript ru Microsoft Dynamics CRM Q4 2012 Service Update http://crrm.ru/articles/2013/01/ms-crm-q4-2012-service-update <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Вчера был опубликован <a href="http://support.microsoft.com/kb/2795627">Update Rollup 12</a> более известный как "Microsoft Dynamics CRM Q4 2012 Service Update", который помимо оптимизации производительности и дополненного SDK также принесёт нам поддержку новых браузеров: <a href="http://support.microsoft.com/kb/2784954">Browser compatibility introduced with Microsoft Dynamics CRM 2011 Update Rollup 12 or the December 2012 Service Update</a>.</p> <p>В самое время задуматься, т.к. новое обновление, возможно, поломает некоторые клиентские скрипты. Проверить готовность можно с помощью специальной утилиты: <a href="http://blogs.msdn.com/b/crm/archive/2012/06/21/microsoft-dynamics-crm-2011-custom-code-validation-tool-released.aspx" title="Microsoft Dynamics CRM 2011 Custom Code Validation Tool">Microsoft Dynamics CRM 2011 Custom Code Validation Tool</a>. Перед её использованием нелишним будет ознакомиться и с этой статьёй: <a href="http://blogs.msdn.com/b/crm/archive/2012/05/29/resolve-breaking-script-issues-when-upgrading-to-the-next-release-of-microsoft-dynamics-crm.aspx" title="Resolve Breaking Script Issues When Upgrading Microsoft Dynamics CRM">Resolve Breaking Script Issues When Upgrading Microsoft Dynamics CRM</a>.</p> <p>Голосование: <a href="/polls/2013/ms-crm-q4-2012-service-update" title="Голосование">А готовы ли вы к этому? Скрипты переписали?</a></p> <!--break--></div></div></div><div class="form-item form-type-item"> <label>Язык </label> Русский </div> <div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above clearfix"><h3 class="field-label">Метки: </h3><ul class="links"><li class="taxonomy-term-reference-0"><a href="/category/tags/javascript">javascript</a></li><li class="taxonomy-term-reference-1"><a href="/category/tags/maintenance">maintenance</a></li></ul></div><div class="field field-name-field-field-vote field-type-fivestar field-label-above"><div class="field-label">field_vote:&nbsp;</div><div class="field-items"><div class="field-item even"><div class="clearfix fivestar-average-stars fivestar-average-text"><div class="fivestar-static-item"><div class="form-item form-type-item"> <div class="fivestar-default"><div class="fivestar-widget-static fivestar-widget-static-vote fivestar-widget-static-5 clearfix"><div class="star star-1 star-odd star-first"><span class="on">2.931035</span></div><div class="star star-2 star-even"><span class="on"></span></div><div class="star star-3 star-odd"><span class="on" style="width: 93.1035%"></span></div><div class="star star-4 star-even"><span class="off"></span></div><div class="star star-5 star-odd star-last"><span class="off"></span></div></div></div> <div class="description"><div class="fivestar-summary fivestar-summary-average-count"><span class="average-rating">Average: <span >2.9</span></span> <span class="total-votes">(<span >29</span> votes)</span></div></div> </div> </div></div></div></div></div> Thu, 10 Jan 2013 14:06:42 +0000 Vladislav Osmanov 89 at http://crrm.ru http://crrm.ru/articles/2013/01/ms-crm-q4-2012-service-update#comments Обзор MSCRM 2011 beta SDK - Введение в REST http://crrm.ru/articles/2010/11/mscrm-2011-beta-sdk-review-part-3-rest-introducing <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Пока пропущу один небольшой раздел из серии обзоров SDK и расскажу про REST.</p> <p>Взаимодействие с Microsoft Dynamics CRM 4.0 на клиентской стороне сводилось к вызову XML Web-сервиса путём формирования в клиентском скрипте SOAP-запроса. Плюсом данной технологии является интероперабельность - возможность использования сервиса независимо от технологий и языков программирования. И это был единственный способ взаимодействия с системой на стороне клиента. Минусов куда как больше:</p> <ul> <li>сложная структура запроса - формирование объёмного XML-запроса занятие кропотливое,</li> <li>трудности парсинга (разбора) ответа, т.к. необходимы знания объектной модели документа (DOM), регулярных выражений и XQuery/XPath для извлечения требуемых данных,</li> <li>нетривиальная обработка ошибок.</li> </ul> <p>Для решения возникающих трудностей с вызовом XML Web-сервиса CRM различными командами были предложены обёртки, призванные облегчить эту задачу:</p> <ul> <li><a href="http://www.avanadeblog.com/xrm/2010/05/a-microsoft-dynamics-crm-javascript-sdk-in-celebration-of-an-amazing-year-.html" title="Ascentium CrmService JavaScript Library">Ascentium CrmService JavaScript Library</a>,</li> <li><a href="https://github.com/6ix4our/CRM-Javascript-Library" title="David Berry's CRM Javascript Library">David Berry's CRM Javascript Library</a>.</li> </ul> <h3>Реализация REST в CRM 2011</h3> <p>В Microsoft Dynamics CRM 2011 данные теперь доступны через конечную точку <a href="http://msdn.microsoft.com/ru-ru/magazine/dd315413.aspx" title="Введение в службы RESTful с использованием WCF">REST</a>. REST (Representational State Transfer) - архитектурный подход, который подразумевает использование ресурсов через обращение по уникальному URI-пути. А это значит, что теперь достаточно обратиться GET-, POST-, MERGE-, DELETE- или PUT-запросом на определённый URI, чтобы извлечь данные из CRM, обновить, удалить или сохранить запись.</p> <!--break--><p>В Microsoft Dynamics CRM 2011 конечная точка REST реализована службой WCF с использованием <a href="http://www.odata.org/" title="Open Data Protocol (OData)">Open Data Protocol (OData)</a>.</p> <p>OData принимает и возвращает данные в одном из двух форматов: ATOM или JSON (наиболее интересный для нас формат, т.к. позволяет десериализовать ответ службы в объекты JavaScript).</p> <p>Все запросы производятся к базовому URI:</p> <pre class="brush:text">[Your Organization Root URL]/XRMServices/2011/OrganizationData.svc </pre><p><em>О том как лучше всего сформировать этот путь читайте в статье <a href="/articles/2010/11/xrm-page-context-and-getglobalcontext-function" title="Xrm.Page.context и функция GetGlobalContext">"Xrm.Page.context и функция GetGlobalContext"</a>.</em></p> <h3>Объектная модель данных OData</h3> <p>OData Entity Data Model (EDM) - упорядоченный набор URI со структурой взаимосвязей сущностей CRM доступен через метаданные службы:</p> <pre class="brush:text">[Your Organization Root URL]/XRMServices/2011/OrganizationData.svc/$metadata </pre><p>Этот XML-документ использует CDSL - язык описания концептульаной схемы данных (аналог WSDL для XML Web-служб). Вы можете использовать этот документ для генерации классов в приложениях Silverlight или описания объектов в JScript.</p> <h3>Ограничения</h3> <p>Служба REST предоставляет альтернативу использования SOAP-запросов, но необходимо учитывать следующие ограничения:</p> <ul> <li><strong>Доступны только следующие типы запросов: Create, Retrieve, Update и Delete.</strong> <ul> <li>Не могут быть выполнены запросы, которые требуют использования метода Execute.</li> <li>Создание и удаление связей между записями осуществляется как обновление (update-запрос).</li> </ul> </li> <li><strong>Аутентификация возможна только в рамках приложения CRM.</strong> <ul> <li>Использование конечной точки REST наиболее эффективно в приложениях Silverlight и библиотеках JavaScript выполняемых как Web-ресурс CRM (<a href="/articles/2010/03/solution-management-in-crm5" title="Solution Management – управление компонентами в CRM5">CRM Web Resources - новый тип компонента, являющийся составной частью стороннего (ISV) решения</a>).</li> </ul> </li> <li>Протокол OData реализован не полностью. Некоторые системные запросы не будут доступны. <ul> <li><a href="/articles/2010/11/mscrm-2011-beta-sdk-review-part-4-using-rest#odata-query-options" title="Использование запросов и ограничения System Query Options">Подробнее об ограничениях и возможностях OData запросов</a>.</li> </ul> </li> </ul> <p> </p> <p>Продолжение в статье <a href="/articles/2010/11/mscrm-2011-beta-sdk-review-part-4-using-rest" title="Обзор MSCRM 2011 beta SDK - Использование REST: запросы и фильтры">Использование REST: запросы и фильтры</a>.</p> </div></div></div><div class="form-item form-type-item"> <label>Язык </label> Русский </div> <div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above clearfix"><h3 class="field-label">Метки: </h3><ul class="links"><li class="taxonomy-term-reference-0"><a href="/category/tags/javascript">javascript</a></li><li class="taxonomy-term-reference-1"><a href="/category/tags/sdk">SDK</a></li><li class="taxonomy-term-reference-2"><a href="/category/tags/crm-2011">CRM 2011</a></li><li class="taxonomy-term-reference-3"><a href="/category/tags/rest">REST</a></li></ul></div><div class="field field-name-field-field-vote field-type-fivestar field-label-above"><div class="field-label">field_vote:&nbsp;</div><div class="field-items"><div class="field-item even"><div class="clearfix fivestar-average-stars fivestar-average-text"><div class="fivestar-static-item"><div class="form-item form-type-item"> <div class="fivestar-default"><div class="fivestar-widget-static fivestar-widget-static-vote fivestar-widget-static-5 clearfix"><div class="star star-1 star-odd star-first"><span class="off">0</span></div><div class="star star-2 star-even"><span class="off"></span></div><div class="star star-3 star-odd"><span class="off"></span></div><div class="star star-4 star-even"><span class="off"></span></div><div class="star star-5 star-odd star-last"><span class="off"></span></div></div></div> <div class="description"><div class="fivestar-summary fivestar-summary-average-count"><span class="empty">Голосов пока нет</span></div></div> </div> </div></div></div></div></div> Fri, 05 Nov 2010 15:51:49 +0000 Vladislav Osmanov 61 at http://crrm.ru http://crrm.ru/articles/2010/11/mscrm-2011-beta-sdk-review-part-3-rest-introducing#comments Xrm.Page.context и функция GetGlobalContext http://crrm.ru/articles/2010/11/xrm-page-context-and-getglobalcontext-function <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Продолжаю обзор SDK поставки Microsoft Dynamics CRM 2011 beta.</p> <p>Объект Xrm.Page.context предоставляет доступ к текущему контексту страницы. С помощью него можно получить информацию об организации и текущем пользователе. Xrm.Page.context предоставляет доступ к следующим функциям:</p> <ul> <li><strong>getAuthenticationHeader</strong> - возвращает закодированное значение SOAP-заголовка необходимого для вызова Web-сервиса (формата CRM 4.0) из скрипта;</li> <li><strong>getOrgLcid</strong> - возвращает LCID - идентификатор культуры (локаль) текущей организации;</li> <li><strong>getOrgUniqueName</strong> - возвращает уникальное имя текущей организации;</li> <li><strong>getQueryStringParameters</strong> - возвращает массив GET-параметров текущего вызова;</li> <li><strong>getServerUrl</strong> - возвращает базовый URL CRM (при использовании офлайн с клиентом Outlook для CRM возвращает ссылку на локальный сервис);</li> <li><strong>getUserId</strong> - возвращает GUID текущего пользователя (отличная замена WhoAmI-запросам);</li> <li><strong>getUserLcid</strong> - возвращает LCID - идентификатор культуры (локаль) текущего пользователя;</li> <li><strong>getUserRoles</strong> - возвращает массив идентификаторов (GUID) ролей текущего пользователя.</li> </ul> <p>Но что делать, если вы хотите использовать эти чрезвычайно полезные функции в клиентском коде своих приложений а не с форм CRM? Для этого достаточно подключить скрипт с функцией GetGlobalContext как описано ниже:</p> <!--break--><pre class="brush:xml">&lt;head&gt; &lt;title&gt;HTML Web Resource&lt;/title&gt; &lt;script src="../ClientGlobalContext.js.aspx"&gt;&lt;/script&gt; &lt;script src="Scripts/jquery1.4.1.min.js" type="text/javascript"&gt;&lt;/script&gt; &lt;script src="Scripts/ContosoScript.js" type="text/javascript"&gt;&lt;/script&gt; &lt;link href="Styles/ContosoStyles.css" rel="stylesheet" type="text/css" /&gt; &lt;/head&gt; </pre><p>Затем вы можете использовать функции контекста в скрипте, например, чтобы получить путь к адресу <a href="/articles/2010/11/mscrm-2011-beta-sdk-review-part-3-rest-introducing" title="Обзор MSCRM 2011 beta SDK - Введение в REST">REST-службы</a>:</p> <pre class="brush:js">var serverUrl; var ODataPath; $(function () { var context = GetGlobalContext(); serverUrl = context.getServerUrl(); ODataPath = serverUrl + "/XRMServices/2011/OrganizationData.svc"; }); </pre></div></div></div><div class="form-item form-type-item"> <label>Язык </label> Русский </div> <div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above clearfix"><h3 class="field-label">Метки: </h3><ul class="links"><li class="taxonomy-term-reference-0"><a href="/category/tags/javascript">javascript</a></li><li class="taxonomy-term-reference-1"><a href="/category/tags/sdk">SDK</a></li><li class="taxonomy-term-reference-2"><a href="/category/tags/crm-2011">CRM 2011</a></li></ul></div><div class="field field-name-field-field-vote field-type-fivestar field-label-above"><div class="field-label">field_vote:&nbsp;</div><div class="field-items"><div class="field-item even"><div class="clearfix fivestar-average-stars fivestar-average-text"><div class="fivestar-static-item"><div class="form-item form-type-item"> <div class="fivestar-default"><div class="fivestar-widget-static fivestar-widget-static-vote fivestar-widget-static-5 clearfix"><div class="star star-1 star-odd star-first"><span class="on">2.962965</span></div><div class="star star-2 star-even"><span class="on"></span></div><div class="star star-3 star-odd"><span class="on" style="width: 96.2965%"></span></div><div class="star star-4 star-even"><span class="off"></span></div><div class="star star-5 star-odd star-last"><span class="off"></span></div></div></div> <div class="description"><div class="fivestar-summary fivestar-summary-average-count"><span class="average-rating">Average: <span >3</span></span> <span class="total-votes">(<span >27</span> votes)</span></div></div> </div> </div></div></div></div></div> Fri, 05 Nov 2010 14:53:39 +0000 Vladislav Osmanov 60 at http://crrm.ru http://crrm.ru/articles/2010/11/xrm-page-context-and-getglobalcontext-function#comments Javascript Grid Editor - редактирование записей CRM в таблице http://crrm.ru/articles/2010/03/javascript-grid-editor <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Интересную разработку выложил Dave Berry - <a href="http://crmentropy.blogspot.com/p/javascript-grid-editor.html" title="Javascript Grid Editor (JGE)">Javascript Grid Editor (JGE)</a> - скрипт, позволяющий редактировать таблицы с записями CRM. Т.е. записи редактируются без открытия отдельной формы сущности.</p> <p><img src="/sites/default/files/img/javascript-grid-editor/JavascriptGridEditor-InsertMode.png" border="0" alt="Javascript Grid Editor - Insert Mode" width="640" height="147" /></p> <p>Скрипт расширяет возможности системного компонента CRM Grid, заменяя ячейки на редактируемые поля. Изменения, конечно же, сохраняются в CRM.</p> <!--break--><p><img src="/sites/default/files/img/javascript-grid-editor/JavascriptGridEditor-EditMode.png" border="0" alt="Javascript Grid Editor - Edit Mode" width="640" height="147" /></p> <p>Процесс установки описан в <a href="http://crmentropy.blogspot.com/p/javascript-grid-editor.html" title="Javascript Grid Editor">блоге автора</a>.</p> <h3>Использование</h3> <p>В процессе настройки компонента на панели инструментов таблицы со списком записей появляются две новые кнопки: "Insert Mode" и "Edit Mode". Нажатие любой из них сначала приводит к инициализации скрипта, затем таблица переводится или в режим вставки новых записей или в режим редактирования существующих. В режиме вставки или редактирования имена кнопок меняются на “Save [New/All]” и “Cancel [New/All]”, действия которых описывать нет необходимости.</p> <p><strong>В режиме вставки</strong> появляется строка со значком в виде стрелки, нажатие на который вставляет новую строку в таблицу. Вставленная строка будет иметь "крестик", щёлкнув на который можно удалить строку.</p> <p><strong>В режиме редактирования</strong> выделение любой строки приведёт к переходу её состояния в редактируемое. Изменения не сохраняются автоматически (для этого есть кнопка “Save [New/All]”), так что, если вы внесёте изменения, а затем повторно выделите эту строку, ваши изменения пропадут.</p> <h3>Ограничения</h3> <ol> <li>Пользователи, работающие с данным скриптом должны иметь <strong>доступ к метаданным</strong> (соответствующая настройка роли).</li> <li>Изменять можно только записи, находящиеся в <strong>активном состоянии</strong>.</li> <li>При изменении записей, <strong>не вызываются клиентские скрипты</strong>, которые сработали бы, если запись редактировалась обычным способом - через форму.</li> <li>Режим вставки работает <strong>только</strong> если в представлении таблицы есть столбцы с обязательными полями (Business Required и System Required).</li> </ol> <p> </p> <p><a href="http://crmentropy.blogspot.com/p/javascript-grid-editor.html" title="The Javascript Grid Editor by David Berry">The Javascript Grid Editor by David Berry</a> is licensed under a <a href="http://creativecommons.org/licenses/by-sa/3.0/us/" title="Creative Commons Attribution-Share Alike 3.0 United States License">Creative Commons Attribution-Share Alike 3.0 United States License</a>.</p> </div></div></div><div class="form-item form-type-item"> <label>Язык </label> Русский </div> <div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above clearfix"><h3 class="field-label">Метки: </h3><ul class="links"><li class="taxonomy-term-reference-0"><a href="/category/tags/tools">tools</a></li><li class="taxonomy-term-reference-1"><a href="/category/tags/javascript">javascript</a></li></ul></div><div class="field field-name-field-field-vote field-type-fivestar field-label-above"><div class="field-label">field_vote:&nbsp;</div><div class="field-items"><div class="field-item even"><div class="clearfix fivestar-average-stars fivestar-average-text"><div class="fivestar-static-item"><div class="form-item form-type-item"> <div class="fivestar-default"><div class="fivestar-widget-static fivestar-widget-static-vote fivestar-widget-static-5 clearfix"><div class="star star-1 star-odd star-first"><span class="on">5</span></div><div class="star star-2 star-even"><span class="on"></span></div><div class="star star-3 star-odd"><span class="on"></span></div><div class="star star-4 star-even"><span class="on"></span></div><div class="star star-5 star-odd star-last"><span class="on"></span></div></div></div> <div class="description"><div class="fivestar-summary fivestar-summary-average-count"><span class="average-rating">Average: <span >5</span></span> <span class="total-votes">(<span >23</span> votes)</span></div></div> </div> </div></div></div></div></div> Tue, 16 Mar 2010 10:52:28 +0000 Vladislav Osmanov 12 at http://crrm.ru http://crrm.ru/articles/2010/03/javascript-grid-editor#comments MS CRM ScriptXtractor http://crrm.ru/articles/2010/02/mscrm-scriptxtractor <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Утилит для извлечения клиентских скриптов из файла кастомизации Microsoft Dynamics CRM существует несколько: одни являются надстройками над MS Word, другие - обычными Windows-приложениями.</p> <p>На самом деле, задача эта не простая, а очень простая - файл кастомизации представляет собой XML-документ (схема и описание появились в <a href="http://msdn.microsoft.com/en-us/library/bb930443.aspx">SDK последних версий</a>).</p> <p>А где XML, там и XSLT : )</p> <p>Извлекать скрипты будем динамически верстая HTML-таблицу с навигацией. И чтобы применить трансформацию к нашей кастомизации достаточно нескольких строк на javascript.</p> <!--break--><pre class="brush:jscript"> function LoadXml() { /* получаем путь к выбранному файлу кастомизации */ var customizationFile = document.getElementById("file"); /* в элемент DIV отобразим результат */ var result = document.getElementById("result"); /* загружаем таблицу стилей - наш XSL */ var xsl = new ActiveXObject("MSXML.DOMDocument"); xsl.load("ScriptXtractor.xsl"); /* загружаем XML с кастомизацией из выбранного файла */ var xmlCustomization = new ActiveXObject("MSXML.DOMDocument"); xmlCustomization.load(customizationFile.value); /* тут-то и происходит трансформация */ var str = xmlCustomization.transformNode(xsl); /* эскейпим символы для корректного отображения */ str = str.replace(/&lt;/g, "&lt;").replace(/&gt;/g, "&gt;").replace(/&amp;/g, "&amp;"); result.innerHTML = str; } </pre><p>Содержимое XSL-файла полностью не привожу, он есть в архиве и никакой сложности для понимания не представляет. Остановлюсь лишь на двух основных вещах: формировании выпадающего списка с перечнем сущностей и вёрсткой таблицы.</p> <pre class="brush:xml"> &lt;!-- определяем выпадающий список --&gt; &lt;select onchange="NavigateToTheEntity(this)"&gt; &lt;!-- перебираем в файле кастомизации все элементы сущностей CRM --&gt; &lt;xsl:for-each select="ImportExportXml/Entities/Entity"&gt; &lt;!-- определяем сортировку по имени сущности --&gt; &lt;xsl:sort select="Name" order="ascending"/&gt; &lt;!-- определяем переменную для хранения ObjectTypeCode сущности для скрипта навигации --&gt; &lt;xsl:variable name="otc" select="ObjectTypeCode"&gt;&lt;/xsl:variable&gt; &lt;!-- создаём элемент списка с именем сущности --&gt; &lt;option value="{$otc}" &gt; &lt;xsl:value-of select="Name"/&gt; (&lt;xsl:value-of select="ObjectTypeCode"/&gt;) &lt;xsl:value-of select="LocalizedName"/&gt; &lt;/option&gt; &lt;/xsl:for-each&gt; &lt;/select&gt; </pre><p>Думаю, основная идея XSL-преобразования понятна. Далее проходим по каждой сущности и формируем таблицу со скриптами: сначала получаем скрипты формы (события OnLoad/OnSave), затем для каждого поля.</p> <pre class="brush:xml"> &lt;!-- перебираем скрипты формы --&gt; &lt;xsl:for-each select="FormXml/forms/entity/form/events/event"&gt; &lt;xsl:choose&gt; &lt;!-- это скрипт приложения - доступный для редактирования пользователем --&gt; &lt;xsl:when test="self::node()[@application = 'true']"&gt; &lt;tr class="appScript"&gt; &lt;td class="fieldNameCell"&gt; &lt;!-- имя события хранится в атрибуте name --&gt; &lt;div class="eventLabel"&gt;Form event: &lt;xsl:value-of select="@name"/&gt;&lt;/div&gt; &lt;/td&gt; &lt;td class="scriptCell"&gt; &lt;!-- текст скрипта - в элементе script --&gt; &lt;xsl:value-of select="script"/&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/xsl:when&gt; &lt;xsl:otherwise&gt; &lt;!-- а это уже системные скрипты CRM (они не видны при настройке) --&gt; ... &lt;/xsl:otherwise&gt; &lt;/xsl:choose&gt; &lt;/xsl:for-each&gt; </pre><p> </p> <p>Cкрипты не извлекаются из файла в прямом смысле слова, просто исходную кастомизацию преобразуем (трансформируем) в таблицу.</p> <p><img style="display: block; margin-left: auto; margin-right: auto;" src="/sites/default/files/MSCRMScriptXtractor.png" border="0" alt="Microsoft Dynamics CRM ScriptXtractor" width="640" height="448" /></p> <p>Скачать утилиту со всеми приведёнными в статье кодами можно по ссылке снизу.</p> </div></div></div><div class="field field-name-upload field-type-file field-label-hidden"><div class="field-items"><div class="field-item even"><table class="sticky-enabled"> <thead><tr><th>Прикрепленный файл</th><th>Размер</th> </tr></thead> <tbody> <tr class="odd"><td><span class="file"><img class="file-icon" alt="Package icon" title="application/zip" src="/modules/file/icons/package-x-generic.png" /> <a href="http://crrm.ru/sites/default/files/tools/MSCRMScriptXtractor.zip" type="application/zip; length=3087" title="MSCRMScriptXtractor.zip">MSCRMScriptXtractor.zip</a></span></td><td>3.01 KB</td> </tr> </tbody> </table> </div></div></div><div class="form-item form-type-item"> <label>Язык </label> Русский </div> <div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above clearfix"><h3 class="field-label">Метки: </h3><ul class="links"><li class="taxonomy-term-reference-0"><a href="/category/tags/tools">tools</a></li><li class="taxonomy-term-reference-1"><a href="/category/tags/customization">customization</a></li><li class="taxonomy-term-reference-2"><a href="/category/tags/xslt">XSLT</a></li><li class="taxonomy-term-reference-3"><a href="/category/tags/javascript">javascript</a></li></ul></div><div class="field field-name-field-field-vote field-type-fivestar field-label-above"><div class="field-label">field_vote:&nbsp;</div><div class="field-items"><div class="field-item even"><div class="clearfix fivestar-average-stars fivestar-average-text"><div class="fivestar-static-item"><div class="form-item form-type-item"> <div class="fivestar-default"><div class="fivestar-widget-static fivestar-widget-static-vote fivestar-widget-static-5 clearfix"><div class="star star-1 star-odd star-first"><span class="on">2.925925</span></div><div class="star star-2 star-even"><span class="on"></span></div><div class="star star-3 star-odd"><span class="on" style="width: 92.5925%"></span></div><div class="star star-4 star-even"><span class="off"></span></div><div class="star star-5 star-odd star-last"><span class="off"></span></div></div></div> <div class="description"><div class="fivestar-summary fivestar-summary-average-count"><span class="average-rating">Average: <span >2.9</span></span> <span class="total-votes">(<span >27</span> votes)</span></div></div> </div> </div></div></div></div></div> Thu, 25 Feb 2010 18:49:37 +0000 Vladislav Osmanov 3 at http://crrm.ru http://crrm.ru/articles/2010/02/mscrm-scriptxtractor#comments