tag:blogger.com,1999:blog-73524199410887354452024-03-05T01:51:01.079-08:00Ulmaskulov Tech BlogAnonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.comBlogger82125tag:blogger.com,1999:blog-7352419941088735445.post-6615648037438293942019-02-18T02:07:00.001-08:002019-02-18T03:06:10.303-08:00Сертификация. Microsoft Certified Solutions Developer: App Builder<div dir="ltr" style="text-align: left;" trbidi="on">
<div>
Сдал последний экзамен в серии и получил Microsoft Certified Solutions Developer: App Builder</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1Echfr_xj2pprIrbPvhIfxA9FskqSXt6zEcKqVc2AVPoSMH7lxlZPEHSYUOvv-mZ3APfWjdGXl3Kwbf0RGMdKgYGmaeuZCeAd1k7Rm6Ndj6prsDEJCQgR4R3gRL8gR31N-L9rJr3bfgo/s1600/Ulmaskulov_App_Builder_Blog_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="794" data-original-width="1123" height="451" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1Echfr_xj2pprIrbPvhIfxA9FskqSXt6zEcKqVc2AVPoSMH7lxlZPEHSYUOvv-mZ3APfWjdGXl3Kwbf0RGMdKgYGmaeuZCeAd1k7Rm6Ndj6prsDEJCQgR4R3gRL8gR31N-L9rJr3bfgo/s640/Ulmaskulov_App_Builder_Blog_1.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="text-align: left;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Acclaim:<br />
<br />
<div style="text-align: justify;">
<a href="https://www.youracclaim.com/badges/ff53dda0-2a04-4d57-8f22-572a885e2391" style="text-align: center;"><img border="0" data-original-height="600" data-original-width="600" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0w1oaAzhKNywwEH5pBX1gYjgTvAmQ0G43QT9K2Qa_R_V_J2tMTJ6_D2d2aG0uoiiRfELLvtVN8I-gsrhrciPPmOEZhtfi3kFV6u8bmWgxlT_8cPx7zotb5hWQdoz53N8d4BO4Z9yJdtE/s200/Ulmaskulov_App_Builder_Blog_5.png" width="200" /></a> <a href="https://www.youracclaim.com/badges/7e3eada6-8c97-429c-987a-83c0481b5013" style="text-align: center;"><img border="0" data-original-height="352" data-original-width="352" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNSUaLIAS2se20R1omH_nZ6e7mLdr7faRlKzeFaSwvXmRUOM7eVBWPqc-SFKOaL6Qlqz6hSpiA1NMPrWqDNASJ23vVE5UXFrndL58CjI0G_VXu_DcMkecPmWfzjyLr8wEn3Nz49p7DeJc/s200/Ulmaskulov_App_Builder_Blog_6.png" width="200" /></a></div>
<div style="text-align: right;">
<br /></div>
<div>
Для получения выбрал следующий путь:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjt1mONsEhKgRDiTMXltnYiMnQ6LRH3oI3kv_FAUpJCzwbCTmPmmge1nik3vgVy9y98MBk9gbU8hcBZwH9tUtVh_vzTC7PFpCyl_uQKmKnB5OS6EWRyF-Jc9a2N-M30rsfOtzFREP0OZQ/s1600/Ulmaskulov_App_Builder_Blog_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="407" data-original-width="1098" height="235" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjt1mONsEhKgRDiTMXltnYiMnQ6LRH3oI3kv_FAUpJCzwbCTmPmmge1nik3vgVy9y98MBk9gbU8hcBZwH9tUtVh_vzTC7PFpCyl_uQKmKnB5OS6EWRyF-Jc9a2N-M30rsfOtzFREP0OZQ/s640/Ulmaskulov_App_Builder_Blog_3.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both;">
Сначала 2 экзамена для <a href="https://www.youracclaim.com/badges/993df1cd-dbe5-4564-8ae0-74c387be2cc8">Microsoft® Certified Solutions Associate: Web Applications</a>:</div>
<div class="separator" style="clear: both;">
</div>
<ul style="text-align: left;">
<li><a href="https://www.microsoft.com/en-us/learning/exam-70-483.aspx">483:<span style="white-space: pre;"> </span>Programming in C#</a></li>
<li><a href="https://www.microsoft.com/en-us/learning/exam-70-486.aspx">486:<span style="white-space: pre;"> </span>Developing ASP.NET MVC Web Applications</a></li>
</ul>
<br />
<div class="separator" style="clear: both;">
Потом еще один для <a href="https://www.youracclaim.com/badges/ff53dda0-2a04-4d57-8f22-572a885e2391">Microsoft® Certified Solutions Developer: App Builder</a>:</div>
<div class="separator" style="clear: both;">
</div>
<ul style="text-align: left;">
<li><a href="https://www.microsoft.com/en-us/learning/exam-70-487.aspx">487:Developing Microsoft Azure and Web Services</a></li>
</ul>
<div>
Для подготовки к последнему экзамену сначала использовал официальное руководство для подготовки:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzvDNtp3u_shXdXKYPiP8fGsJ7vs382LQ1BfhdlAGQEVVJvxvHddetuAPim2fNMOBaShBCHmCCL_CV_i0SoRiC6U2Jdl6cZCQPj7YtQUzrp82h6X0UfGTXSenk2xnelDWaLXFcC8Fb_gk/s1600/Ulmaskulov_App_Builder_Blog_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="500" data-original-width="405" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzvDNtp3u_shXdXKYPiP8fGsJ7vs382LQ1BfhdlAGQEVVJvxvHddetuAPim2fNMOBaShBCHmCCL_CV_i0SoRiC6U2Jdl6cZCQPj7YtQUzrp82h6X0UfGTXSenk2xnelDWaLXFcC8Fb_gk/s320/Ulmaskulov_App_Builder_Blog_4.png" width="259" /></a></div>
<div class="separator" style="clear: both;">
Его будет недостаточно, т.к. в пул вопросов добавлены:</div>
<div class="separator" style="clear: both;">
</div>
<ul style="text-align: left;">
<li>Docker</li>
<li>Azure</li>
<li>Cosmos DB</li>
<li>NuGet</li>
<li>Application Insights (что неприятно удивило)</li>
<li>Мало WCF</li>
</ul>
<br />
<div class="separator" style="clear: both;">
Следует обратить внимание на вопросы деплоя библиотек, Docker и в Azure.</div>
<div class="separator" style="clear: both;">
<br /></div>
<div>
<table cellspacing="0" class="transcriptTable" style="background-color: white; border: 1px; color: black; margin: auto; width: 795px;" summary="Exams Completed"><tbody></tbody></table>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com4tag:blogger.com,1999:blog-7352419941088735445.post-25543454860762380752018-06-24T03:35:00.002-07:002018-06-24T03:44:58.822-07:00Сертификация. Сдан экзамен 70-486: Developing ASP.NET MVC Web Applications<div dir="ltr" style="text-align: left;" trbidi="on">
На днях сдал экзамен <b>70-486: Developing ASP.NET MVC Web Applications</b>. Вот <a href="https://www.microsoft.com/ru-ru/learning/exam-70-486.aspx">описание</a> на сайте Microsoft. Это был второй и последний экзамен для сертификации <b>MCSA: Web Applications</b>.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaJpVgkEHAUFXd1f-iakG67wlCuWviMnDw8Ts51J1cLDHXXmwj63bQ3wS20OQHrBKah2DzBixAftAebGeYyXxJAM-RKESWXe09m-oh3AfxMluu53BCGYTpYERPjnvsXFP5I1fyYgFwirw/s1600/Ulmaskulov_Blog_Cert_70_486_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="816" data-original-width="1056" height="492" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaJpVgkEHAUFXd1f-iakG67wlCuWviMnDw8Ts51J1cLDHXXmwj63bQ3wS20OQHrBKah2DzBixAftAebGeYyXxJAM-RKESWXe09m-oh3AfxMluu53BCGYTpYERPjnvsXFP5I1fyYgFwirw/s640/Ulmaskulov_Blog_Cert_70_486_1.png" width="640" /></a></div>
<br />
<br />
Немного про бэйджи и лого. Microsoft использует сторонний сервис от Arvato по адресу <a href="https://www.certmarketplace.com/">https://www.certmarketplace.com</a>, там можно скачать свои лого, вроде этого:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFMdjttCon0iEtUSxcDppC4jh2BNjj8eBjiDqGlfPO5EGPv5Lk1WrIre9ULA8B21hjk_9FEieeXGcbgABJZ55WRGdJSe9pqrV6FkgRtW8Iun5yL8jXPPQu4-Nlwk_W_Lkq4giOe6zT3fI/s1600/Ulmaskulov_Blog_Cert_70_486_2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="228" data-original-width="378" height="120" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFMdjttCon0iEtUSxcDppC4jh2BNjj8eBjiDqGlfPO5EGPv5Lk1WrIre9ULA8B21hjk_9FEieeXGcbgABJZ55WRGdJSe9pqrV6FkgRtW8Iun5yL8jXPPQu4-Nlwk_W_Lkq4giOe6zT3fI/s200/Ulmaskulov_Blog_Cert_70_486_2.png" width="200" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Теперь они сотрудничают с <a href="https://www.youracclaim.com/">https://www.youracclaim.com</a> и их лого выглядят существенно интереснее:<br />
<div data-iframe-height="270" data-iframe-width="150" data-share-badge-id="993df1cd-dbe5-4564-8ae0-74c387be2cc8">
<script type="text/javascript">
(function() {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = '//cdn.youracclaim.com/assets/utilities/embed.js';
var o = document.getElementsByTagName('script')[0];
o.parentNode.insertBefore(s, o);
})();
</script>
</div>
<div data-iframe-height="270" data-iframe-width="150" data-share-badge-id="aefa4efc-1b41-4dd8-a164-bf83f48044de">
<script type="text/javascript">
(function() {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = '//cdn.youracclaim.com/assets/utilities/embed.js';
var o = document.getElementsByTagName('script')[0];
o.parentNode.insertBefore(s, o);
})();
</script>
</div>
<br />
Этот же экзамен я <a href="http://ulmaskulov.blogspot.com/2015/12/70-492upgrade-your-mcpd-web-developer-4.html" target="_blank">сдавал </a>в составе70-492, который, по сути, наполовину состоял из вопросов 70-486. Но есть нюанс, раньше экзамен под этим номером имел в названии точную версию используемого фреймворка и назывался <b>70-486: Developing ASP.NET MVC <span style="color: #cc0000;">4</span> Web Applications</b>. Т.е. нужно понимать, что материалы для подготовки для старой версии полностью не покроют вопросы экзамена, вопросы поменялись на 60%-70%. По моей оценке, книга <b>Exam Ref 70-486 Developing ASP.NET MVC 4 Web Applications (MCSD) </b>содержит около 30% от необходимого материала, при этом к прошлой версии экзамена применима цифра в 90%. Эта книга была переиздана. Будет много вопросов по ASP.NET Core, Azure и даже немного по Docker. Исчезло много вопросов по вёрстке, JavaScript и jQuery, но были по SignalR. Обратите внимание на деплой и особенно на конфигурирование самого веб-приложения ASP.NET Core, так как никакого web.config теперь нет (для IIS он еще конечно нужен). Изучите спецификацию OWIN, и утилиту коммандной строки .net core.<br />
<br />
Список книг для подготовки:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<a href="https://www.amazon.com/Exam-70-486-Developing-ASP-NET-Applications/dp/1509300929"><img border="0" data-original-height="317" data-original-width="260" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2JoBnO2O8XFFSgBN4EAA17TXJh6KKzeuNfruBECrOXnlTdmAhOWXHI94bXz3aInb9_aDT7p55xIC-GwxJhATXECBskukTUriBmuTg7Q68FJmw1KnxM83w0_D__LePHFNOzJA9y3-VwMs/s200/Ulmaskulov_Blog_Cert_70_486_7.png" width="164" /></a><br />
<a href="https://www.amazon.com/Exam-70-486-Developing-ASP-NET-Applications/dp/1509300929/ref=pd_rhf_dp_p_img_1?_encoding=UTF8&psc=1&refRID=S4NKC4HRT1NS6PB9RG6P">Developing ASP.Net MVC Web Applications</a><br />
<br />
<a href="https://www.blogger.com/"><span id="goog_1200090877"></span><img border="0" data-original-height="500" data-original-width="410" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijbf789GL4unCgOYr4QwcsbYmZqfcC3b_ZZKldx9mVXp6R7iaReWn3iUarULyvi0DEwxCUl0bEh6nGElrmVNhdKuXAHR09SEKSm4fXtx_KxPV6XO2pnaZsmJymK5B_XchUFrubDGoP0WE/s200/Ulmaskulov_Blog_Cert_70_486_4.png" width="163" /><span id="goog_1200090878"></span></a><span id="goog_1200090872"></span><a href="https://www.blogger.com/"></a><span id="goog_1200090873"></span><br />
<a href="http://www.informit.com/store/asp.net-core-application-development-building-an-application-9781509304066?ranMID=24808">ASP.NET Core Application Development: Building an application in four sprints</a><br />
<a href="https://www.ozon.ru/context/detail/id/142294520/">ASP.NET Core. Разработка приложений</a> (Кстати, перевод норм)<br />
<br />
<a href="https://www.syncfusion.com/ebooks/asp_net_core_succinctly"><img border="0" data-original-height="335" data-original-width="240" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj78soPa-nU5RC8QIZAhV9qzMqst7JdaYX0FuQ0IRw7eI1EUT7SBcsTWL0e4ErJU4pm6u9xCt-M6wr_5YmjYCkr-CuKrgWRGq-LKP_XM_tHWKqxC9TeEF8gV5ZuTip-kEBJ83PuN_ZJ09A/s200/Ulmaskulov_Blog_Cert_70_486_5.png" width="143" /></a><br />
<a href="https://www.syncfusion.com/ebooks/asp_net_core_succinctly">ASP.NET Core Succinctly</a> (Это бесплатная книга!)<br />
<br />
<a href="https://www.ozon.ru/context/detail/id/139614503/"><img border="0" data-original-height="1200" data-original-width="883" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXwCQd_ge5ZkY79sM7i8tHA8Wo93bsKGlF9LA7Z1Psq84fqRcl9NUy9KDfN4vzVGfYFwlgITXdFV7m73sBoSqZHqGEyZ2iWSctWYVC_oowPhZSCe9NzU6DExaHSJZlVQMWkiCynVYoelw/s200/Ulmaskulov_Blog_Cert_70_486_6.png" width="146" /></a><br />
<a href="https://www.ozon.ru/context/detail/id/139614503/">ASP.NET Core MVC с примерами на C# для профессионалов</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiC1Fl47cjuRpnzHlEQtjBg1xPBFOYuPkzaJib0gNt6p15qDbEA4kcqP6hsa2KByDzT_xRvFDpwLC9nANTlMBUxNabitTnxpUkOilTOIGRsQl_I5ltvclDzCbxLLzeZvofk9oA4V5-E-kA/s1600/Ulmaskulov_Blog_Cert_70_486_8.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="444" data-original-width="340" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiC1Fl47cjuRpnzHlEQtjBg1xPBFOYuPkzaJib0gNt6p15qDbEA4kcqP6hsa2KByDzT_xRvFDpwLC9nANTlMBUxNabitTnxpUkOilTOIGRsQl_I5ltvclDzCbxLLzeZvofk9oA4V5-E-kA/s200/Ulmaskulov_Blog_Cert_70_486_8.png" width="153" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<a href="https://www.microsoft.com/net/download/thank-you/aspnet-ebook">Architecting Modern Web Applications with ASP.NET Core and Azure</a> (Бесплатная книга!)<br />
<br />
<br />
Помимо книг я рекомендую курс <a href="https://www.pluralsight.com/courses/aspdotnet-core-mvc-enterprise-application">PluralSight.com</a><br />
Так же точно изучите статью с сайта доков <a href="https://docs.microsoft.com/en-us/vsts/pipelines/archive/apps/aspnet/aspnetcore-docker-to-azure?view=vsts">Microsoft'а по Azure & Docker</a>.<br />
<br />
Теперь остался последний экзамен до <b><a href="https://www.microsoft.com/ru-ru/learning/mcsd-app-builder-certification.aspx">Microsoft Certified Solutions Developer: App Builder</a></b>, особенность в том, что теперь можно выбрать один из 12 экзаменов и это будет <a href="https://www.microsoft.com/ru-ru/learning/exam-70-532.aspx">70-532</a>.<br />
<br />
<br />
<br /></div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com0tag:blogger.com,1999:blog-7352419941088735445.post-90403227516636573222017-12-25T02:28:00.001-08:002017-12-25T02:34:47.426-08:00Сертификация. Сдан экзамен 70-483: Programming in C#<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="background-color: white;"><span style="color: #666666; font-family: "trebuchet ms" , "trebuchet" , "verdana" , sans-serif;"><span style="font-size: 13.2px;">Сегодня сдал экзамен 70-483: Programming in C#. Вот </span></span></span><a href="https://www.microsoft.com/ru-ru/learning/exam-70-483.aspx" target="_blank">описание</a><span style="background-color: white; color: #666666; font-family: "trebuchet ms" , "trebuchet" , "verdana" , sans-serif; font-size: 13.2px;"> на сайте Microsoft.</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUWk0n9upMlh61S2rCUXzbtdu79ReheIYqIgvWnaKd4iDG6xTEwPSEIrNdVd_NJ3ijjI2kfW0Cu9xAQ50H0DAq-cwObIjYDGTH2kQI-YesWQ2i-UXL3OMqWyQanyvbtOz92VSoExbHYA4/s1600/Exam_70_483_Ulmaskulov_Blog.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUWk0n9upMlh61S2rCUXzbtdu79ReheIYqIgvWnaKd4iDG6xTEwPSEIrNdVd_NJ3ijjI2kfW0Cu9xAQ50H0DAq-cwObIjYDGTH2kQI-YesWQ2i-UXL3OMqWyQanyvbtOz92VSoExbHYA4/s400/Exam_70_483_Ulmaskulov_Blog.jpg" width="300" /></a></div>
<div class="separator" style="background-color: white; clear: both; color: #666666; font-family: "Trebuchet MS", Trebuchet, Verdana, sans-serif; font-size: 13.2px; text-align: center;">
<br /></div>
<div style="background-color: white; color: #666666; font-family: "Trebuchet MS", Trebuchet, Verdana, sans-serif; font-size: 13.2px;">
Оплатил картой 80$, сдавал в Софт Лайне. У них всегда большой выбор окон и дней для сдачи.</div>
<span style="background-color: white; color: #666666; font-family: "trebuchet ms" , "trebuchet" , "verdana" , sans-serif; font-size: 13.2px;">Для подготовки рекомендую:</span><br />
<ul style="background-color: white; line-height: 1.4; margin: 0.5em 0px; padding: 0px 2.5em;">
<li style="margin: 0px 0px 0.25em; padding: 0px;"><span style="color: #666666; font-family: "trebuchet ms" , "trebuchet" , "verdana" , sans-serif;"><span style="font-size: 13.2px;"><a href="https://www.amazon.com/Exam-Ref-70-483-Programming-MCSD-ebook/dp/B00JDMPLTG/ref=sr_1_1?s=digital-text&ie=UTF8&qid=1514196785&sr=1-1&keywords=70-483" target="_blank">Exam Ref 70-483 Programming in C# (MCSD): Programming in C#</a></span></span></li>
<li style="margin: 0px 0px 0.25em; padding: 0px;"><span style="color: #666666; font-family: "trebuchet ms" , "trebuchet" , "verdana" , sans-serif;"><span style="font-size: 13.2px;"><a href="https://www.amazon.com/Programmers-Study-Guide-MCSD-70-483-ebook/dp/B0736PQ584/ref=mt_kindle?_encoding=UTF8&me=" target="_blank">The C# Programmer’s Study Guide (MCSD): Exam: 70-483</a></span></span></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH1tf1zLMxJUqaxHuJ0Pj33_atI63WUIxmYiH8GLLa2G-pJYdYadWdzyAdEOSZMb6-ZyvpJ0j7Q9Xc10luJtROShAhIOg2r-JLOEDoXsKz6VWrdHgekXrs0NQtIoEliXoG3CJ7Ch19kp4/s1600/Exam_Study_Guide_C%2523_Book_Ulmaskulov_Blog.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="499" data-original-width="350" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH1tf1zLMxJUqaxHuJ0Pj33_atI63WUIxmYiH8GLLa2G-pJYdYadWdzyAdEOSZMb6-ZyvpJ0j7Q9Xc10luJtROShAhIOg2r-JLOEDoXsKz6VWrdHgekXrs0NQtIoEliXoG3CJ7Ch19kp4/s320/Exam_Study_Guide_C%2523_Book_Ulmaskulov_Blog.jpg" width="224" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnHT3Yaul2AH-arrR9eSekkCIS1oyrCpdvKUXCz-KNNO53AI8gguW9taezqPyvf3I59HVJNN8wHuV9dRbgq_ZhRDIWBtf-WAON1RqFMH0yIBpCxjzklKwI7kCDLmJlMEwgm7cjeveclbY/s1600/Exam_Ref_C%2523_Book_Ulmaskulov_Blog.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="500" data-original-width="410" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnHT3Yaul2AH-arrR9eSekkCIS1oyrCpdvKUXCz-KNNO53AI8gguW9taezqPyvf3I59HVJNN8wHuV9dRbgq_ZhRDIWBtf-WAON1RqFMH0yIBpCxjzklKwI7kCDLmJlMEwgm7cjeveclbY/s320/Exam_Ref_C%2523_Book_Ulmaskulov_Blog.jpg" width="262" /></a></div>
<br />
<br />
<span style="background-color: white;"><span style="color: #666666; font-family: "trebuchet ms" , "trebuchet" , "verdana" , sans-serif;"><span style="font-size: 13.2px;">Книгу от Microsoft можно купить <a href="https://www.microsoftpressstore.com/store/exam-ref-70-483-programming-in-c-sharp-9780735676824" target="_blank">здесь </a>со скидкой в 30% если вы уже MCP.</span></span></span><br />
<span style="background-color: white;"><span style="color: #666666; font-family: "trebuchet ms" , "trebuchet" , "verdana" , sans-serif;"><span style="font-size: 13.2px;"><br />Результаты надеялся получить получше, как всегда часть вопросов не относилась к моей практике.<br />Сам экзамен по C# мне не нужен был сертификации (для Web Developer 4), потом я шел по пути обновления. Сдав </span></span></span><span style="color: #666666; font-family: "trebuchet ms" , "trebuchet" , "verdana" , sans-serif;"><span style="font-size: 13.2px;"><a href="http://ulmaskulov.blogspot.ru/2015/12/70-492upgrade-your-mcpd-web-developer-4.html" target="_blank">экзамен 70-492:Upgrade your MCPD: Web Developer 4 to MCSD: Web Applications</a> — оставался всего один до MCPD: App Builder. Но Microsoft сменили пути сертификации и теперь всё сдавать снова. У меня был выбор, сдавать по html,css и пр. или по C#, я выбрал последнее. <br />Кстати, вот <a href="https://www.google.ru/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjtv-f0-qTYAhXkYZoKHcEtCmIQFggnMAA&url=http%3A%2F%2Fdownload.microsoft.com%2Fdownload%2FF%2F6%2F4%2FF6497D04-27F8-4FFE-B29A-6CD5B2FACEEE%2FMCP_Cert_Paths_10_15_17.pdf&usg=AOvVaw07LnW2__GQjywuM1ABLfqd" target="_blank">самый последний документ</a> с описанием путей сертификации.</span></span></div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com0tag:blogger.com,1999:blog-7352419941088735445.post-53252827074719431472017-08-06T05:45:00.001-07:002017-08-06T05:45:34.608-07:00SharePoint 2016. Обновление подписок на сайты после обновления.<div dir="ltr" style="text-align: left;" trbidi="on">
После апгрейда платформы с 2013 на 2016 версию в подписках на сайты остались ссылки на старый хост с именем <b>portal-web-srv</b>, у нового <b>portal16</b>. Это несмотря на то, что в DNS был создан псевдоним <b>portal</b>.<br /><br />
Вот как это выглядит:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZi7_Tfib13u5levhCxCuhsa27DOFRVGOKfLGA6yXRHGHVZj6sxg89X-wp6nzABnRhD9Xd573cjnhWVZIppNj5Ledk2UQKInmbUU-yPox-ynY5wuGc6iMMY2jrvkkuSeKsfCi917B9TCc/s1600/chrome_2017-08-06_13-25-53.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="268" data-original-width="412" height="260" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZi7_Tfib13u5levhCxCuhsa27DOFRVGOKfLGA6yXRHGHVZj6sxg89X-wp6nzABnRhD9Xd573cjnhWVZIppNj5Ledk2UQKInmbUU-yPox-ynY5wuGc6iMMY2jrvkkuSeKsfCi917B9TCc/s400/chrome_2017-08-06_13-25-53.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Как видно, отображается ссылка на старый хост, а при переходе будет сообщение об ошибке.<br />
В SharePoint подписки на отслеживаемый контент находится в списке Social (Социальные):<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX3vc5lKSkmbLp-qhXocyjYKsTtAQ3HXBAgeE7RamVObaZQ3jIPvcwmWvcDwZlfz2C_Lv_F1Y4NqYi6fhuA7KFBvWgz-R1zI85eiFjmTVhDRxNvyLDw3inDO__uoc9-h8LCMGIw_JhOuE/s1600/chrome_2017-08-06_15-21-08.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="120" data-original-width="253" height="151" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX3vc5lKSkmbLp-qhXocyjYKsTtAQ3HXBAgeE7RamVObaZQ3jIPvcwmWvcDwZlfz2C_Lv_F1Y4NqYi6fhuA7KFBvWgz-R1zI85eiFjmTVhDRxNvyLDw3inDO__uoc9-h8LCMGIw_JhOuE/s320/chrome_2017-08-06_15-21-08.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Этот список создается в каждой коллекции личных сайтов, по одному на пользователя.<br />Чтобы исправить ситуацию — надо изменить поле url для элементов этого списка, для этого воспользуемся powershell скриптом ниже. Он пробежится по всем коллекциям и найдет необходимый список, потом обновит все его элементы:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<pre style="color: #333333; line-height: 16.25px;"><span style="color: #007020;">Add-PSSnapin</span> Microsoft.SharePoint.Powershell
<span style="color: #996633;">$rootAppUrl</span> = <span style="background-color: #fff0f0;">"http://portal16"</span>
<span style="color: #996633;">$old</span> = <span style="background-color: #fff0f0;">"portal-web-srv"</span>
<span style="color: #996633;">$new</span> = <span style="background-color: #fff0f0;">"portal16"</span>
<span style="color: #996633;">$WebApp</span> = <span style="color: #007020;">Get-SPWebApplication</span> -Identity <span style="color: #996633;">$rootAppUrl</span>
<span style="color: #008800; font-weight: bold;">foreach</span> (<span style="color: #996633;">$site</span> <span style="color: #008800; font-weight: bold;">in</span> <span style="color: #996633;">$WebApp</span>.Sites)
{
<span style="color: #996633;">$web</span> = <span style="color: #996633;">$site</span>.RootWeb
<span style="color: #996633;">$list</span> = <span style="color: #996633;">$web</span>.Lists[<span style="background-color: #fff0f0;">"Социальные"</span>]
<span style="color: #008800; font-weight: bold;">foreach</span> (<span style="color: #996633;">$item</span> <span style="color: #008800; font-weight: bold;">in</span> <span style="color: #996633;">$list</span>.Items)
{
<span style="color: #996633;">$sPattern</span> = <span style="background-color: #fff0f0;">'*'</span> + <span style="color: #996633;">$old</span> + <span style="background-color: #fff0f0;">'*'</span>
<span style="color: #996633;">$url</span> = <span style="color: #996633;">$item</span>[<span style="background-color: #fff0f0;">"Url"</span>]
<span style="color: #008800; font-weight: bold;">if</span> (<span style="color: #996633;">$url</span> -like <span style="color: #996633;">$sPattern</span>)
{
<span style="color: #996633;">$nUrl</span> = <span style="color: #996633;">$url</span> -replace <span style="color: #996633;">$old</span>, <span style="color: #996633;">$new</span>
<span style="color: #996633;">$item</span>[<span style="background-color: #fff0f0;">"Url"</span>] = <span style="color: #996633;">$nUrl</span>
<span style="color: #996633;">$item</span>.Update()
}
}
<span style="color: #996633;">$web</span>.Dispose()
}</pre>
<pre style="color: #333333; line-height: 16.25px;">
</pre>
<pre style="color: #333333; line-height: 16.25px;">
</pre>
<pre style="color: #333333; line-height: 16.25px;">После отработки имеем следующий результат:</pre>
<pre style="color: #333333; line-height: 16.25px;"> </pre>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlf_YN63op_6BGaZdN80FY3VcICOVUA4vCTnbancYSW7Kn2pq6pRXwZkTXynZLLCPl0MuGGkKPVGd5LdqEgyB5VFrdpTzKO4L4aFcQGMFykN-fsZMWGSPLr82UtbcNSHHN_YyXh1E6VOM/s1600/mRemoteNG_2017-08-06_13-26-34.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="290" data-original-width="380" height="305" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlf_YN63op_6BGaZdN80FY3VcICOVUA4vCTnbancYSW7Kn2pq6pRXwZkTXynZLLCPl0MuGGkKPVGd5LdqEgyB5VFrdpTzKO4L4aFcQGMFykN-fsZMWGSPLr82UtbcNSHHN_YyXh1E6VOM/s400/mRemoteNG_2017-08-06_13-26-34.png" width="400" /></a></div>
<pre style="color: #333333; line-height: 16.25px;">
</pre>
</div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com0tag:blogger.com,1999:blog-7352419941088735445.post-1639450706860341932016-05-31T12:43:00.000-07:002016-05-31T12:43:33.315-07:00SharePoint. Вывод всех полей UPSA используя Powershell<div dir="ltr" style="text-align: left;" trbidi="on">
Ниже представлен небольшой скрипт для вывода основных полей из <b>User Profile Service Application</b>. Помимо тривиального перебора свойств <span style="line-height: 16.25px;"><b>Microsoft.Office.Server.UserProfiles.UserProfileManager, </b>стоит отметить наличие столбца, в котором указано привязанное поле в Active Directory и направление синхронизации. Так же есть небольшая особенность вывода значений в файл.</span><br />
<br />
<pre style="line-height: 125%; margin: 0;"><span style="color: green;"># Почистить вывод</span>
cls
<span style="color: green;"># Получить оснастку</span>
Add-PSSnapin <span style="color: #a31515;">"Microsoft.SharePoint.PowerShell"</span>
<span style="color: green;"># Указываем имя подключения (имя можно посмотреть по адресу:http://CA:port/_layouts/15/mgrdsserver.aspx?ApplicationID={GUID})</span>
$connectionName = <span style="color: #a31515;">"MyConnectionName"</span>
<span style="color: green;"># Адрес коллекции</span>
$siteUrl = <span style="color: #a31515;">"http://server:port"</span>
<span style="color: green;"># Получаем коллекцию</span>
$site = Get-SPSite $mySiteUrl
<span style="color: green;"># Получаем SPServiceContext</span>
$context = Get-SPServiceContext $site
<span style="color: green;"># Получаем все необходимые объекты</span>
$profileConfigManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileConfigManager($context)
$syncConnection = $profileConfigManager.ConnectionManager[$connectionName]
$profileManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($context)
$propertyList = New-Object System.Collections.Generic.List[System.Object]
<span style="color: green;"># Формируем список</span>
<span style="color: blue;">foreach</span> ($p <span style="color: blue;">in</span> $profileManager.properties)
{
$propertyObject = New-Object PSObject
<span style="color: green;"># Системное имя</span>
$propertyObject | Add-Member Name $p.Name
<span style="color: green;"># Отображаемое имя</span>
$propertyObject | Add-Member DisplayName $p.DisplayName
<span style="color: green;"># Переводы на интересующие языки (Ru)</span>
$propertyObject | Add-Member LocalRU $p.DisplayNameLocalized[1049]
<span style="color: green;"># Переводы на интересующие языки (En)</span>
$propertyObject | Add-Member LocalEN $p.DisplayNameLocalized[1033]
<span style="color: green;"># Тип </span>
$propertyObject | Add-Member Type $p.Type
<span style="color: green;"># Размер поля</span>
$propertyObject | Add-Member Length $p.Length
<span style="color: green;"># Синхронизируемое поле в АД</span>
$pm = $syncConnection.PropertyMapping[$p.Name]
$propertyObject | Add-Member PropertyNameAD $pm.DataSourcePropertyName
<span style="color: green;"># Направление синхронизации </span>
$propertyObject | Add-Member IsImportFromAD $pm.IsImport
<span style="color: green;"># Обязательность</span>
$propertyObject | Add-Member IsRequired $p.IsRequired
<span style="color: green;"># Параметр конфиденциальности </span>
$propertyObject | Add-Member DefaultPrivacy $p.DefaultPrivacy
<span style="color: green;"># Возможность переопределения конфиденциальности</span>
$propertyObject | Add-Member UserOverridePrivacy $p.UserOverridePrivacy
<span style="color: green;"># Возможность изменения пользователем</span>
$propertyObject | Add-Member IsUserEditable $p.IsUserEditable
<span style="color: green;"># Отображение на странице просмотра</span>
$propertyObject | Add-Member IsVisibleOnViewer $p.IsVisibleOnViewer
<span style="color: green;"># Отображение на форме изменения</span>
$propertyObject | Add-Member IsVisibleOnEditor $p.IsVisibleOnEditor
<span style="color: green;"># Индексация (в смысле доступен для поиска)</span>
$propertyObject | Add-Member IsSearchable $p.IsSearchable
<span style="color: green;"># Добавить в список</span>
$propertyList.Add($propertyObject)
}
<span style="color: green;"># Выводим список на экран в отдельном окне в сетке</span>
$propertyList | Out-GridView
<span style="color: green;"># Выводим список в текстовый файл с заголовками </span>
$propertyList | Format-Table -Property * -AutoSize ` | Out-String -Width 4096 ` | Out-File C:\FileName.txt
</pre>
<br />
Имя соединения можно посмотреть в настройках UPSA, там может быть несколько соединений.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh54bddUb2UvRti0D1hmmSYwsJyGncUA0yDH-DNuAkPW8ZYBDJgbZFC1z163kVTfPVpATp7whA8EKjRsL4wOYMnwV_zTvseuWLHLxCpMo5zaF2VEg5JaTrQoygDfbvtqKzhfe_7hRHR_k/s1600/Ulmaskulov_Blog_All_UPSA_Fields.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="121" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh54bddUb2UvRti0D1hmmSYwsJyGncUA0yDH-DNuAkPW8ZYBDJgbZFC1z163kVTfPVpATp7whA8EKjRsL4wOYMnwV_zTvseuWLHLxCpMo5zaF2VEg5JaTrQoygDfbvtqKzhfe_7hRHR_k/s640/Ulmaskulov_Blog_All_UPSA_Fields.png" width="640" /></a></div>
<br />
<br />
Обратите внимание на кусочек вывода в файл. Необходимо указывать "<span style="line-height: 16.25px;">Out-String" чтобы строки не обрезались.</span></div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com0tag:blogger.com,1999:blog-7352419941088735445.post-57874782331722015812016-04-29T09:28:00.000-07:002016-05-24T08:03:22.782-07:00SharePoint. Переводные столбцы списка. <div dir="ltr" style="text-align: left;" trbidi="on">
<div class="MsoNormal">
В SharePoint есть возможность задать имя колонки так, чтобы оно меняло своё значение в зависимости от языка. В представлении списка и на форме:</div>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHyWz4JF8H7Wnq6mRvMrP6eMUmPvdbotPMMjChdbWwSYxkOZWP1UUawY2qHfzyRNO8lR_liv2I5L1OsXlH8Y22HpPidfqO7B8T614ls_hjblsxvI5IxQiuAc9meHsegxrDRSJ4OO8e710/s1600/Ulmaskulov_blog_translated_list_columns_0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="152" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHyWz4JF8H7Wnq6mRvMrP6eMUmPvdbotPMMjChdbWwSYxkOZWP1UUawY2qHfzyRNO8lR_liv2I5L1OsXlH8Y22HpPidfqO7B8T614ls_hjblsxvI5IxQiuAc9meHsegxrDRSJ4OO8e710/s640/Ulmaskulov_blog_translated_list_columns_0.png" width="640" /></a></div>
<div class="MsoNormal">
<br />
Для того, чтобы столбец стал переводным – необходимо задать
его имя выражением:</div>
<div class="MsoNormal">
<b>$Resources:</b><b><span lang="EN-US">fileWithDict</span>,</b><b><span lang="EN-US">key</span>;<o:p></o:p></b></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
Где:</div>
<div class="MsoNormal">
<span lang="EN-US"><b>$Resources</b>
– </span>признак выражения<span lang="EN-US" style="font-weight: bold;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span lang="EN-US" style="font-weight: bold;">fileWithDict
– </span>файл словаря<span lang="EN-US">, </span>должен
находиться по адресу <span lang="EN-US"><i>“</i></span><span lang="EN-US"><i>C:\Program Files\Common
Files\microsoft shared\Web Server Extensions\15\Resources”</i> </span>и
иметь имя <span lang="EN-US"><i>fileWithDict.ru-ru.resx</i>,
<i>ru-ru</i> </span>это культура<span lang="EN-US">.</span><span lang="EN-US"><o:p></o:p></span></div>
<div class="MsoNormal">
<span lang="EN-US" style="font-weight: bold;">key </span>–
ключ по которому ищется значение в файле-словаре<b><o:p></o:p></b><br />
<br />
Задать переводное имя столбца можно даже при создании через web-интерфейс, вместо имени надо вписать выражение:</div>
<div class="MsoNormal">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqdy0RmwTZshENfQUyeH8Gy_Nvnytz3oe3VooOY2-OEKJjVsMNd9Lk_H24sZyYSkBfdlrqxFQPuMwl4EvOSBCWEMMKUVaUVCx9AhChVfYWQ8i0HZXBVX-rOQJttW8FVwHamWfmXlqjSEo/s1600/Ulmaskulov_blog_translated_list_columns_03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="135" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqdy0RmwTZshENfQUyeH8Gy_Nvnytz3oe3VooOY2-OEKJjVsMNd9Lk_H24sZyYSkBfdlrqxFQPuMwl4EvOSBCWEMMKUVaUVCx9AhChVfYWQ8i0HZXBVX-rOQJttW8FVwHamWfmXlqjSEo/s400/Ulmaskulov_blog_translated_list_columns_03.png" width="400" /></a></div>
<br />
На самом деле там не словарь, а <span lang="EN-US"><a href="https://msdn.microsoft.com/ru-ru/library/ekyft91f(v=VS.90).aspx">xml</a></span>. Но вы об этом не думайте и
воспринимайте как словарь.<br />
<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Чтобы система показала соответствующий язык – ей надо знать
предпочтения пользователя.<br />
Чтобы указать языковые предпочтения перейдите в раздел "Мой язык и регион" как на картинке:<br />
<br />
<o:p></o:p></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKtb3Yo7UH7g7xl2BxNFUxlf0_OdFmiI6Uq9lUpZSSYtP_VXU2j8OPGXq4z-7zT9qyAB_K9OeDd_7Vr9xz896YdNpoPx_QNp81vHUgxd_jEx2NaToghUxVwdPH_hRZ8OkX7sWtwCAeI-s/s1600/Ulmaskulov_blog_translated_list_columns_1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="208" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKtb3Yo7UH7g7xl2BxNFUxlf0_OdFmiI6Uq9lUpZSSYtP_VXU2j8OPGXq4z-7zT9qyAB_K9OeDd_7Vr9xz896YdNpoPx_QNp81vHUgxd_jEx2NaToghUxVwdPH_hRZ8OkX7sWtwCAeI-s/s640/Ulmaskulov_blog_translated_list_columns_1.png" width="640" /></a><o:p> </o:p></div>
<div class="MsoNormal">
Потом выбираем используемые языки. Приоритет важен:<o:p></o:p></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNavcxpYYzmCjVO0dyqBR8mzRAqc-W7KEFJTwufRyzZNy_EbwPP1x1HH5_Shqz1Sg4ivz3hZM_pFS636pPdcciB1lQWugvVMhSMpWpGwin6umzKpqD8JWHFnzDOQAgoKM4Y0kanMvwifM/s1600/Ulmaskulov_blog_translated_list_columns_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="170" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNavcxpYYzmCjVO0dyqBR8mzRAqc-W7KEFJTwufRyzZNy_EbwPP1x1HH5_Shqz1Sg4ivz3hZM_pFS636pPdcciB1lQWugvVMhSMpWpGwin6umzKpqD8JWHFnzDOQAgoKM4Y0kanMvwifM/s640/Ulmaskulov_blog_translated_list_columns_2.png" width="640" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
С виду всё, но чтобы работало надо еще и включить
дополнительный язык в свойствах узла.<br />
Переходим в настройки узла:<br />
<br />
<o:p></o:p></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3BiXRjPkEguGP3arkASQlqocdScBheqcyD56Ahnk_JpIO5cVIDSALqmyDC5T57u6NdbuGxPU1NUwYIZLtC9bdLnkvkIeM6k2aQhNFfa4hg6ETohNGLQ9wWaH8_OWgFnp6JJRGiuFN6Ug/s1600/Ulmaskulov_blog_translated_list_columns_4.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3BiXRjPkEguGP3arkASQlqocdScBheqcyD56Ahnk_JpIO5cVIDSALqmyDC5T57u6NdbuGxPU1NUwYIZLtC9bdLnkvkIeM6k2aQhNFfa4hg6ETohNGLQ9wWaH8_OWgFnp6JJRGiuFN6Ug/s320/Ulmaskulov_blog_translated_list_columns_4.png" width="300" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
Выбираем языковые параметры:<o:p></o:p><br />
<div class="MsoNormal">
<!--[if gte vml 1]><v:shape
id="Рисунок_x0020_6" o:spid="_x0000_i1028" type="#_x0000_t75" alt="" style='width:178.5pt;
height:188.25pt'>
<v:imagedata src="file:///C:\Users\ULMASK~1\AppData\Local\Temp\msohtmlclip1\01\clip_image007.png"
o:href="cid:image007.png@01D19C99.143FA620"/>
</v:shape><![endif]--><!--[if !vml]--><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMPSq2TrjZmj3Ro6WJv1ulZQa7nkIN3lXqXmLTxBSstniR5tQzZoqJKIMTXgkU6es0CTlG7W0kl_Fxn4QGNWHMhad5SnAY0QvQaFaJ-t6B_GgidaoDY6YRhJkrKpIfYS8SaAi8Uf9hwyI/s1600/Ulmaskulov_blog_translated_list_columns_5.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="267" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMPSq2TrjZmj3Ro6WJv1ulZQa7nkIN3lXqXmLTxBSstniR5tQzZoqJKIMTXgkU6es0CTlG7W0kl_Fxn4QGNWHMhad5SnAY0QvQaFaJ-t6B_GgidaoDY6YRhJkrKpIfYS8SaAi8Uf9hwyI/s400/Ulmaskulov_blog_translated_list_columns_5.png" width="400" /></a><br />
<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br />
<br />
Отмечаем дополнительный язык. Чтобы появился дополнительный язык, которого нет в списке - установите Language Pack.<br />
<br />
Кстати, именно таким образом заданы встроенные поля. Проверим это созвав настраиваемый список и выведем все поля в представление:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXRB6koVMXJDLYCBOCBXCzDLQLO8RCjuTKJkgePFZky_jFJZEsgoMQcgqKU75R59HgNDNY4gx5g_VKodf-Mh82dK6xFkNt_EMOofiaETXzkcdCHITeQQur31_gdvGP9in9EPkxCDuKXcA/s1600/Ulmaskulov_blog_translated_list_columns_02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXRB6koVMXJDLYCBOCBXCzDLQLO8RCjuTKJkgePFZky_jFJZEsgoMQcgqKU75R59HgNDNY4gx5g_VKodf-Mh82dK6xFkNt_EMOofiaETXzkcdCHITeQQur31_gdvGP9in9EPkxCDuKXcA/s1600/Ulmaskulov_blog_translated_list_columns_02.png" /></a></div>
<br /></div>
<div class="MsoNormal">
А теперь поменяем добавим английский язык в список предпочитаемых или повысим его приоритет:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEciYeQETGUV3N1bdbizc0IRoq5W3cKI3uLjqGfAyIAr8e-eb5LrZrWNGtcmVgQ1KWdPzAI9GxHkRFjGEVdPhirUk6mHGDaTgMTanXbtVu58psq7L2fWR1ZCaW3RJE8fjd_3qvdnVndVM/s1600/Ulmaskulov_blog_translated_list_columns_01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEciYeQETGUV3N1bdbizc0IRoq5W3cKI3uLjqGfAyIAr8e-eb5LrZrWNGtcmVgQ1KWdPzAI9GxHkRFjGEVdPhirUk6mHGDaTgMTanXbtVu58psq7L2fWR1ZCaW3RJE8fjd_3qvdnVndVM/s1600/Ulmaskulov_blog_translated_list_columns_01.png" /></a></div>
<br /></div>
Отличный механизм. В моём случае приоритеты языков для пользователя были заданы принудительно в службе профилей на основе принадлежности к домену.<br />
<br />
Так же можно переводить значения полей, подробнее описано в <a href="http://blog.vitalyzhukov.ru/ru/sharepoint-2010-2013-item-value-localization.aspx">посте</a> от <a href="https://www.facebook.com/zhukovv">Виталия Жукова</a>.<br />
<div class="MsoNormal">
<br /></div>
</div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com0tag:blogger.com,1999:blog-7352419941088735445.post-40681844396481396392016-04-29T06:31:00.001-07:002016-04-29T06:31:16.916-07:00SharePoint 2013. Проблема указания дня рождения. Ошибка "Введенная дата имеет недопустимый формат или лежит вне допустимого диапазона"<div dir="ltr" style="text-align: left;" trbidi="on">
При попытке изменить дату рождения в службе профилей столкнулся с ошибкой:<br /><b><i>"Введенная дата имеет недопустимый формат или лежит вне допустимого диапазона. Введите допустимую дату в формате 29 апреля."</i></b><br />
<b><i><br /></i></b>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUDJitT4MAnZXKO8HV1-u265Cy4wzYD96e86n9Y6V2qXjptZ7XAiA15AuGkmZnoSjtoUiUfutqzrhpFQYftLs-mVzkZVD6UIBbejEkbFStCUBRux14k9vaJm4RPWCxFLo9tWFTMl8H6n8/s1600/Ulmaskulov_blog_%25D0%2598%25D0%25B7%25D0%25BC%25D0%25B5%25D0%25BD%25D0%25B5%25D0%25BD%25D0%25B8%25D0%25B5_%25D1%2581%25D0%25B2%25D0%25B5%25D0%25B4%25D0%25B5%25D0%25BD%25D0%25B8%25D0%25B9_%25D0%25BE%25D1%2588%25D0%25B8%25D0%25B1%25D0%25BA%25D0%25B0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="579" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUDJitT4MAnZXKO8HV1-u265Cy4wzYD96e86n9Y6V2qXjptZ7XAiA15AuGkmZnoSjtoUiUfutqzrhpFQYftLs-mVzkZVD6UIBbejEkbFStCUBRux14k9vaJm4RPWCxFLo9tWFTMl8H6n8/s640/Ulmaskulov_blog_%25D0%2598%25D0%25B7%25D0%25BC%25D0%25B5%25D0%25BD%25D0%25B5%25D0%25BD%25D0%25B8%25D0%25B5_%25D1%2581%25D0%25B2%25D0%25B5%25D0%25B4%25D0%25B5%25D0%25BD%25D0%25B8%25D0%25B9_%25D0%25BE%25D1%2588%25D0%25B8%25D0%25B1%25D0%25BA%25D0%25B0.png" width="640" /></a></div>
<br />Была попытка ввести дату без года в предложенном формате "29 апреля", но как оказалось, вводить дату надо в формате dd.mm, например так: 29.04<br />
<br /></div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com0tag:blogger.com,1999:blog-7352419941088735445.post-10035304014652257822016-03-31T08:49:00.000-07:002016-04-01T08:50:35.712-07:00Ошибка при открытии списка SharePoint 2013<div dir="ltr" style="text-align: left;" trbidi="on">
После свежей установки SharePoint Foundation 2013 не работают списки. При попытке открыть представления не удавалось просмотреть элементы, только заголовок:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXvJwDWWr7Ex-LkIvTEP9aXeIWTRvK1UU9RsApZ4Z8woIQpSMwXEvF8lBipEsLSFnOiosKRXGih1jgJbAs9McMXV90pAp2Wv3Zf_iv4V47MR9Bf3hGaEtGX8KCrIH3wQMfzzMNXVdgNF0/s1600/Ulmaskulov_Blog_List_View_Error.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="224" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXvJwDWWr7Ex-LkIvTEP9aXeIWTRvK1UU9RsApZ4Z8woIQpSMwXEvF8lBipEsLSFnOiosKRXGih1jgJbAs9McMXV90pAp2Wv3Zf_iv4V47MR9Bf3hGaEtGX8KCrIH3wQMfzzMNXVdgNF0/s640/Ulmaskulov_Blog_List_View_Error.png" width="640" /></a></div>
Вместо элементов текст возникшей ошибки:<br />
<b>TypeError: Cannot read property 'replace' of undefined или TypeError: Не удалось получить свойство "replace" ссылки, значение которой не определено или является NULL.</b><br />
<b><br /></b>
Для исправления ситуации необходимо отредактировать файл <b>clienttemplates.js</b> по адресу:<br />
<b>C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\TEMPLATE\LAYOUTS\clienttemplates.js</b><br />
<br />
Замените <b>L_ItemOpenMenu</b> на <b>L_OpenMenu</b>. Для принятия изменений выполните команду <b>IISReset</b> в cmd.exe<br />
<br />
На данный момент (<i>31.03.2016</i>) можно просто обновиться до более поздней версии, это так же исправит проблему.</div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com0tag:blogger.com,1999:blog-7352419941088735445.post-7041731657599000232016-02-29T01:49:00.000-08:002016-02-29T01:49:09.399-08:00SharePoint.Создать ярлык документа.<div dir="ltr" style="text-align: left;" trbidi="on">
SharePoint позволяет создавать ярлыки к документам.<br />
Ярлык выглядит так:<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqm7WruIwy1MaJZIyN_0legvV09QHa-ltYGpstzIPlyTwWHy-yQ4A9UAp1HXQYtil9wGGZINmUA-f1AoXrGD55Bm_fjbvP8NmeuUsE3uuOq5TpdN2hW1U7FIeJrzkx_PHJmV0fyv_1mBw/s1600/Ulmaskulov_blog_shortcut_1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="40" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqm7WruIwy1MaJZIyN_0legvV09QHa-ltYGpstzIPlyTwWHy-yQ4A9UAp1HXQYtil9wGGZINmUA-f1AoXrGD55Bm_fjbvP8NmeuUsE3uuOq5TpdN2hW1U7FIeJrzkx_PHJmV0fyv_1mBw/s640/Ulmaskulov_blog_shortcut_1.png" width="640" /></a><br />
<br />
<br />
Чтобы возможность создавать ярлыки появилась - необходимо ее включить. Изначально она не работает. Чтобы ее включить необходимо перейти в настройки списка:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0wIqq2Yi6GBi6r54vB2ldwN7kN-4Wmu9VoTCwIoRQsymcJBeYewb9xU3MxJ24N71XdwX1zJkGpkvZTQao4qHuiEto22ZMMJB1t810J81AKOanS6YRn2-ieq_5qi4363NgWq8nBwLMOUQ/s1600/Ulmaskulov_blog_shortcut_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0wIqq2Yi6GBi6r54vB2ldwN7kN-4Wmu9VoTCwIoRQsymcJBeYewb9xU3MxJ24N71XdwX1zJkGpkvZTQao4qHuiEto22ZMMJB1t810J81AKOanS6YRn2-ieq_5qi4363NgWq8nBwLMOUQ/s1600/Ulmaskulov_blog_shortcut_2.png" /></a></div>
<br />
В разделе "Дополнительные параметры" выбрать:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmbL7HM3Oir2J2gs2c-YuacHBuOmrodv3dv6ZdGKwYPiBaW_1_9MSMQlPabhKAe2DThyphenhyphenC_zbdkWQ_5ojkDm1aPsq5OubJtC5iF1PHR2QPXYrBEy_5JDI9a-LOOe8B1n3Z1jbGwgFna41E/s1600/Ulmaskulov_blog_shortcut_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="161" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmbL7HM3Oir2J2gs2c-YuacHBuOmrodv3dv6ZdGKwYPiBaW_1_9MSMQlPabhKAe2DThyphenhyphenC_zbdkWQ_5ojkDm1aPsq5OubJtC5iF1PHR2QPXYrBEy_5JDI9a-LOOe8B1n3Z1jbGwgFna41E/s400/Ulmaskulov_blog_shortcut_3.png" width="400" /></a></div>
<br />
После разрешения управлять типами контента списка, в настройках появится блок "Типы контента". Под ним есть ссылка на добавление типа контента к списку. Перейдите по ссылке "Добавить из существующих типов контента":<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh88twwiqObhzN4O3vAvPL3rcicn_x8p4knAy6Qxm2qJQUc4nGqDmt9_wiLhmxvP0fNIxfwXPeK9bmOFaIShNy5i-rb1EyuHQ08Llv1dPlcEswKkc_evscVKW1EbZ6wNz-JonR7sS_J3Gc/s1600/Ulmaskulov_blog_shortcut_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="126" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh88twwiqObhzN4O3vAvPL3rcicn_x8p4knAy6Qxm2qJQUc4nGqDmt9_wiLhmxvP0fNIxfwXPeK9bmOFaIShNy5i-rb1EyuHQ08Llv1dPlcEswKkc_evscVKW1EbZ6wNz-JonR7sS_J3Gc/s400/Ulmaskulov_blog_shortcut_4.png" width="400" /></a></div>
<br />
Из окна с доступными типами выберите "Связь с документом":<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQbLGiM4t0xn52NKeDbfa3aFFuxXMq57PHHzHCw6AZsLYvHPL_NR6fAUIbaE-IMixTR75E9YhU_0gUgPiQhR5UTLkp7OyBplOvCH6oVbejMj9ekklIp_tVeresRK3fTUlN-5soD_jED-U/s1600/Ulmaskulov_blog_shortcut_5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="231" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQbLGiM4t0xn52NKeDbfa3aFFuxXMq57PHHzHCw6AZsLYvHPL_NR6fAUIbaE-IMixTR75E9YhU_0gUgPiQhR5UTLkp7OyBplOvCH6oVbejMj9ekklIp_tVeresRK3fTUlN-5soD_jED-U/s400/Ulmaskulov_blog_shortcut_5.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
Перед созданием ярлыка необходимо знать путь к документу (из какой-то другой библиотеки) для которого мы создаем ярлык. Простой способ скопировать путь:</div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibzdcjw1ucH92vqTRuDzdyANoV7RgTodgY6lqujuSVH0d-t95K2tDvKdnFbOW0AvLkYQXK2p_1JTFM_XJR9rYlC-wt-HRAr3C8DTQHV0BnOhX9JEEiLIZ_wvrNfGDalOOVTREurWZ7r6I/s1600/Ulmaskulov_blog_shortcut_7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="291" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibzdcjw1ucH92vqTRuDzdyANoV7RgTodgY6lqujuSVH0d-t95K2tDvKdnFbOW0AvLkYQXK2p_1JTFM_XJR9rYlC-wt-HRAr3C8DTQHV0BnOhX9JEEiLIZ_wvrNfGDalOOVTREurWZ7r6I/s640/Ulmaskulov_blog_shortcut_7.png" width="640" /></a></div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both;">
Теперь можно создать ярлык документа в другой библиотеке. Для этого перейдите в библиотеку где необходимо создать ярлык, с ленты инструментов создайте его:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidLc7h_2FjmhSyQkPH46S7swPXQyi8wykjp-TNF4zq7LaurosxyG2im8Q_ZyElCH5C4HoGro1QsNpauT70OkamToyV-1G1h6RMJG8zPfW6XRYQuaedhD4hA7BC_b41fXi7XUstV2PwmCc/s1600/Ulmaskulov_blog_shortcut_6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="195" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidLc7h_2FjmhSyQkPH46S7swPXQyi8wykjp-TNF4zq7LaurosxyG2im8Q_ZyElCH5C4HoGro1QsNpauT70OkamToyV-1G1h6RMJG8zPfW6XRYQuaedhD4hA7BC_b41fXi7XUstV2PwmCc/s200/Ulmaskulov_blog_shortcut_6.png" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
Появится форма создания, заполните ее, нажмите "ОК":</div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfKedWOxEBIY6GCVvTuZqrt5z7FfQp7A8Iq4QtwK2bZCT5ApuxG66lIPv6JFNIih0WambQ64L9vtw3QhTjCdnWYK99Gp-7COJkIuD1_Nm9GBqpNC_05bKDEKlDTzwz9Zt1bH6P6Tmgdto/s1600/Ulmaskulov_blog_shortcut_8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="106" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfKedWOxEBIY6GCVvTuZqrt5z7FfQp7A8Iq4QtwK2bZCT5ApuxG66lIPv6JFNIih0WambQ64L9vtw3QhTjCdnWYK99Gp-7COJkIuD1_Nm9GBqpNC_05bKDEKlDTzwz9Zt1bH6P6Tmgdto/s400/Ulmaskulov_blog_shortcut_8.png" width="400" /></a></div>
<br />
А потом еще раз "ОК":<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaD-lRT5meEgBMsUAYdz0SMIYQTeC7cZabVOiau4mdq2RnT4QR1-zeV9JSMdYY1B7lJmM6cbYGmyIA5W_TCDnNa17_3XcDS9khTf3GzfNCUXPN50xSFf_v_yOvSZXvgJAUU6s6aM-9ePs/s1600/Ulmaskulov_blog_shortcut_9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="168" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaD-lRT5meEgBMsUAYdz0SMIYQTeC7cZabVOiau4mdq2RnT4QR1-zeV9JSMdYY1B7lJmM6cbYGmyIA5W_TCDnNa17_3XcDS9khTf3GzfNCUXPN50xSFf_v_yOvSZXvgJAUU6s6aM-9ePs/s400/Ulmaskulov_blog_shortcut_9.png" width="400" /></a></div>
<br />
В библиотеке появится элемент как в самом начале статьи:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHt3ZTaVSZA2q2luEJjrqSyMbFkemWG4g1y1BMu3ust0Suv56fV4qGiWV267WKsU8kYg4cpL1Xktk9Wy8IoA8MPyqNMP5xYBduTkB9q-5AY3TrY-GwlKcGGElfWhzaXV8Vyl9hbaoyTWg/s1600/Ulmaskulov_blog_shortcut_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="40" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHt3ZTaVSZA2q2luEJjrqSyMbFkemWG4g1y1BMu3ust0Suv56fV4qGiWV267WKsU8kYg4cpL1Xktk9Wy8IoA8MPyqNMP5xYBduTkB9q-5AY3TrY-GwlKcGGElfWhzaXV8Vyl9hbaoyTWg/s640/Ulmaskulov_blog_shortcut_1.png" width="640" /></a></div>
<br />
При клике произойдет переход по указанной ссылке. В нашей ссылке в url был установлен параметр "Web=1", значит офисный документ сразу откроется в Office Web Apps:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhESeynD72tg6jQagVGuA7GmGKiFDoJeviT3CDtWD1a8fxKDn26BO37c87JUtj0TxRwo1ZnNZUx614Sio8o9f62L2bmlrTib3vaNv3ZJ3YnqPl_F7C1jkEvLiQWV8NW1RzHR8NSxQFZh5c/s1600/Ulmaskulov_blog_shortcut_10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="340" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhESeynD72tg6jQagVGuA7GmGKiFDoJeviT3CDtWD1a8fxKDn26BO37c87JUtj0TxRwo1ZnNZUx614Sio8o9f62L2bmlrTib3vaNv3ZJ3YnqPl_F7C1jkEvLiQWV8NW1RzHR8NSxQFZh5c/s400/Ulmaskulov_blog_shortcut_10.png" width="400" /></a></div>
<br />
Что именно произошло? Была создана страница .aspx:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtKfRSP6QggmM5-oraFrXkH6bAFUUuRbKmbz_BFEtizuU11Oe_lI4MZe7a4fQ0PfC2urQ0FiQwZ3__PLgEi6XdS5zsP3CLnHcC2NLQ9P5Cd3l3cJsOElAiXNrb8REY-EOB6BedI7XN9Rs/s1600/Ulmaskulov_blog_shortcut_11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtKfRSP6QggmM5-oraFrXkH6bAFUUuRbKmbz_BFEtizuU11Oe_lI4MZe7a4fQ0PfC2urQ0FiQwZ3__PLgEi6XdS5zsP3CLnHcC2NLQ9P5Cd3l3cJsOElAiXNrb8REY-EOB6BedI7XN9Rs/s640/Ulmaskulov_blog_shortcut_11.png" width="640" /></a></div>
<br />
Работу по перенаправлению в ней выполняет элемент <b>SharePoint:UrlRedirector</b>.<br />
<br />
<br /></div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com0tag:blogger.com,1999:blog-7352419941088735445.post-40516805839658109312016-01-30T09:53:00.001-08:002016-01-30T09:53:44.644-08:00SharePoint 2013. Ошибка на странице "Общий доступ" (Share Access error)<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: left;">
При попытке выдать отдельные права я столкнулся со странным поведением popup окна:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-ViDRrkNoUMj-njKB0BMBHjHmvW1Z20xokZZtvbFxt99PulSAPdwf0LehadAY1FBXLWrjehcK8KktiCUgyEOGsDLYRy9Wc6LwYi_1Cz6N1-YmfgaJyJe012j8k7691HrJ_FCkz7YTlQw/s1600/Ulmaskulov_blog_SharePoint_Page_Share.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="316" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-ViDRrkNoUMj-njKB0BMBHjHmvW1Z20xokZZtvbFxt99PulSAPdwf0LehadAY1FBXLWrjehcK8KktiCUgyEOGsDLYRy9Wc6LwYi_1Cz6N1-YmfgaJyJe012j8k7691HrJ_FCkz7YTlQw/s400/Ulmaskulov_blog_SharePoint_Page_Share.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Как видно, появилась вторая полоса прокрутки и пропала ссылка "дополнительно".</div>
<div class="separator" style="clear: both; text-align: left;">
Из-за этого не удается выдать права на элемент. Как выяснилось, ошибка содержится в скрипте <b>sharing.js</b>, его надо немного поправить. Для этого его надо открыть и отредактировать. Найти его можно по адресу:<br /><b>C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\template\layouts</b></div>
<div class="separator" style="clear: both; text-align: left;">
<b><br /></b></div>
<div class="separator" style="clear: both; text-align: left;">
Теперь необходимо заменить: <b>k.load(g,"ID","FileRef","FileLeafRef","Client_Title")</b></div>
<div class="separator" style="clear: both; text-align: left;">
На: <b>k.load(g,"ID","FileRef","FileLeafRef","Client_Title","Title")</b></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Проблема решена:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbtihyvlDmvzlpPNoVtbWIegjP07dOvV1KInoh_5BVhrByy7hUIIPy3_YuMHsb5xELxyQ9dybovgfddDwgoBKAcTpsij_nkv91SAPzlGPhFtyrqXcTDx3_3HtB0MyOInsEuscZHgi5lLA/s1600/Ulmaskulov_blog_SharePoint_Page_Share_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="338" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbtihyvlDmvzlpPNoVtbWIegjP07dOvV1KInoh_5BVhrByy7hUIIPy3_YuMHsb5xELxyQ9dybovgfddDwgoBKAcTpsij_nkv91SAPzlGPhFtyrqXcTDx3_3HtB0MyOInsEuscZHgi5lLA/s400/Ulmaskulov_blog_SharePoint_Page_Share_2.png" width="400" /></a></div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com0tag:blogger.com,1999:blog-7352419941088735445.post-38809201596121600112015-12-30T13:02:00.000-08:002015-12-30T13:29:29.600-08:00Сдан экзамен 70-492:Upgrade your MCPD: Web Developer 4 to MCSD: Web Applications<div dir="ltr" style="text-align: left;" trbidi="on">
Вчера удалось сдать экзамен 70-492:Upgrade your MCPD: Web Developer 4 to MCSD: Web Applications. Вот <a href="https://www.microsoft.com/ru-ru/learning/exam-70-492.aspx">описание</a> на сайте Microsoft.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDDD0G2pTKaZYIuGq2L6Ds_rBZ4vrX3Loo-85MZH6y4YpSmuc_8cpakvcx3kR-UjTDMNBOCmc-UFhMZtKTcJegW8MOQEiZe72nKQsiFYKuZqGRPcjBK1OQTtFBJfyUyQIXvUkTZU4LzBo/s1600/Ulmaskulov_Blog_70-492_img_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDDD0G2pTKaZYIuGq2L6Ds_rBZ4vrX3Loo-85MZH6y4YpSmuc_8cpakvcx3kR-UjTDMNBOCmc-UFhMZtKTcJegW8MOQEiZe72nKQsiFYKuZqGRPcjBK1OQTtFBJfyUyQIXvUkTZU4LzBo/s400/Ulmaskulov_Blog_70-492_img_1.jpg" width="290" /></a></div>
<div style="text-align: left;">
С января 2015 года все экзамены сдаются через Person VUE, а не Thomson Prometric. Разницы в общем-то я не увидел, за исключением другого ПО для сдачи. Оплатил картой 60 €, сдавал в СофтЛайне.<br />
<br />
Сам экзамен поделен на 2 части. Каждая часть является сокращенной версией экзаменов:</div>
<ul style="text-align: left;">
<li><a href="https://www.microsoft.com/ru-ru/learning/exam-70-486.aspx">70-486: Developing ASP.NET MVC 4 Web Applications</a></li>
<li><a href="https://www.microsoft.com/ru-ru/learning/exam-70-487.aspx">70-487: Developing Microsoft Azure and Web Services</a></li>
</ul>
Чтобы пройти экзамен надо по каждой части набрать не менее 700 баллов, что тяжелее стандартного варианта.<br />
<br />
Для подготовки рекомендую:<br />
<ul style="text-align: left;">
<li><a href="http://www.amazon.com/Exam-70-486-Developing-ASP-NET-Applications/dp/0735677220">Exam Ref 70-486 Developing ASP.NET MVC 4 Web Applications (MCSD)</a></li>
<li><a href="http://www.amazon.com/70-487-Developing-Windows-Azure-Services/dp/0735677247/ref=pd_bxgy_14_img_3/191-2687367-6848251?ie=UTF8&refRID=1YT5VF6HSSPM0RKJQR6N">Exam Ref 70-487 Developing Windows Azure and Web Services (MCSD)</a></li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.amazon.com/Exam-70-486-Developing-ASP-NET-Applications/dp/0735677220"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO6LNRvqkCBdmZWb2x5jG1yKHmBGPgf6EMrW7xmwk69gGZTxztRwQqR70crKphFKwWKN22tweHxBoaVnUWOm8s9hTiIfK0aLDvAlvmt3HsyGFOYWVeGMgxcHCsQf2KVw-tr6dcmKSfYyA/s320/Ulmaskulov_blog_70-486_Exam_prep.jpg" width="262" /></a><a href="http://www.amazon.com/70-487-Developing-Windows-Azure-Services/dp/0735677247/ref=pd_bxgy_14_img_3/191-2687367-6848251?ie=UTF8&refRID=1YT5VF6HSSPM0RKJQR6N"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjh1jihzyntx9dV7Dj-ur4Tth6JHXNrOa9SWrVkUFXKTKLL1fwgHUpwkeU22df-p3tu7ImiPJPxv4z4Bog8eeRpRqQHCyzESpbGOOx5ph73JGFpk1J1ET_Sq43wcz9MhZSWqHBOIyut3B4/s320/Ulmaskulov_blog_70-487_Exam_prep.jpg" width="259" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Как мне показалось - вопросы стали заметно адекватнее, чем были раньше на экзаменах по программированию от Microsoft.</div>
</div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com0tag:blogger.com,1999:blog-7352419941088735445.post-25639079224318540052015-11-30T11:27:00.003-08:002015-11-30T11:27:50.680-08:00SharePoint. Ошибка WebDAV при открытии библиотеки в проводнике. Нет доступа.<div dir="ltr" style="text-align: left;" trbidi="on">
На узле имеется библиотека документов с очень большим количеством файлов и папок.<br />
При попытке открыть библиотеку в проводнике - получил ошибку:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdBiAjPPa54lzg1I_Tpz68cwpATx9WyYRq7fqDnA-mMhowno8Psw8MZRNKFfhdkBajT2ui-jJyVBD-Gx6R6XpAvx8JsyW1XhSH-whvbURk-0G-QlZ2MVdrJxzRTXBNB5NIbGVW8QGDj4w/s1600/Ulmaskulov_Blog_SharePoint_WebDav_Explorer_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="222" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdBiAjPPa54lzg1I_Tpz68cwpATx9WyYRq7fqDnA-mMhowno8Psw8MZRNKFfhdkBajT2ui-jJyVBD-Gx6R6XpAvx8JsyW1XhSH-whvbURk-0G-QlZ2MVdrJxzRTXBNB5NIbGVW8QGDj4w/s640/Ulmaskulov_Blog_SharePoint_WebDav_Explorer_1.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
Текст ошибки:</div>
<b><span style="font-size: x-small;">Нет доступа к \\server\DavWWWRoot\site\library. Возможно, у вас нет прав на использование этого сетевого ресурса. Обратитесь к администратору этого сервера для получения соответствующих прав доступа.<br />Присоединенное к системе устройство не работает.</span></b><br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
На английском языке:</div>
<b><span style="font-size: x-small;">\\server\DavWWWRoot\site\library is not accessible. You might not have permission to use this network resource. Contact that administrator of this server to find out if you have access permissions.</span></b><br />
<div class="separator" style="clear: both; text-align: center;">
<b><span style="font-size: x-small;">A device attached to the system is not functioning.</span></b></div>
<br />
Несмотря на то, что в тексте ошибки речь идёт о правах доступа, к реальности это не имеет никакого отношения. Когда библиотека документов открывается в проводнике windows, то используется протокол <a href="https://ru.wikipedia.org/wiki/WebDAV">WebDAV</a>. Ошибка происходит из-за ограничений на получение количества данных по этому протоколу. Настройки хранятся в реестре Windows. Чтобы исправить описанную выше ошибку, необходимо сделать следующие шаги:<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<ul style="text-align: left;">
<li>Откройте редактор реестра - regedit.</li>
<li>Перейдите к ветке реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\</li>
<li>Найдите ключ реестра FileAttributesLimitInBytesfor</li>
<li>Если его нет, то создайте ключ FileAttributesLimitInBytesfor с типом DWORD.</li>
<li>Дальше необходимо изменить его значение. Для удобства измените систему исчисления. Изначально скорее всего будет отмечена шестнадцатеричная:<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEQ4KY3Jinm8WNi1ZRjCG3eNeCti4AqwMXzAxTXC5Kj86D4Q5tFnMAuApPE67tBzc3MvWxCyZaF23QTMAsd_cEm-XyDkM0gaIV0YZZMr0tWUIb2R4OZ5EKcGd-who98tXNr7jvZJW1URI/s1600/Ulmaskulov_Blog_SharePoint_WebDav_Explorer_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="191" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEQ4KY3Jinm8WNi1ZRjCG3eNeCti4AqwMXzAxTXC5Kj86D4Q5tFnMAuApPE67tBzc3MvWxCyZaF23QTMAsd_cEm-XyDkM0gaIV0YZZMr0tWUIb2R4OZ5EKcGd-who98tXNr7jvZJW1URI/s320/Ulmaskulov_Blog_SharePoint_WebDav_Explorer_2.png" width="320" /></a><br />Поменяйте на десятичную и задайте значение 50000000, это максимальное значение:<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiR1GGY9fj9m9sbc-6IzhrI6r4Q47gTuMq7UPGPkge-1tc9M9oZf7W6zJEVu6RXQdPikp7AqyXk4_wmnr9lMNEUEHbItu3U8y3UsPTKUKBkBjLK6nZqni9DgRMvBs9wlWtKrbSuEzC-35Q/s1600/Ulmaskulov_Blog_SharePoint_WebDav_Explorer_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="191" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiR1GGY9fj9m9sbc-6IzhrI6r4Q47gTuMq7UPGPkge-1tc9M9oZf7W6zJEVu6RXQdPikp7AqyXk4_wmnr9lMNEUEHbItu3U8y3UsPTKUKBkBjLK6nZqni9DgRMvBs9wlWtKrbSuEzC-35Q/s320/Ulmaskulov_Blog_SharePoint_WebDav_Explorer_3.png" width="320" /></a></li>
</ul>
После этого необходимо перезапустить службу "Веб-клиент":<br /><b><span style="text-align: center;">net stop webclient</span><span style="text-align: center;">net start webclient</span></b><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqB7RtaCRxXkB7U4revJzzeSqof2r1blIltru5tuCCwu6UyjQkcdAI6LnEnPDyVzwcaxtLrREWR04BL4d-m1buNrVdysyoLEC0RkkaZ1z_SzSdCt9gk3Kh202KsxceRxeWuVoU8g9xceg/s1600/Ulmaskulov_Blog_SharePoint_WebDav_Explorer_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="145" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqB7RtaCRxXkB7U4revJzzeSqof2r1blIltru5tuCCwu6UyjQkcdAI6LnEnPDyVzwcaxtLrREWR04BL4d-m1buNrVdysyoLEC0RkkaZ1z_SzSdCt9gk3Kh202KsxceRxeWuVoU8g9xceg/s400/Ulmaskulov_Blog_SharePoint_WebDav_Explorer_4.png" width="400" /></a><br />
<ul style="text-align: left;">
</ul>
<div class="separator" style="clear: both; text-align: center;">
После выполнения этих шагов библиотека открылась через проводник.</div>
Проблема в том, что эти настройки делаются на клиенте. Вероятно потребуется их распространить через GPO.</div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com1tag:blogger.com,1999:blog-7352419941088735445.post-75612881096225714912015-10-30T07:54:00.000-07:002016-02-24T01:09:58.175-08:00SharePoint. Фильтрация пользователей в PeoplePicker<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
Изначально в выдачу поля типа "Пользователь" попадают все пользователи домена <b>Active Directory</b> и из доменов с которыми установлены доверительные отношения: <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdlLS9AKGtTT-hSKe3C5EGsXBekEB5D9ZiaNq0sq7DcGFI1LjXrjOdEaFHmYnEhBRLXEAx5EhLP2xicWWEvFnCyIU1bhuvI5LS6Afe0v3JRcAEBI4EcaY9T9PX9Ehd4Jwd8Vxaww8JFBE/s1600/Ulmaskulov_SharePoint_Blog_PeoplePicker_Filter.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="52" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdlLS9AKGtTT-hSKe3C5EGsXBekEB5D9ZiaNq0sq7DcGFI1LjXrjOdEaFHmYnEhBRLXEAx5EhLP2xicWWEvFnCyIU1bhuvI5LS6Afe0v3JRcAEBI4EcaY9T9PX9Ehd4Jwd8Vxaww8JFBE/s400/Ulmaskulov_SharePoint_Blog_PeoplePicker_Filter.png" width="400" /></a></div>
<br />
<br />
В моём случае мне необходимо было отфильтровать некоторых пользователей. Мне не нужны были пользователи без email адреса, к примеру служебные учётные записи. Т.е. не показывать пользователей с пустым или отсутствующим атрибутом <b><u>mail </u></b>из <b>AD</b>. Так же я хотел, чтобы PeoplePicker показывал мне пользователей как в адресной книге из Exchange. Адресная книга не отображает пользователей <b>AD</b>, у кого поле <b><u>msExchHideFromAddressLists </u></b>установлено в <b>TRUE</b>.<br />
<br />
Поведение PeoplePicker'а можно настроить через утилиту <b>STSADM.EXE</b>, которая находиться в файловой системе по адресу: <b style="font-size: small;">C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\BIN</b>, так же можно использовать PowerShell.<br />
<br />
Для того, чтобы выполнить описанные выше условия, необходимо выполнить следующую команду в <b>STSADM.EXE</b>:<br />
<br />
<b>stsadm -o setproperty -pn peoplepicker-searchadcustomfilter -pv "(&(mail=*) (!msExchHideFromAddressLists=TRUE))" -url http://server</b><br />
<b><br /></b>
Можно делать более сложные условия, например делать как в примере выше, но при этом всё равно отображать особенных пользователей. Их особенность в том, что у них атрибут extensionAttribute5 установлен в "Show":<br />
<br />
<b>stsadm -o setproperty -pn peoplepicker-searchadcustomfilter -pv "</b><b>(|(&amp;(mail=*)(!msExchHideFromAddressLists=TRUE))(extensionAttribute5=Show))</b><b>" -url http://server</b><br />
<br />
Чтобы просмотреть какой сейчас фильтр установлен - можно выполнить команду:<br />
<br />
<b>stsadm -o getproperty -url http://portal -pn peoplepicker-searchadcustomfilter</b><br />
<br />
Для сброса фильтрации:<br />
<br />
<b>stsadm -o setproperty -pn peoplepicker-searchadcustomfilter -pv " "</b><br />
<br />
Узнать подробнее про запросы к Active Directory можно по ссылке:<br />
<br />
<b><a href="https://technet.microsoft.com/en-us/library/aa996205(EXCHG.65).aspx">https://technet.microsoft.com/en-us/library/aa996205(EXCHG.65).aspx</a></b><br />
<br />
<br /></div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com0tag:blogger.com,1999:blog-7352419941088735445.post-67778599217520463772015-10-30T06:31:00.001-07:002015-10-30T06:32:57.816-07:00SharePoint. Группировка по году создания.<div dir="ltr" style="text-align: left;" trbidi="on">
У меня возникла необходимость группировать элементы списка именно по году создания.
Если выбрать группировку по дате создания, то это не даст нужного результата, к сожалению.<br />
Для достижения цели нам необходимо, для начала, создать вычисляемый столбец:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguiGnjoZtfbWniwGuqizSQYpDwp3Hdtu5ixzt7UjQu2YygBM_aUAtOgHmiZ036fqcKKzfkSlVr95t-Muor1XzNLbRMcPajGwePxL_-POdCQjPPSWcnORf0eGRbcazbm9kRFX7VVbfqzuk/s1600/Ulmaskulov_SharePoint_Blog_Group_Elements_By_Year_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguiGnjoZtfbWniwGuqizSQYpDwp3Hdtu5ixzt7UjQu2YygBM_aUAtOgHmiZ036fqcKKzfkSlVr95t-Muor1XzNLbRMcPajGwePxL_-POdCQjPPSWcnORf0eGRbcazbm9kRFX7VVbfqzuk/s640/Ulmaskulov_SharePoint_Blog_Group_Elements_By_Year_1.png" width="502" /></a></div>
<br />
Назовите его "Год". И задайте значение поля "Формула" вот так: "<b>=ГОД(Дата)" </b>или<b> </b>"<b>=ГОД(Создано)"</b>, если вы не создавали отдельного столбца для хранения даты.<br />
Функция "Год()" может быть вам уже знакома из Microsoft Excel.<br />
Важно отметить, что если у вас другой язык в SharePoint, то и формула должна быть написана на соответствующей языке.<br />
<br />
После создания столбца "Год" - он будет заполнен значением года. Теперь необходимо создать новое представление и группировать элементы по полю "Год":<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9RD5madJLpbK-C8kf86so-ssfv796DQwLWcNOEx9WynV58P5D5xirUDsVWnwRHFf9sEbqAWsV8UFJ_6KKVJkd4Z_mhRltj13rIqj-t82w8fK8CSEk8gybc0x5JoZxbJNtcCTeSGgPeGs/s1600/Ulmaskulov_SharePoint_Blog_Group_Elements_By_Year_2.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="468" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9RD5madJLpbK-C8kf86so-ssfv796DQwLWcNOEx9WynV58P5D5xirUDsVWnwRHFf9sEbqAWsV8UFJ_6KKVJkd4Z_mhRltj13rIqj-t82w8fK8CSEk8gybc0x5JoZxbJNtcCTeSGgPeGs/s640/Ulmaskulov_SharePoint_Blog_Group_Elements_By_Year_2.png" width="640" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9RD5madJLpbK-C8kf86so-ssfv796DQwLWcNOEx9WynV58P5D5xirUDsVWnwRHFf9sEbqAWsV8UFJ_6KKVJkd4Z_mhRltj13rIqj-t82w8fK8CSEk8gybc0x5JoZxbJNtcCTeSGgPeGs/s1600/Ulmaskulov_SharePoint_Blog_Group_Elements_By_Year_2.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><br /></a><br />
<br />
<br />
<div class="separator" style="clear: both;">
Результат должен быть как на картинке:<span style="text-align: left;"><br /></span></div>
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCtRqbuhtppeKAXtKRwZCewW5hy1R5ykwXJS_mHQErpj-Avk9wctpqCrBGpGaDw-_qKTLeZ1C-2Azf3AV7HHf03gXzXSBCXRJ0SpKTdTZk-iXxCf0or1Rs77_xeV00QIbW41yu_5EmSeA/s1600/Ulmaskulov_SharePoint_Blog_Group_Elements_By_Year_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="522" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCtRqbuhtppeKAXtKRwZCewW5hy1R5ykwXJS_mHQErpj-Avk9wctpqCrBGpGaDw-_qKTLeZ1C-2Azf3AV7HHf03gXzXSBCXRJ0SpKTdTZk-iXxCf0or1Rs77_xeV00QIbW41yu_5EmSeA/s640/Ulmaskulov_SharePoint_Blog_Group_Elements_By_Year_3.png" width="640" /></a></div>
<br />
<br />
<br />
Так же, если при создании поля вы выбрали тип вычисляемого столбца как "Число", то по этому полю можно будет сортировать.</div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com0tag:blogger.com,1999:blog-7352419941088735445.post-5366974673991053342015-09-30T01:57:00.001-07:002015-09-30T01:57:09.583-07:00SharePoint. Ошибка при просмотре представлений списков.<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Внезапно перестали отображаться представления списков. Вместо представления был текст:</div>
<div class="separator" style="clear: both; text-align: left;">
"Ну удалось завершить эту операцию" и номер идентификатора взаимосвязи:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbWRRRuaoDdiH6d7Hf73lzFhYsatfibgwsfopPyU8HWHSUDMxrYWb3VyVW1H_TUe4ftEbC9IWgqfPtF0U2HASVNHFTSrzWYODXmJob3HUb4tr2zvyY2PeGCe69u1Uh4q96_iIzNlfbLQc/s1600/Ulmaskulov_blog_Lists_error_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="65" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbWRRRuaoDdiH6d7Hf73lzFhYsatfibgwsfopPyU8HWHSUDMxrYWb3VyVW1H_TUe4ftEbC9IWgqfPtF0U2HASVNHFTSrzWYODXmJob3HUb4tr2zvyY2PeGCe69u1Uh4q96_iIzNlfbLQc/s400/Ulmaskulov_blog_Lists_error_1.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
По номеру ошибки удалось найти текст исключения:</div>
<b><span style="font-size: x-small;">Error while executing web part: Microsoft.SharePoint.SPException: Не удалось завершить эту операцию. Повторите попытку. ---> System.Runtime.InteropServices.COMException: Не удалось завершить эту операцию. Повторите попытку.<nativehr>0x80004005</nativehr><nativestack></nativestack></span></b><br />
<b><span style="font-size: x-small;"> at Microsoft.SharePoint.Library.SPRequestInternalClass.GetTimeZoneInfo(Int32 lcid, UInt16& pwTimeZoneID, Object& pvarBias, Object& pvarStandardDate, Object& pvarDaylightDate, String& pbstrDescription, String& pbstrKeyName)</span></b><br />
<b><span style="font-size: x-small;"> at Microsoft.SharePoint.Library.SPRequest.GetTimeZoneInfo(Int32 lcid, UInt16& pwTimeZoneID, Object& pvarBias, Object& pvarStandardDate, Object& pvarDaylightDate, String& pbstrDescription, String& pbstrKeyName) --- End of inner exception stack trace ---</span></b><br />
<b><span style="font-size: x-small;"> at Microsoft.SharePoint....</span></b><br />
<span class="Apple-tab-span" style="font-size: x-small; white-space: pre;"><b> </b></span><br />
<b><span style="font-size: x-small;">...SPGlobal.HandleComException(COMException comEx)</span></b><br />
<b><span style="font-size: x-small;"> at Microsoft.SharePoint.Library.SPRequest.GetTimeZoneInfo(Int32 lcid, UInt16& pwTimeZoneID, Object& pvarBias, Object& pvarStandardDate, Object& pvarDaylightDate, String& pbstrDescription, String& pbstrKeyName)</span></b><br />
<b><span style="font-size: x-small;"> at Microsoft.SharePoint.SPTimeZone.EnsureTZData()</span></b><br />
<b><span style="font-size: x-small;"> at Microsoft.SharePoint.SPTimeZone.get_Information()</span></b><br />
<b><span style="font-size: x-small;"> at Microsoft.SharePoint.WebPartPages.XsltListViewWebPart.ModifyXsltArgumentList(ArgumentClassWrapper argList)</span></b><br />
<b><span style="font-size: x-small;"> at Microsoft.SharePoint.WebPartPages.DataFormWebPart.PrepareAndPerformTransform(Boolean bDeferExecuteTransform)</span></b><br />
<br />
<div class="separator" style="clear: both; text-align: left;">
Из текста ошибки стало ясно, что есть какие-то проблемы с временной зоной.</div>
<div class="separator" style="clear: both; text-align: left;">
Как оказалось, владелец узла сменил часовой пояс, пришлось выставить снова верный:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUZCVYEqIVk_1dkOA4Q_Y3_Z-QIdKfLKelGRSQKPnOB_1wnT_MIk_5w06Qz8mNVQFRElI1THGGwlwMd5jGtXDEcC0vXmOY4BNaK3nwTIngKpRiG5hWWP_xe_u6kMOse71j8saShuju4-E/s1600/Ulmaskulov_blog_Lists_error_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="355" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUZCVYEqIVk_1dkOA4Q_Y3_Z-QIdKfLKelGRSQKPnOB_1wnT_MIk_5w06Qz8mNVQFRElI1THGGwlwMd5jGtXDEcC0vXmOY4BNaK3nwTIngKpRiG5hWWP_xe_u6kMOse71j8saShuju4-E/s400/Ulmaskulov_blog_Lists_error_2.png" width="400" /></a></div>
<br />
Это решило проблему.<br />
<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<div>
<br /></div>
</div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com0tag:blogger.com,1999:blog-7352419941088735445.post-1628038486344843142015-08-27T04:37:00.000-07:002015-08-27T04:37:13.818-07:00SharePoint 2013. Меню для узла.<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Обычно узел имеет текущую навигацию слева, как показано на рисунке:</div>
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCWz1v9AP96stwVRzbKfH6yGvl_gz3uJJoORiNdHp35EwHV9S6t01vmfyfSL7pyBQswD0-8JxqB0OGeew6HnRO8g04CKUj9gCuA_bo2K5FTooDf8NSilcZFEiPAEhIKCpZF5IpSG8RB4M/s1600/Ulmaskulov_blog_current_navigation.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCWz1v9AP96stwVRzbKfH6yGvl_gz3uJJoORiNdHp35EwHV9S6t01vmfyfSL7pyBQswD0-8JxqB0OGeew6HnRO8g04CKUj9gCuA_bo2K5FTooDf8NSilcZFEiPAEhIKCpZF5IpSG8RB4M/s1600/Ulmaskulov_blog_current_navigation.png" /></a></div>
<div style="text-align: left;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: left;">
Но порой необходимо как-то выделить часто используемые ссылки.</div>
Можно использовать возможности html, но не все пользователи смогут это сделать.<br />
<div class="" style="clear: both; text-align: left;">
В SharePoint 2013 есть прекрасный механизм для решения этой задачи. Он называется "Рекомендуемые ссылки". Это список. Чтобы его создать перейдите в "Весь контент сайта"-> "Добавить приложение" и выберите "Рекомендуемые ссылки":</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh74VKd5M_iXJZRE_Hl1m4rjR1R-0Uijg3jMEHkqaAcYR_Zx_Lp8r97HlLprADFj5Ar1Yech4iJ7CQk-TJyf0RtmdyltKQyS3Hh_gwCu6SVl8awIrvRzKQds5Ru7zmfEwQ4b8KWWfKCBL4/s1600/Ulmaskulov_blog_recomended_links.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh74VKd5M_iXJZRE_Hl1m4rjR1R-0Uijg3jMEHkqaAcYR_Zx_Lp8r97HlLprADFj5Ar1Yech4iJ7CQk-TJyf0RtmdyltKQyS3Hh_gwCu6SVl8awIrvRzKQds5Ru7zmfEwQ4b8KWWfKCBL4/s1600/Ulmaskulov_blog_recomended_links.png" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
После создания списка надо разместить его на главной странице. Поскольку список пуст - надо его заполнить данными. Помимо названия и ссылки можно добавить картинку, чтобы выглядело красивее. В моём случае все ссылки вели на списки SharePoint, неплохо бы было иметь для этого понятные картинки, как в меню создания списков (приложений). Используя инструменты разработчика (вызов через F12) можно посмотреть адреса картинок:</div>
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsp4uhf_I-Kwsc6YMi4g4n06gcAI4LkItS3BqzF6n3qaB8FroJWWc57c6BrUrh1GV08BQq2Rm5Sduu_6ZWQtVSuZnghgP7d5hU49t7g1m2oNd7Ybk9_dOQnmqMCqKEw8yIO3tUyP2VUoo/s1600/Ulmaskulov_blog_find_img_url.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsp4uhf_I-Kwsc6YMi4g4n06gcAI4LkItS3BqzF6n3qaB8FroJWWc57c6BrUrh1GV08BQq2Rm5Sduu_6ZWQtVSuZnghgP7d5hU49t7g1m2oNd7Ybk9_dOQnmqMCqKEw8yIO3tUyP2VUoo/s640/Ulmaskulov_blog_find_img_url.png" width="640" /></a></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<br />
<div style="text-align: left;">
Ниже, чтобы Вам сэкономить время, есть таблица с адресами иконок для некоторых списков:</div>
<br /><br />
<table class="auto-style1" style="width: 100%;">
<tbody>
<tr>
<td style="text-align: justify; width: 142px;"> Задачи</td>
<td style="text-align: justify;">
<a href="http://portal/_layouts/15/images/lttask.png?rev=23" style="color: #0072c6; text-decoration: none;">
/_layouts/15/images/lttask.png?rev=23</a></td>
</tr>
<tr>
<td style="text-align: justify; width: 142px;"> Документы</td>
<td style="text-align: justify;">
<a href="http://portal/_layouts/15/images/ltdl.png?rev=23" style="color: #0072c6; text-decoration: none;">
/_layouts/15/images/ltdl.png?rev=23</a></td>
</tr>
<tr>
<td style="text-align: justify; width: 142px;"> Календарь</td>
<td style="text-align: justify;">
<a href="http://portal/_layouts/15/images/ltevent.png?rev=23" style="color: #0072c6; text-decoration: none;">
/_layouts/15/images/ltevent.png?rev=23</a></td>
</tr>
<tr>
<td style="text-align: justify; width: 142px;"> Обсуждения</td>
<td style="text-align: justify;">
<a href="http://portal/_layouts/15/images/ltdisc.png?rev=23" style="color: #0072c6; text-decoration: none;">
/_layouts/15/images/ltdisc.png?rev=23</a></td>
</tr>
<tr>
<td style="text-align: justify; width: 142px;"> Контакты</td>
<td style="text-align: justify;">
<a href="http://portal/_layouts/15/images/ltcontct.png?rev=23" style="color: #0072c6; text-decoration: none;">
/_layouts/15/images/ltcontct.png?rev=23</a></td>
</tr>
</tbody></table>
<br />
<div style="text-align: left;">
После заполнения список в представлении "Все рекомендуемые ссылки" выглядел так:</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDh13ahjqNvGi7g3KtBBTdjTGEKJW7cJxAkISGtRrCI9kbu1FXMSO-UaEHENk4syFG-rIlVNcqWnLFRcig2uxz2KTl5KzK9v4mWOzkOo8A6fF5tRQWuf29kgXqMnTueeOYv_2t2IbkKMI/s1600/Ulmaskulov_blog_recomended_links_view.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDh13ahjqNvGi7g3KtBBTdjTGEKJW7cJxAkISGtRrCI9kbu1FXMSO-UaEHENk4syFG-rIlVNcqWnLFRcig2uxz2KTl5KzK9v4mWOzkOo8A6fF5tRQWuf29kgXqMnTueeOYv_2t2IbkKMI/s640/Ulmaskulov_blog_recomended_links_view.png" width="640" /></a></div>
<br />
<div style="text-align: left;">
А в представлении "Мозаика" выглядит так:</div>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij7gJlVRxD3_zJDnh2f4jd-Uu49fF7olJ6mf0qY4TxPk-GDY2XF1JCWNBMXD8mNmA1gCXqPqEK3Ao-fwUO1VdHHgj_gLJ_JbX9W-MaUhGMK1KQcbFHzT4PaGVO7m8emynIbdNMlBRCXKw/s1600/2015-08-07_18h34_16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="161" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij7gJlVRxD3_zJDnh2f4jd-Uu49fF7olJ6mf0qY4TxPk-GDY2XF1JCWNBMXD8mNmA1gCXqPqEK3Ao-fwUO1VdHHgj_gLJ_JbX9W-MaUhGMK1KQcbFHzT4PaGVO7m8emynIbdNMlBRCXKw/s640/2015-08-07_18h34_16.png" width="640" /></a></div>
Самое главное - это возможность конфигурировать меню для конечного пользователя, без навыков HTML & CSS. </div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com0tag:blogger.com,1999:blog-7352419941088735445.post-19006164593563054912015-07-29T08:15:00.000-07:002015-07-29T08:43:24.097-07:00SharePoint. jQuery page scroll<div dir="ltr" style="text-align: left;" trbidi="on">
<style>
pre.cscode {margin:0em; overflow:auto; background-color:#ffffff;}
.cscode code {font-family:Consolas,"Courier New",Courier,Monospace; font-size:10pt; color:#000000;}
.cscode .key {color:#0000ff;}
.cscode .com {color:#008000;}
.cscode .str {color:#a31515;}
</style>
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 14px; line-height: 21.531999588012695px;"><br /></span></div>
<div>
<span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 14px; line-height: 21.531999588012695px;"><span style="line-height: 21.5319995880127px;">При размещении статей большого размера возникает необходимость оперативно вернуться к началу страницы, так как вверху находится навигация. Более-менее продвинутые пользователи могут использовать клавишу "Home" на клавиатуре. Для остальных можно добавить кнопку "вверх", по нажатию на которой страница прокрутиться к самому началу. Эта кнопка должна присутствовать не всегда, а только когда пользователь переместит страницу вниз на какое-то расстояние.</span></span><br />
<span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 14px; line-height: 21.531999588012695px;"><span style="line-height: 21.5319995880127px;"><br /></span></span>
<span style="color: #2a2a2a; font-family: Segoe UI, Lucida Grande, Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: white; font-size: 14px; line-height: 21.5319995880127px;">Все будет реализовано на JavaScript, jQuery и немного CSS c HTML.<br />Для быстрого просмотра результата создадим отдельную страницу и добавим на нее полный текст рыбы. Рыбу можно взять <a href="http://ru.lipsum.com/">здесь</a>. Теперь нам нужно добавить JavaScript код, для этого разместим на странице веб-часть "редактор сценариев" и вставим код ниже:</span></span><br />
<span style="color: #2a2a2a; font-family: Segoe UI, Lucida Grande, Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: white; font-size: 14px; line-height: 21.5319995880127px;"> </span></span><br />
<br />
<pre class="cscode"><code><script src=<span class="str">"/SiteAssets/Script/jQuery/jquery-1.11.0.min.js"</span>></script>
<script>
<span class="key">function </span> HandleScroll() {
<span class="com">// Навешиваем обработку на событие движения колеса мыши</span>
<span class="key">var</span> offsetY = 300;
$(<span class="str">'#s4-workspace'</span>).scroll(<span class="key">function </span>() {
<span class="key">if</span> ($(<span class="key">this</span>).scrollTop() > offsetY) {
<span class="com">//Стрелка появись</span>
$(<span class="str">'.scrollUpBtn'</span>).fadeIn();
} <span class="key">else</span> {
<span class="com">//Стрелка исчезни</span>
$(<span class="str">'.scrollUpBtn'</span>).fadeOut();
}
});
<span class="com">// Навешиваем обработку на событие клика по стрелке</span>
$(<span class="str">'.scrollUpBtn'</span>).click(<span class="key">function </span>(){
$(<span class="str">'#s4-workspace'</span>).animate({scrollTop:0},<span class="str">'slow'</span>);
<span class="key">return</span> <span class="key">false</span>;
});
};
_spBodyOnLoadFunctionNames.push(<span class="str">"HandleScroll"</span>);
</script></code></pre>
<br />
<span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 14px; line-height: 21.5319995880127px;">После этого добавим на страницу веб-часть "редактор контента" и добавим в нее стили:</span><br />
<br />
<pre class="cscode"><code><style>
.<span class="key">scrollUpBtn</span>{
width:100px;
height:130px;
padding:10px;
text-align:center;
background: whiteSmoke;
font-weight: bold;
color: #444;
text-decoration: none;
position:fixed;
top:75px;
right:40px;
display:none;
background: url(<span class="str">'https://cdn2.iconfinder.com/data/icons/freecns-cumulus/16/519703-211_CircledBorderArrowUp-64.png'</span>) no-repeat 0px 20px;
}
.<span class="key">scrollUpBtn</span>:hover{
text-decoration:none;
}
</style></code></pre>
<br />
<span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 14px; line-height: 21.5319995880127px;">Теперь остается добавить в </span><span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 14px; line-height: 21.5319995880127px;">веб-часть "редактор контента" строчку с html разметкой</span><br />
<pre class="cscode"><code><a href=<span class="str">"#"</span> <span class="key">class</span>=<span class="str">"scrollUpBtn"</span>></a></code></pre>
<span style="color: #2a2a2a; font-family: Segoe UI, Lucida Grande, Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: white; font-size: 14px; line-height: 21.5319995880127px;"><br /></span></span><span style="color: #2a2a2a; font-family: Segoe UI, Lucida Grande, Verdana, Arial, Helvetica, sans-serif;"><span style="background-color: white; font-size: 14px; line-height: 21.5319995880127px;">Как это выглядит в итоге:</span></span></div>
<div style="text-align: left;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvwAddoNaQSogGhUszI9jARvpbxQtnQh0_oh_eSkTLypnGDdB4KD0BXQf2joinTJ_laSRpkF8gPm-XSYfqg1V_FNWfnW2gyNywMcT9LXsKw8qu01ZRtKBreMlg8Xyq16CCcKH18z7gPos/s1600/Ulmaskulov_Blog_ScrollUp_Button_Demonstration.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="448" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvwAddoNaQSogGhUszI9jARvpbxQtnQh0_oh_eSkTLypnGDdB4KD0BXQf2joinTJ_laSRpkF8gPm-XSYfqg1V_FNWfnW2gyNywMcT9LXsKw8qu01ZRtKBreMlg8Xyq16CCcKH18z7gPos/s640/Ulmaskulov_Blog_ScrollUp_Button_Demonstration.gif" width="640" /></a></div>
<br /></div>
<span style="background-color: white; color: #2a2a2a; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif;">
</span>
</div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com0tag:blogger.com,1999:blog-7352419941088735445.post-82257805769196320012015-06-30T02:29:00.000-07:002016-06-09T04:50:45.125-07:00SharePoint. Как послать email используя JavaScript<div dir="ltr" style="text-align: left;" trbidi="on">
<style>
pre.cscode {margin:0em; overflow:auto; background-color:#ffffff;}
.cscode code {font-family:Consolas,"Courier New",Courier,Monospace; font-size:10pt; color:#000000;}
.cscode .key {color:#0000ff;}
.cscode .com {color:#008000;}
.cscode .str {color:#a31515;}
</style>
<br />
<div dir="ltr" style="text-align: left;" trbidi="on">
У меня возникла необходимость послать email сообщение c формы элемента, сделав это асинхронно из JavaScript. В JSOM я не нашел такой возможности. <br />
<br />
<span style="font-size: large;">Способ № 1</span><br />
Первое что пришло в голову - сделать на C# веб-часть, которая будет брать данные из url и отсылать почту, код выглядит достаточно коротким:<br />
<div>
<br /></div>
<div>
<pre class="cscode"><code><span class="key">using</span> (<span class="key">var</span> oSite = <span class="key">new</span> SPSite(SPContext.Current.Web.Url))
<span class="key">using</span> (<span class="key">var</span> oWeb = oSite.OpenWeb(SPContext.Current.Web.ServerRelativeUrl))
{
<span class="key"> string</span> to, subject, body;
to = Page.Request.QueryString[<span class="str">"to"</span>];
subject = Page.Request.QueryString[<span class="str">"subject"</span>];
body = Page.Request.QueryString[<span class="str">"body"</span>];
<span class="key"> var</span> headers = <span class="key">new</span> StringDictionary
{
{<span class="str">"to"</span>, to},
{<span class="str">"subject"</span>, subject},
{<span class="str">"content-type"</span>, <span class="str">"text/html"</span>}
};
SPUtility.SendEmail(oWeb, headers, body);
}</code></pre>
<pre class="cscode"><code>
</code></pre>
<br />
Теперь нам необходимо вызвать серверной код GET запросом, код на JavaScript & jQuery будет выглядеть так:<br />
<br />
<pre class="cscode"><code><span class="com">// Отсылаем уведомление</span>
<span class="key">function </span> SendMail(to, subject, body) {
$.ajax({
url: <span class="str">'/SitePages/SendMail.aspx'</span>,
type: <span class="str">'GET'</span>,
data: { to: to, subject: subject, body: body },
contentType: <span class="str">'application/json; charset=utf-8'</span>,
success: <span class="key">function </span> (response) {
console.log(<span class="str">"success send email to secretary"</span>);
},
error: <span class="key">function </span> () {
console.log(<span class="str">"error"</span>);
}
});
}</code></pre>
<br />
<br />
Недостаток этого решения в самом решении. Нужно создавать и разворачивать веб-часть, SPUtility недоступен в Sandbox решениях. Возможны прочие причины не использовать серверный код.<br />
<br />
<span style="font-size: large;">Способ № 2</span><br />
Есть другой пусть. Как известно, мы можем слать письма используя рабочий процесс, так же мы знаем о возможности создавать элементы списка используя JSOM. Т.е. можем создать JavaScript'ом элемент списка, на создании которого запуститься рабочий процесс и отошлет письмо. Чтобы у рабочего процесса была информация куда, с какой темой и что слать - создадим соответствующие поля в списке. Наш элемент списка должен иметь 3 столбца:<br />
<ul style="text-align: left;">
<li>Кому</li>
<li>Тема</li>
<li>Тело</li>
</ul>
<div>
Итак, у нас будет функция которая будет написана на JavaScript и использовать JSOM для создания элемента в списке:</div>
<div>
<br /></div>
<pre class="cscode"><code><span class="com">// Создаем элемент списка</span>
<span class="key">function</span> CreateEmailListItem(emailListTitle, to, subject, body) {
<span class="key">var</span> clientContext = <span class="key">new</span> SP.ClientContext.get_current();
<span class="key">var</span> oList = clientContext.get_web().get_lists().getByTitle(emailListTitle);
<span class="key">var</span> itemCreateInfo = <span class="key">new</span> SP.ListItemCreationInformation();
<span class="key">this</span>.oListItem = oList.addItem(itemCreateInfo);
oListItem.set_item(<span class="str">'To'</span>, to);
oListItem.set_item(<span class="str">'Subject'</span>, subject);
oListItem.set_item(<span class="str">'Body'</span>, body);
oListItem.update();
clientContext.load(oListItem);
clientContext.executeQueryAsync(<span class="key">function</span>.createDelegate(<span class="key">this</span>, <span class="key">this</span>.onQuerySucceededEmailListItem), <span class="key">function</span>.createDelegate(<span class="key">this</span>, <span class="key">this</span>.onQueryFailedEmailListItem));
}
<span class="key">function</span> onQuerySucceededEmailListItem() {
console.log(<span class="str">'(Успех. Элемент списка создан.)Item created: '</span> + oListItem.get_id());
}
<span class="key">function</span> onQueryFailedEmailListItem(sender, args) {
console.log(<span class="str">'Request failed. (Ошибка. Элемент списка не создан.)'</span> + args.get_message() + <span class="str">'\n'</span> + args.get_stackTrace());
}</code></pre>
<div>
<br /></div>
<div>
После создания элемента будет срабатывать рабочий процесс отсылающий письмо. Для этого нам нужно одно действие рабочего процесса:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOd3uadTTOBMPljFDTY7FV2ZbcPiKgPUyqU8O7dIechomjWY_wJkaZgVGGaghwcClSWjfH4CXFEhnBUWuFERUc-q20woXDRmRJ4cA6vUAgiuQHtWTv10vDXJJNNsBM6rQYeH9IX-L301Y/s1600/Ulmaskulob_Blog_Post_Send_Email_By_JavaScript_JSOM_Img_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="291" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOd3uadTTOBMPljFDTY7FV2ZbcPiKgPUyqU8O7dIechomjWY_wJkaZgVGGaghwcClSWjfH4CXFEhnBUWuFERUc-q20woXDRmRJ4cA6vUAgiuQHtWTv10vDXJJNNsBM6rQYeH9IX-L301Y/s400/Ulmaskulob_Blog_Post_Send_Email_By_JavaScript_JSOM_Img_1.png" width="400" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
В редакторе необходимо настроить действие:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdkhX96j0mKF3NnScS4o0cTwO_-7X09kNXRFTsHlD6C-BQMDXJEkWt5YXA2TZjUZv5OPVYigGFMcYroF-ftj4GLvrCrKC1zxG95fBEcWse3rAmwxUSGNYquQT97AyvUD0N_NZOgCV6oB4/s1600/Ulmaskulob_Blog_Post_Send_Email_By_JavaScript_JSOM_Img_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="95" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdkhX96j0mKF3NnScS4o0cTwO_-7X09kNXRFTsHlD6C-BQMDXJEkWt5YXA2TZjUZv5OPVYigGFMcYroF-ftj4GLvrCrKC1zxG95fBEcWse3rAmwxUSGNYquQT97AyvUD0N_NZOgCV6oB4/s400/Ulmaskulob_Blog_Post_Send_Email_By_JavaScript_JSOM_Img_2.png" width="400" /></a></div>
<br />
Для начала заполним отправителя:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiJJgsbq9zsThBX-q61p64jT-qTpMVbshMLQe-SZLahengn7zWugLrlPonsjdrskENlcFKUx4-Oc87G3cwgYFtuf3F6MElqQo-YVWMobOe8XYYICnm7IrWwHX5Dc1__0o7VQTzJkpdeqY/s1600/Ulmaskulob_Blog_Post_Send_Email_By_JavaScript_JSOM_Img_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="333" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiJJgsbq9zsThBX-q61p64jT-qTpMVbshMLQe-SZLahengn7zWugLrlPonsjdrskENlcFKUx4-Oc87G3cwgYFtuf3F6MElqQo-YVWMobOe8XYYICnm7IrWwHX5Dc1__0o7VQTzJkpdeqY/s400/Ulmaskulob_Blog_Post_Send_Email_By_JavaScript_JSOM_Img_3.png" width="400" /></a></div>
<br />
Аналогично необходимо заполнить поля "Тема" и "Тело":<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkHLs-77iQj86_oNZ5L0soEcPlGhUUpI36NPHqIYgOPiQIkzrQNFQnhl2uPQgO99opXEo5U_UsxMxdFWHo42MtcXQR00T6U6zZFhl4W39dPMrByywQMX1ALUNXT5XhudtGYGrb_l7K8FY/s1600/Ulmaskulob_Blog_Post_Send_Email_By_JavaScript_JSOM_Img_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="331" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkHLs-77iQj86_oNZ5L0soEcPlGhUUpI36NPHqIYgOPiQIkzrQNFQnhl2uPQgO99opXEo5U_UsxMxdFWHo42MtcXQR00T6U6zZFhl4W39dPMrByywQMX1ALUNXT5XhudtGYGrb_l7K8FY/s400/Ulmaskulob_Blog_Post_Send_Email_By_JavaScript_JSOM_Img_4.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Теперь действие рабочего процесса заполнено:</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiilEutAs3MbKfHMiIpRqGIDoHK9m3T4xue7L5idY9jOK0uWs9TKuzGIsQR0v8SeJu11mKk7NwxUWNh10T3YPiVVkMzhPCJ0dFJBU7JMiO-ZAZNsXqj50G4L3IYRLaH5ILh5hVmHEVuO0c/s1600/2015-06-30+11_37_39-http___portal_adp_t.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="100" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiilEutAs3MbKfHMiIpRqGIDoHK9m3T4xue7L5idY9jOK0uWs9TKuzGIsQR0v8SeJu11mKk7NwxUWNh10T3YPiVVkMzhPCJ0dFJBU7JMiO-ZAZNsXqj50G4L3IYRLaH5ILh5hVmHEVuO0c/s400/2015-06-30+11_37_39-http___portal_adp_t.png" width="400" /></a></div>
Необходимо опубликовать рабочий процесс и обязательно отметить пункт "Автоматически запускать рабочий процесс при создании элемента":<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL54Nl18VeKe9LaBtvE0Q140PmEnhCMjFI9FCm6psvxX2ZSRMJogHRpI9JQknW95_iZEY4BcpycOGLHFctvMPUg0GqMokDdv88wiQrUW2aaMuxyzvy6MB32bIo3wysE_DFcJ2ijKwx_lE/s1600/2015-06-30+11_38_41-http___portal_adp_t.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="81" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL54Nl18VeKe9LaBtvE0Q140PmEnhCMjFI9FCm6psvxX2ZSRMJogHRpI9JQknW95_iZEY4BcpycOGLHFctvMPUg0GqMokDdv88wiQrUW2aaMuxyzvy6MB32bIo3wysE_DFcJ2ijKwx_lE/s400/2015-06-30+11_38_41-http___portal_adp_t.png" width="400" /></a></div>
Теперь попробуем вызвать нашу JavaScript функцию:<br />
<br />
<pre class="cscode"><code>CreateEmailListItem(<span class="str">'emailList'</span>, <span class="str">'Ulmaskulov_ar@Borets.ru'</span>, <span class="str">'subject'</span>, <span class="str">'body'</span>)
</code>
</pre>
После выполнения функции в списке можно увидеть созданный элемент:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjmd6eIMAL0zR0Y469ARmC0zHyxrz3crQnlcmyojSo-5OgpBwOCv3DOL_Vy0q41E44x4TjLjSaalk7THN0aA6RuvtMXhHM6jx93Tfs5gsQxRsUrZFWJGClc03PdQvvTlB1GKU_wps8y5w/s1600/2015-06-30+11_43_37-emailList+-+%25D0%2592%25D1%2581%25D0%25B5+%25D1%258D%25D0%25BB%25D0%25B5%25D0%25BC%25D0%25B5%25D0%25BD%25D1%2582%25D1%258B.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="80" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjmd6eIMAL0zR0Y469ARmC0zHyxrz3crQnlcmyojSo-5OgpBwOCv3DOL_Vy0q41E44x4TjLjSaalk7THN0aA6RuvtMXhHM6jx93Tfs5gsQxRsUrZFWJGClc03PdQvvTlB1GKU_wps8y5w/s400/2015-06-30+11_43_37-emailList+-+%25D0%2592%25D1%2581%25D0%25B5+%25D1%258D%25D0%25BB%25D0%25B5%25D0%25BC%25D0%25B5%25D0%25BD%25D1%2582%25D1%258B.png" width="400" /></a></div>
<div class="separator" style="clear: both;">
После создания выполнится рабочий процесс и отправит письмо. Это решает проблему.</div>
<div class="separator" style="clear: both;">
<br /></div>
P. S. Не забудьте разобраться с правами на список, иначе пользователи смогут читать сообщения отправленные не им. <br />
Рекомендую перейти в настройки списка: <b>Параметры -> Дополнительные </b><b>параметры </b><b>-></b><b> Разрешения на уровне элементов -> Доступ на чтение и отметить "Чтение элементов, созданных пользователем"</b>. Выглядит это так:<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTYLUZhztfLY1YxQG60Ih4RpjvuqExONXRtz-uy-8HvfCsz4memnCq4XgDEPPGF5fuh8Cr3uapwPZDYmd_rGogVFWK5xlHta8wub_8aDiRPWx9xcqJdx9anvmgWfHom8U_hfF04jDiIOA/s1600/Ulmaskulob_Blog_Post_Send_Email_By_JavaScript_JSOM_Img_7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="66" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTYLUZhztfLY1YxQG60Ih4RpjvuqExONXRtz-uy-8HvfCsz4memnCq4XgDEPPGF5fuh8Cr3uapwPZDYmd_rGogVFWK5xlHta8wub_8aDiRPWx9xcqJdx9anvmgWfHom8U_hfF04jDiIOA/s400/Ulmaskulob_Blog_Post_Send_Email_By_JavaScript_JSOM_Img_7.png" width="400" /></a></div>
<div class="separator" style="clear: both;">
<br /></div>
<span style="font-size: large;">Способ № 3</span></div>
<div>
После публикации ссылки на пост в фейсбуке, в комментариях, мне подсказали еще один способ. Вероятно, это самый удобный из всех возможных. Спасибо <a href="https://www.facebook.com/Zerg00s">Denis Molodtsov</a> и <a href="https://www.facebook.com/ivan.gorbadei">Иван Горбадей</a>.</div>
</div>
</div>
Суть способа заключается в отправке запроса к SharePoint REST API.<br />
Код выглядит так:<br />
<br />
<pre class="cscode"><code><span class="key">function</span> SendEmail(from, to, body, subject) {
<span class="key">var</span> siteurl = _spPageContextInfo.webServerRelativeUrl;
<span class="key">var</span> urlTemplate = siteurl + <span class="str">"/_api/SP.Utilities.Utility.SendEmail"</span>;
$.ajax({
contentType: <span class="str">'application/json'</span>,
url: urlTemplate,
type: <span class="str">"POST"</span>,
data: JSON.stringify({
<span class="str">'properties'</span>: {
<span class="str">'__metadata'</span>: { <span class="str">'type'</span>: <span class="str">'SP.Utilities.EmailProperties'</span> },
<span class="str">'From'</span>: from,
<span class="str">'To'</span>: { <span class="str">'results'</span>: [to] },
<span class="str">'Body'</span>: body,
<span class="str">'Subject'</span>: subject
}
}
),
headers: {
<span class="str">"Accept"</span>: <span class="str">"application/json;odata=verbose"</span>,
<span class="str">"content-type"</span>: <span class="str">"application/json;odata=verbose"</span>,
<span class="str">"X-RequestDigest"</span>: $(<span class="str">"#__REQUESTDIGEST"</span>).val()
},
success: <span class="key">function</span>(data) {
alert(<span class="str">"Email sent"</span>);
},
error: <span class="key">function</span>(err) {
alert(err.responseText);
}
});
};</code></pre>
</div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com0tag:blogger.com,1999:blog-7352419941088735445.post-20223422214653121382015-06-01T04:48:00.002-07:002015-06-01T05:05:31.171-07:00SharePoint. Error: Cannot complete the copy or merge operation because the database schema versions are different<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFtianOCPWpRxFdvW5GfARqm_OgGLsW86hMexGJchwkvo3zTr_F-LYa977klwIWYszbeNDA6JsgXtBHzeyDa1x68TTvUq6qjmJ4zFMTIWgTiY6m8vtjRT_Uba8KMz_WVF2uNd7J_AlXGc/s1600/Ulmaskulov_Blog_Cannot_complete_the_copy_or_merge_operation_because_the_database_schema_versions_are_different_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="96" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFtianOCPWpRxFdvW5GfARqm_OgGLsW86hMexGJchwkvo3zTr_F-LYa977klwIWYszbeNDA6JsgXtBHzeyDa1x68TTvUq6qjmJ4zFMTIWgTiY6m8vtjRT_Uba8KMz_WVF2uNd7J_AlXGc/s640/Ulmaskulov_Blog_Cannot_complete_the_copy_or_merge_operation_because_the_database_schema_versions_are_different_1.png" width="640" /></a></div>
<br />
Ошибка возникла при попытке перенести коллекцию сайтов в другую базу данных контента.<br />
Как это делать можно узнать по <a href="https://technet.microsoft.com/en-us/library/cc825328.aspx?f=255&MSPPError=-2147217396#Section3">ссылке</a>. Если кратко, то необходимо выполнить следующий PowerShell коммандлет:<br />
<br />
<pre style="font-size: 13px; line-height: 17.5499992370605px; overflow: auto; padding: 5px; word-wrap: normal;"><span style="font-family: Courier New, Courier, monospace;"><b>Move-SPSite <http://ServerName/SiteName> <i>-DestinationDatabase</i> <DestinationContentDb></b></span></pre>
<br />
Что бы исправить ошибку необходима одинаковая схема БД контента источника и цели, т.е. куда переноситься коллекция. Еще проще говоря, БД контента должны иметь идентичную схему, что бы была возможность переноса коллекций сайтов между ними.<br />
Как могло получиться, что схемы разные? Скорее всего после обновления. Новая БД контента создается по новой схеме, а старая работает в диапазоне совместимости.<br />
<br />
В моём случае необходимо было обновить схему БД источника.<br />
На картинке видно, что БД контента (WSS_Content), откуда мне необходимо перенести коллекцию сайтов - требует обновления, в отличии от БД контента в которую будет перемещена коллекция (WSS_Content_SSTD):<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgMl6-hA6ViaZXELzfd25IPUeVjb5YczWHf9bqs3rj2V3M0ick0m6kHGNfTKmM2yzSD8CFLae1_dxk0HJMTBhbLakjAqK1lYF7-cDUdbR5RAh35_eGjuMiL9WSNxDjUU0dFgbxJ2Au3zA/s1600/Ulmaskulov_Blog_Cannot_complete_the_copy_or_merge_operation_because_the_database_schema_versions_are_different_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="47" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgMl6-hA6ViaZXELzfd25IPUeVjb5YczWHf9bqs3rj2V3M0ick0m6kHGNfTKmM2yzSD8CFLae1_dxk0HJMTBhbLakjAqK1lYF7-cDUdbR5RAh35_eGjuMiL9WSNxDjUU0dFgbxJ2Au3zA/s640/Ulmaskulov_Blog_Cannot_complete_the_copy_or_merge_operation_because_the_database_schema_versions_are_different_2.png" width="640" /></a></div>
<br />
Что бы точно узнать версии схем - клик по имени базы, на отдельной странице будут написаны подробные сведения о БД:<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaITzYgm10oZdCe7xdDsYobD2zjl9iT8pjAWlU3qKsKeaATwGKdAmqOTAaD7pMJCR3SG-yWCCET2iPYLQ3NaH97moZILpcaMnTMgytZxtJXlHPo-rymMGguq-ytUD25HiXHvCe60nUkJw/s1600/Ulmaskulov_Blog_Cannot_complete_the_copy_or_merge_operation_because_the_database_schema_versions_are_different_3.png" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="98" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaITzYgm10oZdCe7xdDsYobD2zjl9iT8pjAWlU3qKsKeaATwGKdAmqOTAaD7pMJCR3SG-yWCCET2iPYLQ3NaH97moZILpcaMnTMgytZxtJXlHPo-rymMGguq-ytUD25HiXHvCe60nUkJw/s640/Ulmaskulov_Blog_Cannot_complete_the_copy_or_merge_operation_because_the_database_schema_versions_are_different_3.png" width="640" /></a><br />
<br />
Для обновления БД контента необходимо выполнить PowerShell скрипт:<br />
<br />
<pre style="font-size: 13px; line-height: 17.5499992370605px; overflow: auto; padding: 5px; word-wrap: normal;"><b><span style="font-family: Courier New, Courier, monospace;">Upgrade-SPContentDatabase <DB Name></span></b></pre>
<pre style="font-size: 13px; line-height: 17.5499992370605px; overflow: auto; padding: 5px; word-wrap: normal;"><b><span style="font-family: Courier New, Courier, monospace;">
</span></b></pre>
Подробности о коммандлете можно прочитать <a href="https://technet.microsoft.com/ru-ru/library/ff607813.aspx?f=255&MSPPError=-2147217396">здесь</a>.<br />
Так же, если необходимо, обновите все остальные не БД контента, делается это другим коммандлетом:<br />
<br />
<b><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">(Get-SPDatabase <DB_id> ).Provision();</span></b><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b><br /></b></span>
После обновления БД контента Вы увидите следующее:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWyw6QqCYDTLSJaYoETPf1HRH3UWmwhq8Fg3QaIeF_8VHo0vH6OfWIvzRgwZa-03zdJaW9QnfHmAg6dowKrJcHIlg1iYOpOzs_7V6JnbsPVMCH-cfEDwcf2o1IiKh5evyXxkWGl3e9oTM/s1600/Ulmaskulov_Blog_Cannot_complete_the_copy_or_merge_operation_because_the_database_schema_versions_are_different_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="38" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWyw6QqCYDTLSJaYoETPf1HRH3UWmwhq8Fg3QaIeF_8VHo0vH6OfWIvzRgwZa-03zdJaW9QnfHmAg6dowKrJcHIlg1iYOpOzs_7V6JnbsPVMCH-cfEDwcf2o1IiKh5evyXxkWGl3e9oTM/s640/Ulmaskulov_Blog_Cannot_complete_the_copy_or_merge_operation_because_the_database_schema_versions_are_different_4.png" width="640" /></a></div>
<br />
Теперь ошибка о разности схем исчезнет и можно выполнить перенос коллекции сайтов.</div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com0tag:blogger.com,1999:blog-7352419941088735445.post-7866522828946977572015-05-29T09:15:00.000-07:002015-05-29T09:15:43.157-07:00SharePoint. Идентификатор взаимосвязи. Как читать ошибки.<div dir="ltr" style="text-align: left;" trbidi="on">
<br />SharePoint, при возникновении ошибки не показывает текст, а сообщает "Correlation ID" (Идентификатор взаимосвязи). Выглядит это так:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJrdz0v4s5EzqZ2kitEmYGCZj33rbvcp3LynaDLCQRFRSwjgsXxm9_ZNFomtaDxkmtSkSByYOD2VcsAOhKLf8FR6G7v7i0EF28tibVU43grbGAIWtrYrKyeQiznhUGrcWJ0_ntlCuWKY8/s1600/Ulmaskulov_Blog_SharePoint_CorrelationID_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJrdz0v4s5EzqZ2kitEmYGCZj33rbvcp3LynaDLCQRFRSwjgsXxm9_ZNFomtaDxkmtSkSByYOD2VcsAOhKLf8FR6G7v7i0EF28tibVU43grbGAIWtrYrKyeQiznhUGrcWJ0_ntlCuWKY8/s640/Ulmaskulov_Blog_SharePoint_CorrelationID_1.png" width="640" /></a></div>
<br />
Сам текст ошибки можно найти в файле журнала ошибок:<br />
<b>C:\Program Files\Common Files\Microsoft Shared\web server extensions\14\LOGS</b><br />
<b><br /></b>
Для удобного просмотра текста ошибки ( и других событий) по Correlation ID есть много инструментов, часть создана еще для прошлых версий SharePoint, актуальными можно считать только 2:<br />1) <a href="https://www.microsoft.com/en-us/download/details.aspx?id=44020">SharePoint ULS Viewer</a><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcLTYQ65Emxuoa85IzE6Dh_gQ94ohIizc6YIqGiR96oHeYaIipB9Wl_XMw_1EDjnDsudwStvfgVbFK8Mc5HxJXx5l8-giHJzWO2dyfXrr9YPn5iTs-JTbZ_yrsuwq5wqQvnedoaQP1gG8/s1600/Ulmaskulov_Blog_SharePoint_CorrelationID_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="374" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcLTYQ65Emxuoa85IzE6Dh_gQ94ohIizc6YIqGiR96oHeYaIipB9Wl_XMw_1EDjnDsudwStvfgVbFK8Mc5HxJXx5l8-giHJzWO2dyfXrr9YPn5iTs-JTbZ_yrsuwq5wqQvnedoaQP1gG8/s640/Ulmaskulov_Blog_SharePoint_CorrelationID_2.png" width="640" /></a></div>
<br />
2) <a href="http://sharepointlogviewer.codeplex.com/">SharePoint LogViewer</a><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrYMiIhxcWvOMDEhhZfArBvo6dqtMXqhrYraWYoBq-dkz7bncB8u0UMooL3HZ0arB0exV5zQu7jJV8KJkRjDf8BqW_ZpYrwuoIRGGaWSh3f2fTDD02o7RYkVvucuTOtpw1EGeEwz_y6Vw/s1600/Ulmaskulov_Blog_SharePoint_CorrelationID_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="336" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrYMiIhxcWvOMDEhhZfArBvo6dqtMXqhrYraWYoBq-dkz7bncB8u0UMooL3HZ0arB0exV5zQu7jJV8KJkRjDf8BqW_ZpYrwuoIRGGaWSh3f2fTDD02o7RYkVvucuTOtpw1EGeEwz_y6Vw/s640/Ulmaskulov_Blog_SharePoint_CorrelationID_3.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Обе программы имеют возможность поиска теста ошибки или любого другого события по Correlation ID.</div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com0tag:blogger.com,1999:blog-7352419941088735445.post-66778889537930447092015-04-30T03:39:00.001-07:002015-04-30T03:41:37.865-07:00SharePoint 2013 Workflow error. Exception details: System.FormatException: Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: left;">
В ходе выполнения рабочего процесса возникла ошибка:</div>
<div style="text-align: left;">
<span style="color: #444444; font-family: Segoe UI, Segoe, Tahoma, Helvetica, Arial, sans-serif;"><span style="background-color: white; font-size: 13px;"><b><i>RequestorId: f54a5d97-39ba-7d44-0000-000000000000. Details: An unhandled exception occurred during the execution of the workflow instance. Exception details: System.FormatException: Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx). at System.Guid.GuidResult.SetFailure(ParseFailureKind failure, String failureMessageID, Object failureMessageFormatArgument, String failureArgumentName, Exception innerException) at System.Guid.TryParseGuidWithNoStyle(String guidString, GuidResult& result) at System.Guid.TryParseGuid(String g, GuidStyles flags, GuidResult& result) at System.Guid.Parse(String input) at System.Activities.CodeActivity`1.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager) at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)</i></b></span></span></div>
<div style="text-align: left;">
<span style="color: #444444; font-family: Segoe UI, Segoe, Tahoma, Helvetica, Arial, sans-serif;"><span style="background-color: white; font-size: 13px;"><br /></span></span></div>
<div style="text-align: left;">
Вот так выглядит на странице состояния рабочего процесса (wrkstat.aspx):</div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmWwtBAjzJ1uGERJ-jWLTo0ctL8iUJ4nZkqW1SxEeGLR1RMTn7CmRuKPwgzrSe-MjJ6UpPNPmYvKIf2Dgis4e2Zq3h3Xt0bxi9F7_bRQ_FZQz407W7WhIfYcoPyhjkycDDtqIa5mxbS6Q/s1600/Ulmaskulov_blog_WF_Error_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmWwtBAjzJ1uGERJ-jWLTo0ctL8iUJ4nZkqW1SxEeGLR1RMTn7CmRuKPwgzrSe-MjJ6UpPNPmYvKIf2Dgis4e2Zq3h3Xt0bxi9F7_bRQ_FZQz407W7WhIfYcoPyhjkycDDtqIa5mxbS6Q/s1600/Ulmaskulov_blog_WF_Error_1.png" height="320" width="232" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
В своем рабочем процессе я создал свой тип контента на основе задачи рабочего процесса 2013 версии. Пользователь при выполнении задачи заполняет добавленное мною кастомное поле. После завершения задачи я пытаюсь использовать значение заполненного поля. В действии назначения задачи есть возможность сохранять GUID созданной задачи в переменную. Используя эту переменную (TaskId14 на картинке) в подстановке я могу получить значение моего кастомного поля "Примечание":</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7bm0YlFcOI1ZuipnzbSlSNguq-9Sy9_jD3qfoUkKmZMjKAQtfRYuWDpi0HngO8RaoOI_AUzgaugs1DYNTn9MupMIcMaG38OgJurv8XY3qIgBwLZ2nnzSwC246KFil9mt9Ymkb_UAODZ0/s1600/Ulmaskulov_blog_WF_Error_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7bm0YlFcOI1ZuipnzbSlSNguq-9Sy9_jD3qfoUkKmZMjKAQtfRYuWDpi0HngO8RaoOI_AUzgaugs1DYNTn9MupMIcMaG38OgJurv8XY3qIgBwLZ2nnzSwC246KFil9mt9Ymkb_UAODZ0/s1600/Ulmaskulov_blog_WF_Error_2.png" height="228" width="320" /></a></div>
Ошибка, описанная в начале статьи, возникает в случае если Вы пробуете достать элемент задачи используя не GUID. Т.е. просто перепутали поле и вместо TaskId14, как в моем случае, используете любое другое значение, которое не является GUID.<br />
<span style="background-color: white; color: #444444; font-family: 'Segoe UI', Segoe, Tahoma, Helvetica, Arial, sans-serif; font-size: 13px;"><br /></span></div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com0tag:blogger.com,1999:blog-7352419941088735445.post-22840934696151529212015-04-27T04:13:00.000-07:002015-04-27T04:17:41.104-07:00SharePoint. Ссылка на загрузку документа.<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
Порой возникает необходимость дать ссылку на загрузку документа в библиотеке SharePoint.<br />
Чтобы ссылка была именно на загрузку копии документа. В случае если это файл, который можно открыть в Office Web Apps, то у меня возникла ситуация когда документ из браузера Internet Explorer выдается на открытие:<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKMKmzzyH2QJ9j6F1tLRHL9EpCx8WbOJeuxCI6jnBxEA0MIqPm-W2_pXTmEhgleKvwzHSccFYTCy1PoBsS1CzGMbKcm0spKkYsY9__Y0NkSs1rvkFqsuKhaoQjdYHCEaBBkexhFG6gsis/s1600/Ulmaskulov_Download_Link_1.png" imageanchor="1" style="background-color: #eeeeee; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin-left: 1em; margin-right: 1em; text-align: center; white-space: pre;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKMKmzzyH2QJ9j6F1tLRHL9EpCx8WbOJeuxCI6jnBxEA0MIqPm-W2_pXTmEhgleKvwzHSccFYTCy1PoBsS1CzGMbKcm0spKkYsY9__Y0NkSs1rvkFqsuKhaoQjdYHCEaBBkexhFG6gsis/s1600/Ulmaskulov_Download_Link_1.png" height="33" width="640" /></a><br />
<br />
После открытия этого документ в клиенте, т.е. в Microsoft Office Word 2013 - мы имеем возможность редактировать именно версию которая находится на сервере:<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOUYl62R9a1OAygi_lGsmCvHbIEfV5aorZfTEbGOxzz1uU7mrTaPyiIxX9OsCA3yUgvcoJjyGK2Y83XSPKUCZ8Q35TSSV330fHiaOHcv73n14UPM5SuGvk_RlEuBQkR6oXuMIOOaPEjCs/s1600/Ulmaskulov_Download_Link_2.png" imageanchor="1" style="background-color: #eeeeee; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin-left: 1em; margin-right: 1em; text-align: center; white-space: pre;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOUYl62R9a1OAygi_lGsmCvHbIEfV5aorZfTEbGOxzz1uU7mrTaPyiIxX9OsCA3yUgvcoJjyGK2Y83XSPKUCZ8Q35TSSV330fHiaOHcv73n14UPM5SuGvk_RlEuBQkR6oXuMIOOaPEjCs/s1600/Ulmaskulov_Download_Link_2.png" height="47" width="640" /></a><br />
<br />
<br />
Нам же необходимо получить именно загруженную копию. Для этого надо передать путь скачиваемого файла как параметр странице download.aspx
<br />
<span class="pln" style="background-color: #eeeeee; border: 0px; color: black; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin: 0px; padding: 0px; white-space: pre;"><br /></span>
<span class="pln" style="background-color: #eeeeee; border: 0px; color: black; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin: 0px; padding: 0px; white-space: pre;">http//host/_layouts/download.aspx?SourceUrl=http://host/library/myDoc.docx</span><span class="pun" style="background-color: #eeeeee; border: 0px; color: black; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; margin: 0px; padding: 0px; white-space: pre;">:</span><span class="com" style="border: 0px; color: grey; margin: 0px; padding: 0px;"></span><br />
<br /></div>
В случае, если в имени скачиваемого документа имеется кириллица, то необходимо предварительно выполнить <a href="https://ru.wikipedia.org/wiki/URL">кодирование URL</a>. Ниже показан пример как это сделать, если Вы формируете ссылку на клиенте с использованием JavaScript:<br />
<pre class="javascript" name="code">var downloadPageUrl = "http://host/_layouts/download.aspx?SourceUrl=";
var souceFileUrl = "http://host/library/мойДокумент.docx";
var encSouceFileUrl = encodeURIComponent(souceFileUrl);
var downloadUrl = downloadPageUrl + encSouceFileUrl;
</pre>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgamllouaxc4NL4pHqaLoJPkrVSKmKyWKe2RdnHVvBHjb_ydP6I9DxVnzqTB5ff9Pb6Co-zaDXz0umxDZHXgkVRmd_bw81CRC7lWL_9U-5FPqT7bxJZPqXJfbMMQNGeXOklAyxrj7KcksY/s1600/Ulmaskulov_Download_Link_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgamllouaxc4NL4pHqaLoJPkrVSKmKyWKe2RdnHVvBHjb_ydP6I9DxVnzqTB5ff9Pb6Co-zaDXz0umxDZHXgkVRmd_bw81CRC7lWL_9U-5FPqT7bxJZPqXJfbMMQNGeXOklAyxrj7KcksY/s1600/Ulmaskulov_Download_Link_3.png" height="32" width="640" /></a></div>
В общем проблема решается. Сама страница download.aspx наследуется от класса Download из сборки <b>Microsoft.SharePoint.ApplicationPages.dll</b>, в которой событие "<b>OnLoad</b>" читает параметр "<b>SourceUrl</b>" из URL и выдает полученный файл в виде потока байт с MIME-типом application/octet-stream:
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgokopHltc8AqlNSQS2bwKZA0dnw0TX9cI2-Svgjzm-Hnn4hNl5oqvtvR2actHN0o7oEJrFjvOJ1PgqFCgAPkCDAi9_2lZbq2gXqSzrsHpjTSTyc7ax3Uvx_u4DvWwwR9kSGNBaQz532HA/s1600/Ulmaskulov_Download_Link_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgokopHltc8AqlNSQS2bwKZA0dnw0TX9cI2-Svgjzm-Hnn4hNl5oqvtvR2actHN0o7oEJrFjvOJ1PgqFCgAPkCDAi9_2lZbq2gXqSzrsHpjTSTyc7ax3Uvx_u4DvWwwR9kSGNBaQz532HA/s1600/Ulmaskulov_Download_Link_4.png" height="332" width="640" /></a></div>
</div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com0tag:blogger.com,1999:blog-7352419941088735445.post-40555605714903629672015-04-07T02:45:00.000-07:002015-04-07T02:45:11.875-07:00Stack Overflow на русском запущен!<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuhYN8RQMFq7zb_InkTShIqoXsu4ReTY5dzcuPcWOtkXlykJ4xh4zZF5Wya13Al0TZOutm94-Hlip8n4NCQrTO8_op9gdKvZ_xUdwhvQbw3KOt5TfvbZd4CLNuXTe2qR_Kc2iwpxZeLPM/s1600/Stack+Overflow_Ulmaskulov_blog.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuhYN8RQMFq7zb_InkTShIqoXsu4ReTY5dzcuPcWOtkXlykJ4xh4zZF5Wya13Al0TZOutm94-Hlip8n4NCQrTO8_op9gdKvZ_xUdwhvQbw3KOt5TfvbZd4CLNuXTe2qR_Kc2iwpxZeLPM/s1600/Stack+Overflow_Ulmaskulov_blog.png" height="96" width="320" /></a></div>
Сегодня мне пришло письмо следующего содержания:<br />
<div style="background-color: white; color: #444444; font-family: Calibri, sans-serif; font-size: 15px; line-height: 21.2999992370605px; margin-bottom: 1.35em;">
Привет, Alexander Ulmaskulov!</div>
<div style="background-color: white; color: #444444; font-family: Calibri, sans-serif; font-size: 15px; line-height: 21.2999992370605px; margin-bottom: 1.35em;">
Меня зовут Николай, я работаю в компании <a href="http://stackexchange.com/" style="color: #0068cf; cursor: pointer; font-weight: inherit; line-height: 21.2999992370605px;" target="_blank">Stack Exchange</a> над русскоязычной частью Сети. Вы получили это сообщение, так как <a href="http://area51.stackexchange.com/proposals/41168/" style="color: #0068cf; cursor: pointer; font-weight: inherit; line-height: 21.2999992370605px;" target="_blank">подписаны на заявку на сайте Зона 51</a>.</div>
<div style="background-color: white; color: #444444; font-family: Calibri, sans-serif; font-size: 15px; line-height: 21.2999992370605px; margin-bottom: 1.35em;">
<strong style="line-height: 21.2999992370605px;">С радостью спешу сообщить, что Stack Overflow на русском запущен по адресу <a href="http://ru.stackoverflow.com/" style="color: #0068cf; cursor: pointer; font-weight: inherit; line-height: 21.2999992370605px;" target="_blank">http://ru.stackoverflow.com/</a>!</strong></div>
<div style="background-color: white; color: #444444; font-family: Calibri, sans-serif; font-size: 15px; line-height: 21.2999992370605px; margin-bottom: 1.35em;">
Пожалуйста, станьте одним из тех новаторов, которые заложат фундамент будущего сообщества программистов на русском языке. Именно сейчас сообществу особенно важна Ваша экспертиза!</div>
<div style="background-color: white; color: #444444; font-family: Calibri, sans-serif; font-size: 15px; line-height: 21.2999992370605px; margin-bottom: 1.35em;">
<a href="http://ru.stackoverflow.com/" style="color: #0068cf; cursor: pointer; font-weight: inherit; line-height: 21.2999992370605px;" target="_blank">Stack Overflow на русском</a> - это наш общий шанс сделать Интернет немножко лучше - создать свободно распространяемую базу прикладных знаний на русском языке. Вместе мы сможем создать стандарт общения, который позволит повысить производительность труда каждого русскоязычного разработчика.</div>
<div style="background-color: white; color: #444444; font-family: Calibri, sans-serif; font-size: 15px; line-height: 21.2999992370605px; margin-bottom: 1.35em;">
Присоединяйтесь! Задавайте вопросы! Делитесь знаниями!</div>
<div style="background-color: white; color: #444444; font-family: Calibri, sans-serif; font-size: 15px; line-height: 21.2999992370605px; margin-bottom: 1.35em;">
Если Вы пропустили <a href="http://discuss.area51.stackexchange.com/questions/19896/" style="color: #0068cf; cursor: pointer; font-weight: inherit; line-height: 21.2999992370605px;" target="_blank">обновление статуса заявки</a>, пожалуйста, ознакомьтесь с ними.</div>
<div style="background-color: white; color: #444444; font-family: Calibri, sans-serif; font-size: 15px; line-height: 21.2999992370605px; margin-bottom: 1.35em;">
</div>
<div style="background-color: white; color: #444444; font-family: Calibri, sans-serif; font-size: 15px; line-height: 21.2999992370605px;">
--</div>
<div style="background-color: white; color: #444444; font-family: Calibri, sans-serif; font-size: 15px; line-height: 21.2999992370605px;">
С уважением,</div>
<div style="background-color: white; color: #444444; font-family: Calibri, sans-serif; font-size: 15px; line-height: 21.2999992370605px;">
Николай Чабановский</div>
<div style="background-color: white; color: #444444; font-family: Calibri, sans-serif; font-size: 15px; line-height: 21.2999992370605px;">
Stack Exchange Inc.</div>
<div style="background-color: white; color: #444444; font-family: Calibri, sans-serif; font-size: 15px; line-height: 21.2999992370605px;">
<br /></div>
<div style="background-color: white; color: #444444; font-family: Calibri, sans-serif; font-size: 15px; line-height: 21.2999992370605px;">
Что ж, хорошая новость! Очень хотелось бы увидеть аналогичную новость о форумах по SharePoint.</div>
</div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com0tag:blogger.com,1999:blog-7352419941088735445.post-51087560902695000502015-03-25T01:26:00.000-07:002015-03-25T01:26:36.857-07:00SharePoint 2013 Workflow error: HTTP 401 & HTTP 423<div dir="ltr" style="text-align: left;" trbidi="on">
В моём решение я использовал рабочий процесс. Причем не встроенные 2010 версии, а новые, используя Workflow manager 1.0. После старта рабочего процесса возникала ошибка, в который в самом начале фигурирует:<br />
<b>HTTP 423 или HTTP Unauthorized</b><br />
Так же может быть:<b><br /></b><b>HTTP 401</b><br />
<br />
Пример:<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtb6pYkoBHF3ze51dmmqyxhPPqb_QJwwpwP0H_4dQpdV_SNxlv-1lTLNJEhKJfFjDgntQ9QtyOsvUxHkvnPjJc9jbkVncXP8OoVuId4JtM8nTRMMfx4XsBPhR45n9HIVHoSBOdVSZxtuM/s1600/Ulmaskulov_Blog_Workflow_Error_423_1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtb6pYkoBHF3ze51dmmqyxhPPqb_QJwwpwP0H_4dQpdV_SNxlv-1lTLNJEhKJfFjDgntQ9QtyOsvUxHkvnPjJc9jbkVncXP8OoVuId4JtM8nTRMMfx4XsBPhR45n9HIVHoSBOdVSZxtuM/s1600/Ulmaskulov_Blog_Workflow_Error_423_1.png" height="272" width="640" /></a><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5am7MUqAMwu66F5WN9ReD6a8r69t4jp7uUjZl2_8kBjADL9WxuycwCKenofI9I7bbCPCpgz8Uv5TjJFtdI5nte4wfGpOaFPVZOWjPSwugnXDXu7yDgZjgDg0W9evJ0pSP-ir9Q7oR40k/s1600/Ulmaskulov_Blog_Workflow_Error_401_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5am7MUqAMwu66F5WN9ReD6a8r69t4jp7uUjZl2_8kBjADL9WxuycwCKenofI9I7bbCPCpgz8Uv5TjJFtdI5nte4wfGpOaFPVZOWjPSwugnXDXu7yDgZjgDg0W9evJ0pSP-ir9Q7oR40k/s1600/Ulmaskulov_Blog_Workflow_Error_401_1.png" height="400" width="286" /></a></div>
<br />
<br />
Чаще всего встречалась ошибка:<br />
<span style="background-color: white; color: #444444; font-family: 'Segoe UI', Segoe, Tahoma, Helvetica, Arial, sans-serif; font-size: 13px;"><i><b>RequestorId: 37edfcab-8717-2a41-0000-000000000000. Details: An unhandled exception occurred during the execution of the workflow instance. Exception details: System.ApplicationException: HTTP 401 {"Transfer-Encoding":["chunked"],"X-SharePointHealthScore":["0"],"SPClientServiceRequestDuration":["98"],"SPRequestGuid":["37edfcab-8717-2a41-9647-2cd739cfd2c0"],"request-id":["37edfcab-8717-2a41-9647-2cd739cfd2c0"],"X-FRAME-OPTIONS":["SAMEORIGIN"],"MicrosoftSharePointTeamServices":["15.0.0.4569"],"X-Content-Type-Options":["nosniff"],"X-MS-InvokeApp":["1; RequireReadOnly"],"Cache-Control":["max-age=0, private"],"Date":["Thu, 26 Feb 2015 08:47:18 GMT"],"Server":["Microsoft-IIS\/8.5"],"WWW-Authenticate":["NTLM"],"X-AspNet-Version":["4.0.30319"],"X-Powered-By":["ASP.NET"]} at Microsoft.Activities.Hosting.Runtime.Subroutine.SubroutineChild.Execute(CodeActivityContext context) at System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager) at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)</b></i></span><br />
<br />
<br />
Дело в том, что если Вы используете <b>Workflow manager 1.0</b>, то для работы со списком списком истории рабочего процесса будут использоваться права инициатора рабочего процесса. И у инициатора может быть недостаточно прав для работы с этим списком. Имейте это в виду.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
Для решение проблемы необходимо повысить права пользователя на список истории рабочего процесса до <b>уровня разрешений "Совместная работа"</b>, сам список скрытый. Можно использовать <a href="https://spm.codeplex.com/downloads/get/526735">SharePoint manager 2013</a>, с его помощью поменять свойство списка <b>"hidden"</b> на <b>false</b>. Список появится в веб-интерфейсе и с ним можно будет работать как с обычным списком: <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_euUGKNklOInmy3u0QZe5Xd1RL5_LiLbkbt-VhgyZyCtT9q4aOt4WqkR8e977eRSX5Nal-64bOtG7KmU5gp3i7ThQ3s7J_o1Euz4fqiYAtc9XEcqnuCzW_kbVujFa9I7u9A_yGCoTDBM/s1600/Ulmaskulov_Blog_WorkFlow_History_List_All_Site_Content.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_euUGKNklOInmy3u0QZe5Xd1RL5_LiLbkbt-VhgyZyCtT9q4aOt4WqkR8e977eRSX5Nal-64bOtG7KmU5gp3i7ThQ3s7J_o1Euz4fqiYAtc9XEcqnuCzW_kbVujFa9I7u9A_yGCoTDBM/s1600/Ulmaskulov_Blog_WorkFlow_History_List_All_Site_Content.png" height="140" width="320" /></a></div>
<br />
<br />
Теперь можно назначить необходимые права для пользователя.<br />
Но есть способ несколько проще. Для этого достаточно использовать Microsoft SharePoint Designer. Откройте Ваш сайт, слева выберите пункт "Все файлы", если подвиснет на этапе "Создание отчёта" - обновите контент. Это баг с 2010 версии еще остался.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOsGmyrymSnLkA5Drz_-5a57dEBgyS-uCJ7HDs3mpO_WiSwunF5N4h9zhqq2rY8Qw7qxr2BOvOAKhbj8HPaarWy42la8aSRkjkOO2Qefed-d1Wmg8OqkM_dZc_s8fWPvLtShFPPj6DlbQ/s1600/Ulmaskulov_Blog_WorkFlow_History_List_SPD_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOsGmyrymSnLkA5Drz_-5a57dEBgyS-uCJ7HDs3mpO_WiSwunF5N4h9zhqq2rY8Qw7qxr2BOvOAKhbj8HPaarWy42la8aSRkjkOO2Qefed-d1Wmg8OqkM_dZc_s8fWPvLtShFPPj6DlbQ/s1600/Ulmaskulov_Blog_WorkFlow_History_List_SPD_1.png" height="400" width="286" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
В основном окне выберите папку "Lists", потом "Workflow History", правый клик и выбрать свойства:</div>
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqE8epSLNYxrne-PX8JW8OByCtCg8lEj46UnOwmZ6921BBJc3yC4Ra5TiFJ1HmmanxA0v2qP9STkK02-mcZ1itGVaPFUsmDsvzan1sPLw5hXhG_nyGzbYKDEG1WimM3wMOXz91dE_ZZ_A/s1600/Ulmaskulov_Blog_WorkFlow_History_List_SPD_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqE8epSLNYxrne-PX8JW8OByCtCg8lEj46UnOwmZ6921BBJc3yC4Ra5TiFJ1HmmanxA0v2qP9STkK02-mcZ1itGVaPFUsmDsvzan1sPLw5hXhG_nyGzbYKDEG1WimM3wMOXz91dE_ZZ_A/s1600/Ulmaskulov_Blog_WorkFlow_History_List_SPD_2.png" height="241" width="320" /></a></div>
<div style="text-align: left;">
Потом на ленте выбрать "Веб-страница администрирования":</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGVastdSYr8FC4TXZDePjAQl3IIjFwgpzKdYf9bxsqhQtCakFUhYX063cVClctX3g8m185QaEQAQ6y9eQtU3hSJRU482puFa0ytikBqQRK196jL14o0pJVRK19mCT5yM4ESjCSP__YH18/s1600/Ulmaskulov_Blog_WorkFlow_History_List_SPD_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGVastdSYr8FC4TXZDePjAQl3IIjFwgpzKdYf9bxsqhQtCakFUhYX063cVClctX3g8m185QaEQAQ6y9eQtU3hSJRU482puFa0ytikBqQRK196jL14o0pJVRK19mCT5yM4ESjCSP__YH18/s1600/Ulmaskulov_Blog_WorkFlow_History_List_SPD_3.png" height="125" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
После этого Вы увидите привычную страницу настройки списка. Добавьте необходимые права и проблема исчезнет. Рабочий процесс запускать снова необязательно. Достаточно на странице процесса в разделе попапе информации кликнуть на "Возобновить рабочий процесс".</div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com0tag:blogger.com,1999:blog-7352419941088735445.post-49919657802271700182015-03-18T01:29:00.000-07:002015-03-18T01:29:30.378-07:00SharePoint 2013. Workflow error: System.ArgumentException: ContentTypeId at Microsoft.Activities.Hosting.Runtime.Subroutine.SubroutineChild...<div dir="ltr" style="text-align: left;" trbidi="on">
Рабочий процесс перешел в состояние <span style="background-color: rgba(255, 255, 255, 0.85098); color: #444444; font-family: 'Segoe UI', Segoe, Tahoma, Helvetica, Arial, sans-serif; font-size: 13px;"><b>Приостановлено</b></span>.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3jNylKDpLY8RGqS45OP6VgYeocN9hWMSqUVxkFWrPBI_FH_zQ2XihGkBW06Ov9Sh_U2T8hYgnn0YkoNU8KyyvOTzJ_Ad5IRI86RQzt0UvRb6QysqMuZ2-o0AMOF0MBw7hiYCmAm40bDI/s1600/Ulmaskulov_Blog_Workflow_Error_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3jNylKDpLY8RGqS45OP6VgYeocN9hWMSqUVxkFWrPBI_FH_zQ2XihGkBW06Ov9Sh_U2T8hYgnn0YkoNU8KyyvOTzJ_Ad5IRI86RQzt0UvRb6QysqMuZ2-o0AMOF0MBw7hiYCmAm40bDI/s1600/Ulmaskulov_Blog_Workflow_Error_1.png" height="57" width="400" /></a></div>
<br />
Так же выдает ошибку:<br />
<span style="background-color: white; color: #444444; font-family: 'Segoe UI', Segoe, Tahoma, Helvetica, Arial, sans-serif; font-size: 13px;">Details: An unhandled exception occurred during the execution of the workflow instance. Exception details: System.ArgumentException: ContentTypeId at Microsoft.Activities.Hosting.Runtime.Subroutine.SubroutineChild.Execute(CodeActivityContext context) at System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager) at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)</span><br />
<span style="background-color: white; color: #444444; font-family: 'Segoe UI', Segoe, Tahoma, Helvetica, Arial, sans-serif; font-size: 13px;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlTTQySPgb-ukB-YjM1WuAE9aya0Olfiuh4bHETakQMA0vdOPLT98sr4oq8xupjpTdhzg_6FOx5FTW_aZF7asEtX9GgwCN7KpDpBpK8hH2nzVRFLqBCeS2GYPSHUi3S4crECVQrTmoMxo/s1600/Ulmaskulov_Blog_Workflow_Error_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlTTQySPgb-ukB-YjM1WuAE9aya0Olfiuh4bHETakQMA0vdOPLT98sr4oq8xupjpTdhzg_6FOx5FTW_aZF7asEtX9GgwCN7KpDpBpK8hH2nzVRFLqBCeS2GYPSHUi3S4crECVQrTmoMxo/s1600/Ulmaskulov_Blog_Workflow_Error_2.png" height="364" width="640" /></a></div>
<span style="background-color: white; color: #444444; font-family: 'Segoe UI', Segoe, Tahoma, Helvetica, Arial, sans-serif; font-size: 13px;"><br /></span>
Ошибка может быть связана с тем, что при создании элемента указывается пользовательский тип контента, который не добавлен в список. В общем то SharePoint Designer об этом заранее сообщает:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPRHF65ctW8BbM-fGoKmfVpW1P7J7ChZo0EeZXT7G3-1Y0AquUsg2YtugxKzxc_z1hqWDM39EDCPj6ftGuW1LaRXCz2_BPLm9iX6Mm8tzTD8EDXa4AQRz7vhQOHjPF1FBwKPVcD5g-DyM/s1600/Ulmaskulov_Blog_Workflow_Error_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPRHF65ctW8BbM-fGoKmfVpW1P7J7ChZo0EeZXT7G3-1Y0AquUsg2YtugxKzxc_z1hqWDM39EDCPj6ftGuW1LaRXCz2_BPLm9iX6Mm8tzTD8EDXa4AQRz7vhQOHjPF1FBwKPVcD5g-DyM/s1600/Ulmaskulov_Blog_Workflow_Error_3.png" height="140" width="400" /></a></div>
При редактировании поля "Типа содержимого задачи:" чуть ниже, если попытаетесь выбрать иной тип контента, появится надпись:<br />
<b>Проверьте, применяется ли этот тип содержимого к списку задач рабочего процесса.</b><br />
<div>
<b><br /></b>
<div>
Для продолжения достаточно добавить такой тип контента в список задач, который используется.<br />
После этого нажмите "Возобновить рабочий процесс".</div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/13907783142477230325noreply@blogger.com0