Категория Архиви: Развитие на SharePoint

Просто обяснение: “Стойността не попада в очаквания диапазон.”

АКТУАЛИЗИРАНЕ: Един анонимен плакат оставил голям коментар за вътрешните имена. Не забравяйте да го прочетете.

Когато работите със събитие приемници и други код, който адресира елементи чрез обектния модел на SharePoint списък, Аз често правят грешки, които генерира тази грешка по време на изпълнение:

Грешка при зареждане и събитие получател Conchango.xyzzyEventReceiver в xyzzy, Версия = 1.0.0.0, Култура = неутрална, PublicKeyToken = 0dc50a750396c3ac. Допълнителна информация е по-долу. : Стойността не попада в очаквания диапазон.

Мисля, че това е доста обща грешка, която потенциално е причинена много различни начини. Въпреки това, един прост обяснение е, че аз съм съотнасяне поле неправилно. Ако името на полето "Дата на падеж", Аз трябва да го позоваване като тази в събитие получател:

свойства.Елемент от списък["Дата на падеж"]

Когато грешите или да използвате грешен случая, когато се обръщате към полето, SharePoint генерира по-горе споменати runtime грешка. За пример, Това е грешно:

свойства.Елемент от списък["дата на падеж"]

</край>

Абонирайте се за моя блог.

Technorati тагове:

Бърз & Лесно: Създаване на папка и да присвоите тип съдържание (Или, Си KPI и ги ядат)

За да заобиколите KPI проблем Аз написах за тук, Аз направих някои тестване и открих че KPI работа срещу папки с мета данни по същия начин, че те работят срещу документи или списъка елементи. Аз се оказа го чрез създаване на нов тип съдържание на базата на типа на съдържание на папка и след това се добавя няколко полета. Съм създал някои показатели и се оказа че KPI работи както се очаква. Това е добра новина. Това не е съвършен, тъй като тренировка надолу получавате от KPI срещу папки не е точно това, което искате. Това не е твърде много е недостатък в моя случай, защото 1) крайните потребители не знаят по-добре и 2) тренировка надолу отива в папка. Те щракнете върху името на папката и те са в елемента. Това е две кликвания вместо един, което не е края на света.

Това течеше добре с работата правя. Аз съм създаване на папка за всеки документ, който се качва. Това се прави чрез получател на събитие. Като резултат, Това е едно парче от тортата да се запази родителската папка мета данни в синхрон с KPI задвижване мета данни от самия тъй като водопровод е вече налице файл. Това ми позволява да имам KPI и да ги ям също 🙂

Аз modified събитие приемника да добави папката и след това тази нова папка на тип съдържание към моя потребителски тип KPI-приятелски съдържание. Този късче на код did определителен член хитрост:

 SPFolderCollection srcFolders = targetWeb.GetFolder("Документи").Подпапките;
  Папка SPFolder addedFolder = srcFolders.Add(свойства.ListItem.ID.ToString());
  SPContentTypeId kpiCT = нов SPContentTypeId("0x0120002A666CAA9176DC4AA8CBAA9DC6B4039F");
  addedFolder.Item["Идентификатор на тип съдържание"] = kpiCT;
  addedFolder.Item.Update();

За да намерите действителните ИД на тип съдържание, Достъп до този тип съдържание чрез настройки на сайта и копие/тесто то от определителен член URL както е показано:

Изображение

</край>

Абонирайте се за моя блог!

Technorati тагове: ,

Бърз и лесен: Вземи папка SPFolder на SPListItem в получател на събитие

Аз мразя да го призная, но аз се борят с този един цял ден. Моят събитие приемник трябва да актуализирате поле на родителската папка. Това малко показва как да го направя:

частни невалидни UpdateParentFolder(SPItemEventProperties имоти)
{

Папка SPFolder thisItemFolder = свойства.ListItem.File.ParentFolder;
thisItemFolder.Item["Състояние на одобрение за ZZ"] = "Добрата новина, всеки!";
thisItemFolder.Item.Update();


} // UpdateParentFolder

В този случай, Аз съм на работа с библиотека с документи и свойствата са идващи от ItemAdded събитие.

Номерът е, че не можете да получите папка SPFolder на артикула директно от самия елемент (т.е.. свойства.ListItem.Folder е null). Вместо това, преминете към свързания файл на елемента от списъка и да получите папка на файла.

</край>

Абонирайте се за моя блог!

Technorati тагове:

Все още друго събитие получател Debug трик

Аз съм сигурен, че аз не съм първият човек, който излезе с това. Въпреки това, Аз не съм забелязал някой публикува трик като този, тъй като аз започнах да отделя специално внимание към Общността през юли. Така, Мислех, че ще го публикуваме този бърз и лесен debug съвет.

Аз съм работи по получател на събитие, което започна да генерира тази грешка в 12 кошер:

Грешка при зареждане и събитие получател Conchango.xyzzyEventReceiver в xyzzy, Версия = 1.0.0.0, Култура = неутрална, PublicKeyToken = blahbalhbalh. Допълнителна информация е по-долу. : Обект номер не настроен на една инстанция на обект.

Аз не знам къде е въведено този бъг, защото е направил твърде много неща в един от моите код/разположи/изпитвателни цикли.

Аз се опитах този разтвор да се ми pdb там с надеждата, че SharePoint 12 кошер ще покаже проследяването на стека, но няма късмет. Аз не знам дали това е възможно и ако някой прави, Моля да ме уведомите 🙂

Знам, че е възможно да Напишете вашия собствен регистър съобщения до 12 кошер. Честно казано, Исках нещо малко по-страшно и по-бързо за изпълнение.

Това ми хрумна, че мога да получа поне някои основни следа информация чрез улавяне и повторно хвърляне общи изключения като този:

  Опитайте {
    UpdateEditionDate(имоти);
  }
  улова (Изключение e)
  {
    хвърлят нов Изключение("Експедитор, UpdateEditionDate(): Изключение: [" + e.ToString() + "].");
  }

Това се появи в 12 Кошера thusly:

Грешка при зареждане и събитие получател Conchango.xyzzyEventReceiver в xyzzy, Версия = 1.0.0.0, Култура = неутрална, PublicKeyToken = blahblahblah. Допълнителна информация е по-долу. : Експедитор, UpdateEditionDate(): Изключение: [System.NullReferenceException: Обект номер не настроен на една инстанция на обект. в Conchango.xyzzyManagementEventReceiver.UpdateEditionDate(Свойства на SPItemEventProperties) в Conchango.xyzzyManagementEventReceiver.Dispatcher(Свойства на SPItemEventProperties, Низ eventDescription)].

Това ми даде всички подробности, трябва да проследим този проблем и аз очаквам да се използва много върви напред.

</край>

Абонирайте се за моя блог!

Разтвор: Член SPQuery не папки за търсене

Миналата седмица бях прилагане "се развива" решение за клиент, който използва BDC и член SPQuery и се блъсна в някои затруднения, използвайки член SPQuery срещу библиотека с документи, съдържащи папки. Долната линия: Присвояване на "рекурсивни" за атрибут на изглед на заявка.

Моят сценарий:

  • В понеделник, Качване на документ и предоставят някои мета данни.
  • Следващата седмица, Качване на нов документ. Голяма част от този нов документ мета данни се основава на документа, който качих в понеделник (които наричаме "главен документ").
  • Ние създадохме уеб услуга фасада, която осигурява КБД-приятелски интерфейс към списъка, така че потребителите лесно да намерите този понеделник документ чрез търсене по заглавие.
  • BDC данни колона осигурява приятелски потребителски интерфейс. (Това е част от моя опит с BDC за по-приятелски справочна колона).

BDC фасада услуги използва заявка като този да направите търсене:

 // Използва U2U инструмент за подпомагане при създаването на тази CAML заявка.
      oQuery.Query =
        "<Където>";

      Ако (titleFilter.Length > 0)
        oQuery.Query  =
          "  <И>";

      oQuery.Query  =
        "    <И>" +
        "      <Geq>" +
        "        <FieldRef име =  "DocumentId" />" +
        "        <Стойност тип =  "Text">" + minId + "</Стойност>" +
        "      </Geq>" +
        "      <Leq>" +
        "        <FieldRef име =  "DocumentId" />" +
        "        <Стойност тип =  "Text">" + maxId + "</Стойност>" +
        "      </Leq>" +
        "    </И>";

      Ако (titleFilter.Length > 0)
        oQuery.Query  =
          "    <Съдържа>" +
          "      <FieldRef име =  "Title" />" +
          "      <Стойност тип =  "Text">" + titleFilter + "</Стойност>" +
          "    </Съдържа>" +
          "  </И>";
      oQuery.Query  =
        "</Където>";

По време на първоначалния етап на развитие, този работник голям. Въпреки това, Ние въведохме папки в директорията за решаване на някои проблеми и изведнъж, Моят избор на BDC не върне никакви резултати. Това се проследяват до факта, че член SPQuery би никога не върне никакви резултати. Ние използвани папки главно да дадат възможност на множество файлове със същото име да бъде качен, но с различни мета данни. Когато файлът е качен, Ние Създай папка, базирано на ИД на елемента от списъка и след това преместете файла там (Аз написах за това Тук; Ние сме имали смесени резултати с този подход, но като цяло, Тя работи добре). Потребителят не им пука за папки и в действителност, наистина не разбирам, че има някакви папки. Ние конфигурирали всички изгледи на библиотеката да се показват елементи без папки.

Аз хит този проблем, два пъти по техническото изпълнение еволюира и решавам то различно всеки път. За първи път, Не е използвал съдържа оператор в заявка. Без оператор на съдържа, Аз бях в състояние да реши проблема чрез задаване на изгледа в член SPQuery на contructor. Вместо да използвате Конструкторът по подразбиране:

Splist.Update() oList = web.Списъци["Документи"];

Член SPQuery oQuery = нов Член SPQuery();

Вместо това използва конструктор, който определен изглед:

Splist.Update() oList = web.Списъци["Документи"];

Член SPQuery oQuery = нов Член SPQuery(oList.Views["Всички документи"]);

Това решен проблема и аз започнах да си взема резултатите.

След това се добавя съдържа оператора в микса и го разби отново. Оказва се, че съдържа оператор, доколкото мога да кажа, не работи с изглед по същия начин като по-прост GEQ / LEQ оператори. Направих някои търсене и научих, че от заявката преглед на атрибути трябва да бъде настроен да "Рекурсивна", както и в:

oQuery.ViewAttributes = "Обхват = "Recursive"";

Това решен проблема за съдържа. Всъщност, Това също така решен проблема ми първоначалното търсене и ако бяха определени рекурсивни атрибут за първи път, Аз ще не тичам в този въпрос отново.

Фактът, че Изглед основа член SPQuery работи за някои оператори (GEQ/LEQ) а други не (СЪДЪРЖА), съчетано с факта, че KPI не изглежда да работи изобщо с папка, която съдържа документа библиотеки води ми да се смята, че член SPQuery има orthogonality проблеми.

Специални благодарности:

  • Добрите хора в U2U и си инструмент за заявка.
  • Майкъл Хофер е страхотно "учене чрез правене" блог пост, коментари и отговори.

</край>

Абонирайте се за моя блог!

Мос KPI бъг? Индикатора на списък, свързан с библиотека с документи с папки

АКТУАЛИЗИРАНЕ 02/29/08: Аз решен този проблем чрез създаването на папка и след това присвояване тип съдържание в папка, която има мета данни аз нужда за KPI. Това е описано в малко повече подробности тук.

Ние са приложили техническо решение, където потребителите качване на документи в библиотека с документи. Получател на събитие създава директория и се движи на файл в тази директория (с помощта на техника, подобни на това, което пише за Тук). Ние сте успешно навигация около потенциални проблеми, причинени от събитие получател, който преименувате качените файлове (главно, защото потребителите никога не започват им документ като щракнете върху "нов" но вместо това да създаде docs локално и след това да ги качите).

Мета данни за тези документи съдържа "да" / не колона на сайт наречен "спешно" и друга колона на сайт, наречен "Статус". Ние трябва да отговарят на бизнес изискване, което показва процента на "спешно" документи, чието състояние е "Висящо".

Това е обикновено просто и аз нещо много подобно на SharePoint гонче с много снимки на екрана, ако проявявате интерес.

Накратко, Направих следното:

  • Създаване на изглед на библиотеката на doc, наречена "В очакване".
  • Конфигурирайте изгледа, за да игнорирате папка структура.
  • Създаване на KPI списък.
  • Създаване на индикатор в списъка, който сочи към библиотека с документи и че "Чакащо" изглед.

Това просто не работи. KPI показва моята целева (e.g. пет спешно документи) но винаги показва действителния брой на спешните документи като нула. Парадоксално, Ако пробиете до детайли, Тя показва пет спешни документи в списъка. Съм създал много проста сценарий с два документа, един в една папка и една не. Тук е параван сачми:

Изображение

На екрана изстрел по-горе ясно показва, има два документа в изгледа, но "стойност" е един. "CamlSchema" с празен документ Id е в главната папка, а другият е в папка с име "84".

Струва ми се, че въпреки че указвате изглед, KPI не чест на "Покажи всички елементи без папки" настройка и вместо това, се ограничава до главната папка.

Ако съм сгрешил, Моля да ме линия или оставите коментар.

</край>

Абонирайте се за моя блог!

Technorati тагове:

Разтвор на проблем: “FileNotFoundException” С моя функцията приемник.

Аз работех по функция миналата седмица, която ще добави някои събитие получател към екземпляр на конкретен списък. (Аз blogged малко за този списък приемника тук).

С помощта на командния ред, Мога да инсталирате компонента с грешка (но вижте по-долу за скрит грешка). Когато се опитах да разположи функцията на сайта, МОС се оплакват от FileNotFoundException"" грешка. Този блог пост описва как аз решавам то.

Това е грешка, която МОС ми показа в web браузъра:

Функцията "b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ не може да се инсталира, защото на товаренето на монтаж на приемници на събития "xyzzyFeatureReceiver_0" Неуспешно: System.IO.FileNotFoundException: Не може да зареди файл или сглобяване "xyzzyFeatureReceiver_0’ или един от нейните колонии. Системата не може да намери указания файл.
Име на файл: "xyzzyFeatureReceiver_0’
в System.Reflection.Assembly.nLoad(Име на AssemblyName, CodeBase на низ, Доказателства assemblySecurity, LocationHint на събрание, StackCrawlMark& stackMark, Булева throwOnFileNotFound, Булева forIntrospection)
в System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Доказателства assemblySecurity, StackCrawlMark& stackMark, Булева forIntrospection)
в System.Reflection.Assembly.InternalLoad(AssemblyString на низ, Доказателства assemblySecurity, StackCrawlMark& stackMark, Булева forIntrospection)
в System.Reflection.Assembly.Load(AssemblyString на низ)
в Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
WRN: Регистрирането на обвързването на събранието е включен OFF.
За да разрешите на регистриране на отказ за събрание bind, Задайте стойност на системния регистър [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) за да 1.
Бележка: Има някои производителността санкция, свързани със сглобяване bind грешка регистриране.
За да изключите тази функция, премахване на стойността в системния регистър [HKLMSoftwareMicrosoftFusion!EnableLog].

Отстраняване на проблеми с Windows SharePoint Services.

Аз знам как да причиняват съзнателно тази грешка: не инсталирайте събрание в GAC. Но, Тя е в GAC. Обикновено инсталирате възли в GAC плъзгайки ги в c:\windowsassembly папка, като използвате windows explorer. Никога не съм се чувствал 100% удобни го направи, защото винаги мислех, че gacutil съществувал по причина … така че аз се опитах това. Го прави никаква разлика.

Аз търсили Internets и намери този пост: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1

Плаката се случи да използва същия корен бит на код (от вътрешната WSS книга от този списък) така че е надежда знак. Въпреки това, предложение на decorating общото събрание със [събрание: ] Директива не правят смисъл за мен. Аз все пак съм опитвал и бях прав. Го прави никаква разлика.

След това забелязах, че моята дефиниция на клас не е публично. Аз го публично и че прави никаква разлика.

Следващ, Отидох да съдейства "събрание bind неизправност регистър на" (след полезен и точни инструкции предоставена) и това е, когато нещата започнаха да се получи интересно. Че вляза ми показва, че runtime е търсене навсякъде на този сървър за моя монтаж. Тя дори изглежда да се търси за нея в моя кабинет лекарство. Но … той няма да го потърсите в GAC.

Сложи на моите зимно яке и отидете търсене Internets отново и откриете, че някой е имал този проблем също. Продължителни дискусии в това публикуване Питърс разстояние в нищо и не мога да намеря решение.

Аз движа ми събрание в едно от местата, log твърди е търсене и направя малко по-голям напредък. Съм възнаградени с нова грешка в браузъра, когато се опитате да активирате функцията:

Не можа да създаде обект за приемник на функцията от събрание "xyzzyFeatureReceiver_0", Въведете "Conchango.xyzzyFeatureReceiver" за функцията b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: Стойността не може да бъде нулев.
Име на параметър: тип
в System.Activator.CreateInstance(Тип тип, Булева nonPublic)
в System.Activator.CreateInstance(Тип тип)
в Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()

Отстраняване на проблеми с Windows SharePoint Services.

Време за един последен пътуване до Internets!

Този път разберете, достатъчно предсказуемо, че Мос издава тази грешка, защото общото събрание не е в GAC.

Искам да получи нещо положителни извън това и се опитайте да се чувства малко горд, че съм създаден Fugitive MSIL възли, но това не е работа. Аз съм само обикновен безпокоя. Да намеря себе си мърмори "кокошката или яйцето" под моето дъх.

Най-накрая реши да шута. Създам един изцяло нов проект и Копирайте кода от проекта за incredible-cloaked-from-the-GAC-assembly не работят над към този нов проект. (Аз гледам за билд флаг, наречени нещо като "Скрий от събрание, задължителни, ако инсталирани в GAC" но не може да намери една).

I инсталирате компонента и да го активирате и … тя работи! Така, след всичко това, Аз трябваше да основно "рестартиране’ Моят проект. Това е още една причина, защо мразя компютри.

Аз научих нещо полезно от това. Са слагали функции, които използват stsadm заповядвам линия през целия ден и използвали "-сила" опция от вредния навик. По някаква причина, Не използвайте опцията - force когато Инсталирах новия проект. Този път, Направих действително, наистина забравяме да копирате този нов проект събрание в GAC. Като резултат, Получих че "FielNotFoundException" грешка. Този път, Имам го от stsadm, не и когато се опитах да активирате функцията чрез web браузър. Така, -сила всъщност играе две роли. Тя ви позволява да инсталирате отново съществуваща функция. Той също така ви позволява да инсталирате бъги функция, която не може да работи по време на изпълнение чрез потискане грешка. То вероятно казва колкото в помощта някъде, но аз никога не го е забелязал.

</край>

Бърз & Лесно: Преименуване на качения файл с помощта на SharePoint обектния модел чрез получател на събитие

АКТУАЛИЗИРАНЕ: Това работи, но има съществени ограничения, които са описани в коментарите. Това все още може да бъде полезна в някои обстоятелствата.

АКТУАЛИЗИРАНЕ 2: В сегашния си проект, Потребителите винаги качване на документи. Като резултат, Аз не тичам в проблем, когато MS Word работи и мисли, че файлът е бил преименуван на него. Аз тичам в проблем, "файлът е променен от друг" и това решени чрез проста семафор тип флаг. Потребителите трябва да промените мета данни поле от стойността й по подразбиране на нещо друго. Itemupdated() приемник търси валидна стойност там, преди действително да се извършва Преименуване и оттогава, Не съм имал никакви проблеми. Вашият километраж може да варира.

Имам клиент изискване за промяна на името на качените файлове качени в конкретен документ библиотека да се съобрази с конкретен именуване конвенция. API не предвижда "Преименуване()" метод. Вместо това, Ние използваме "Движа(…)". Тук е минимален малко код, за да постигнем това:

 обществени замени невалидни ItemAdded(SPItemEventProperties имоти)
        {
            SPFile f = свойства.ListItem.File;

            f.MoveTo(свойства.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc");
            f.Update();

        }

Само сложната малко е "свойства. ListItem.ParentList.RootFolder.Url". Движа() метод изисква URL адрес. Това пюре низ точки ми в главната папка на my текущ документ библиотека. Това ми позволява да се избегне всяко твърд кодиране в моя случай приемника.

Това е по-полезен версия, която прави същото, но Задава името на файла на "Заглавието":

 обществени замени невалидни ItemAdded(SPItemEventProperties имоти)
        {
            DisableEventFiring();

            // Присвояване на заглавието на този елемент към името на самия файл.
 // ЗАБЕЛЕЖКА: Тази задача трябва да се извършва преди ние променят самия файл.
 // Призовава актуализация() на SPFile изглежда да се обезсили свойствата в
 // някои смисъл.  Актуализации на "заглавие" не е до това промени (и актуализация() повикване)
 // са преместени пред промяната в името на файла.
            свойства.Елемент от списък["Заглавие"] = свойства.ListItem.File.Name;

            свойства.ListItem.Update();

            SPFile f = свойства.ListItem.File;

            // Вземи разширението на файла.  Че трябва по-късно.
 низ spfileExt = нов FileInfo(f.Name).Разширение;

            // Преименуване на файл за ИД на елемента от списъка и използвайте разширението на файла, за да
 // тази част от него непокътнати.
            f.MoveTo(свойства.ListItem.ParentList.RootFolder.Url +
                "/" + свойства.Елемент от списък["ИД"] + spfileExt);

            // Извършване на движение.
            f.Update();

            EnableEventFiring();
        }

Бързо съвет: Заявка за съдържание уеб част, Стойност на колона за справка и XSL

Имам име на колона в тип съдържание, именован "Недвижими имоти местоположение".

Тази колона е от тип "справка".

Имам промяна <CommonViewFields> и ItemStyle.xsl да покажете колоната.

Прост <XSL:стойността на избор =…> връща обратно вътрешната стойност, която включва редната позиция данни, като:

1;#Маями

Да получите стойността на човек приятелски, Използвайте xsl подниз след, както е показано:

<XSL:( @Real_x005F_x0020_Estate_x005F_x0020_Location, "#") ">< / xsl:стойността на >(@Real_x005F_x0020_Estate_x005F_x0020_Location,’#’)"></XSL:стойността на>

Използвайте тази техника, когато работите със стойности за справка в XSL трансформации и трябва да получи стойността на човек приятелски.

<край />

Technorati тагове: , ,

Бърз и лесен: Определите вътрешна колона име на колона на сайт

АКТУАЛИЗИРАНЕ: Джеръми Thake Blogged за това и постави някои код за приложение на конзолата Това показва вътрешните имена.

Аз се опитвах да получите заявка за съдържание уеб част за показване на дата на падеж от една задача, защото на екрана етикета е "Дата на падеж", Предположих, че името на колоната да се използва в <CommonViewFields> е "Due_x0020_Date".

Грешен!

Името на истински колона в този случай е "DueDate".

Как да го намеря? Аз прочетете отново Хедър На Соломон блог влизане за промяна на CQWP за да покажете допълнителни колони с данни. Тя описва този процес в стъпка #13. Доверие в него. Това е правилна. Най-малко, Това е правилно за мен. Не съм го доверие на първо място за друга колона с много по-дълго име.

Аз казвам "доверие в него" защото аз не доверие в него и вероятно губи близо два часа, окръг главата си срещу стената. След аз решен "DueDate" Име, Аз исках да добавите друго поле за <CommonViewFields>. Използване на Соломон техника, Аз получавах колона име като "XYZ_x0020_Project_x0020_Due_x00".

Мислех за себе си, Това ясно е пресечен име. Аз отидох напред и ООН пресечен го без успех. Накрая използва привидно пресечен името и то работник.

Бонус съвет: Когато бях на работа с CQWP, Ако аз добавя лошо вътрешно име на <CommonViewFields>, CQWP ще ми каже, че заявката е не върна никакви резултати. Но, Ако добавите тип данни за името на полето, Тя ще върне резултат. Добавяне на данни тип всъщност маскирани проблем тъй като е съотнасяне несъществуващи поле. Може да го добавите, но когато се опитах да покажете стойността му, Винаги ще получите празен.

Това не маска грешка:

<CommonViewFields>Due_x0020_Date;</CommonViewfields>

Това маска грешка:

<CommonViewFields>Due_x0020_Date,Дата и час;</CommonViewfields>

</край>