"SharePoint Online" naršymo parinktys

Svarbu :  Šis straipsnis išverstas naudojant mašininį vertimą, žr. atsakomybės atsisakymą. Su šio straipsnio versija anglų kalba galite susipažinti čia .

Šiame straipsnyje aprašoma, kaip pagerinti puslapių įkėlimo laikų "SharePoint Online" naudojant struktūrinis naršymas ir ieška valdomas naršymas.

Visuotinio naršymo ir užklausų, kurios reikia norint kurti struktūrinis naršymas gali būti puslapių įkėlimas daugiau lėtai aplanke "SharePoint Online". Taip yra todėl, kad kiekviena iš šių užklausų siunčia kitą užklausą SQL serverio. Kiekvieno svetainės ir antrinės svetainės, turite daugiau užklausų atliktus SQL serverio. Ši problema taip pat turi įtakos puslapių šablonai. Tai reiškia, kad taip pat daro visuotinio naršymo.

Kai kuriose "SharePoint" svetainėse reikia didelių ir sudėtingų struktūrų. Naudojant out of the box struktūrinis naršymas, kuri naudoja turinys užklausa, tai gali lemti lėtai puslapių įkėlimo laikų dėl kelių svetainių sluoksnių. Kiekvienas lygmenys antrinėse svetainėse, taip pat sukuria kita užklausa.

Yra du pagrindiniai out of the box Naršymo parinktys SharePoint taip pat trečią, užsakymą, ieška pagrįstas metodas. Kiekvienos parinkties turi privalumai ir trūkumai, kaip nurodyta toliau pateiktoje lentelėje.

Struktūrinis naršymas

Valdomas naršymas

Ieška valdomas naršymas

Srities specialistai:

  • Lengvai konfigūruoti

  • Saugos apkarpyti

  • Automatiškai atnaujinama įtraukus svetaines

Srities specialistai:

  • Lengva prižiūrėti

Srities specialistai:

  • Saugos apkarpyti

  • Automatiškai atnaujinama įtraukus svetaines

  • Greitai įkėlimo laiko ir vietinės talpyklos naršymo struktūra

Trūkumai:

  • Galite atlikti prastai su sudėtinga svetainės struktūra

Trūkumai:

  • Automatiškai atnaujinti svetainių struktūra

Trūkumai:

  • Lengvai tvarka svetainių galimybės

  • Reikia tinkinimo puslapio šabloną (techninių įgūdžių būtina)

Jei turite svetainę, kuriose yra daug antrinių svetainių ir naudojate struktūrinis naršymas, gali sulėtinti jūsų puslapį prijungtoms žymiai. Tinkamiausią parinktį svetainės priklausys svetainės poreikius ir jūsų techninis pajėgumas. Jei esate patogus naudoti pasirinktinį puslapio šabloną ir kai kurie galimybę išlaikyti keitimų, kurie gali susidaryti numatytąjį puslapio šabloną "SharePoint Online" organizacijos, ieška pagrįstas parinktis pateiks geriausią vartotojo poreikius. Jei norite, kad paprastas vidurį tarp out of the box struktūrinis naršymas ir ieška, valdomo naršymo yra labai geras pasirinkimas. Valdomo naršymo parinktis galite būti išlaikyta konfigūracijos, nereikia kodą tinkinimo failus, ir tai žymiai greičiau nei out of the box struktūrinis naršymas.

Kitas būdas yra pertvarkyti esamą svetainę ir sumažinti naršymo elementai ir antrines svetaines, būtina skaičių. Taip yra todėl, kad struktūrinis naršymas atlieka gerai tol, kol svetainių struktūrą ir naršymo nėra per sudėtingas.

Šiame straipsnyje palyginamos įvairių būdų pavyzdys svetainių rinkinyje. Svetainių rinkinio pavyzdys yra 11 antrinių svetainių ir kiekviena antrinė svetainė yra bent keturių papildomų antrinių svetainių.

Ekrano nuotrauka, kurioje rodomos svetainės ir antrinės svetainės

Struktūrinis naršymas naudojant "SharePoint Online"

Tai yra naudojamas kaip numatyta out of the box naršymo ir labiausiai paprasta ir atitinkamą sprendimą daugeliu atvejų. Išskyrus atvejus, kai yra sudėtingos struktūros kelių antrinių svetainių arba daug lygių antrines svetaines, struktūrinis naršymas atlieka gerai. Pagrindinės šio būdo pranašumai saugos apkarpyti, automatiškai atnaujinama įtraukus naujas svetaines ir ją nereikia jokių puslapio tinkinimas. Ne techninius vartotojas gali taip pat lengvai įtraukti elementus, slėpti elementus ir tvarkyti naršymo iš puslapio parametrai.

Įjungus struktūrinis naršymas "SharePoint Online"

Norint pademonstruoti, kaip efektyvumo programoje SharePoint Online standartiniu struktūrinis naršymas ir Rodyti antrines svetaines parinktis įjungta. Toliau pateiktame paveikslėlyje yra ekrano nuotrauka parametrų puslapyje Svetainės parametrai > naršymas.

Ekrano kopija, kurioje rodomos antrinės svetainės

Analizuoti struktūrinis naršymas veikimo "SharePoint Online"

Analizuoti našumą "SharePoint" puslapį, naudokite skirtuką tinklo F12 programų kūrėjo įrankiai "Internet Explorer".

Ekrano, kuriame F12 kūrėjų tinklo įrankiai

Skirtuke tinklas spustelėkite .aspx puslapyje, kuriame yra įkeltas ir tada spustelėkite skirtuką išsami informacija .

Ekrano kopija, kurioje rodomas išsamios informacijos sąrašas

Spustelėkite Atsako antraštės.

Išsamios informacijos skirtuko ekrano kopija

SharePoint pateikia naudingos informacijos diagnostikos savo atsakymą antraštes. Vienas iš labiausiai naudinga yra SPRequestDuration    yra reikšmę milisekundėmis, kiek laiko prašymą paėmė procesas serveryje.

Šių ekrano nuotrauka Rodyti antrines svetaines nepažymėtas, struktūrinis naršymas. Tai reiškia, kad tik svetainių rinkinio saitą visuotinio naršymo:

Ekrano kopija, kurioje įkėlimo laikas rodomas kaip užklausos trukmė

245 milisekundžių reikšmė nėra SPRequestDuration    kodą. Tai reiškia laiką, kurie buvo pateikti užklausą. Tik vieną elementą naršymo svetainėje, tai nėra geras naudojamas kaip SharePoint Online atlieka be dideles naršymo. Kitą ekrano rodo, kaip pridėti antrinių veikia šį raktą.

Ekrano kopija, kurioje 2502 ms trukmės užklausą

Pridėti antrinių smarkiai išaugo laiko reikia pateikiama puslapio užklausa.

Privalumai naudojant įprastą struktūrinių naršymo srities, kad galite lengvai tvarkyti tvarką, paslėpti svetainių, puslapių įtraukimas, rezultatai saugos apkarpyti, ir taip yra ne skiriasi nuo palaikomų puslapių šablonai, naudojama "SharePoint Online". Jei atidžiai struktūrą savo svetainės ir sumažinti atstumą antrinių svetainių svetainių rinkinyje tada struktūrinis naršymas atlieka gerai.

Valdomas naršymas ir valdomų metaduomenų naudojant "SharePoint Online"

Valdomo naršymo yra kita out of the box parinktis, kuriuos galite naudoti norėdami iš naujo sukurti tokia pat kaip struktūrinis naršymas.

Valdomų metaduomenų naudojimo pranašumas yra tai daug greičiau, nei naudoti turinio užklausos sukurti svetainės naršymo duomenims nuskaityti. Nors daug greičiau, jei nėra jokios saugos trim rezultatus taip jei vartotojas neturi prieigos prie konkrečios svetainės, saitą ir toliau bus rodomi bet leis klaidos pranešimą.

Kaip įdiegti valdomas naršymas ir rezultatai   

Yra keli straipsniai "TechNet" svetainėje informacijos apie valdomąjį naršymą, pvz., pamatyti valdomo naršymo "SharePoint Server 2013" apžvalga.

Įgyvendinti valdomąjį naršymą, kurį turi būti terminų saugoti administratoriaus teises. Nustatę su URL, kurie atitinka svetainių rinkinio struktūrą, galima naudoti valdomo naršymo pakeisti struktūrinis naršymas. Pvz.:

Subsite1 ekrano pavyzdys

Toliau pateiktame pavyzdyje parodyta sudėtingas naršymo naudojant valdomo naršymo našumas.

SPRequestDuration pavyzdžio ekrano kopija

Nuosekliai naudoti valdomo naršymo pagerėja palyginti su turinio užklausos struktūrinis naršymas metodu.

Naudodami ieškos pagrįstų kliento scenarijus

Naudodami iešką, galite panaudoti indeksus, sukurtos naudojant nenutrūkstamo aptikimo fone. Tai reiškia, kad šiuo metu nėra dideles turinio užklausas. Ieškos rezultatuose yra įkelti iš ieškos indekso ir rezultatai yra saugos apkarpyti. Tai greičiau nei naudojant įprastą turinio užklausas. Naudodami iešką struktūrinis naršymas, ypač, jei turite sudėtinga svetainės struktūrą, paspartinti puslapių įkėlimo laiko gerokai. Pagrindinis privalumas tai per valdomąjį naršymą yra pasinaudoti apribojimui.

Šį metodą, reikia sukurti pasirinktinį puslapio šabloną ir pakeičia pasirinktinį HTML out of the box naršymo kodą. Atlikite šią procedūrą, Norėdami pakeisti failo seattle.html naršymo kodą.

Šiame pavyzdyje, bus atidaryti seattle.html failą ir pakeisti visą elementas id = "DeltaTopNavigation" su pasirinktinį HTML kodą.

Pavyzdys: Norėdami pakeisti out of the box naršymo kodą į puslapio šabloną

  1. Eikite į puslapį Svetainės parametrai .

  2. Atidarykite pagrindinio puslapio galerijoje spustelėkite Puslapių šablonai.

  3. Čia galite naršyti po bibliotekos ir Atsisiųskite failą seattle.master.

  4. Naudodami teksto rengyklę kodo redagavimas ir naikinimas kodą blokas šių ekrano nuotrauka.

    DeltaTopNavigation kodo, skirto panaikinti ekrano nuotrauka
  5. Pašalinti kodą tarp į < SharePoint:AjaxDelta id = "DeltaTopNavigation" > ir < \SharePoint:AjaxDelta > žymių ir jį pakeisti šiuos fragmentą:

    <div id="loading">
      <!--Replace with path to loading image.-->
      <div style="background-image: url(''); height: 22px; width: 22px; ">
      </div>
    </div>
    <!-- Main Content-->
    <div id="navContainer" style="display:none">
        <div data-bind="foreach: hierarchy" class="noindex ms-core-listMenu-horizontalBox">
            <a class="dynamic menu-item ms-core-listMenu-item ms-displayInline ms-navedit-linkNode" data-bind="attr: { href: item.Url, title: item.Title }">
                <span class="menu-item-text" data-bind="text: item.Title">
                </span>
            </a>
            <ul id="menu" data-bind="foreach: $data.children" style="padding-left:20px">
                <li class="static dynamic-children">
                    <a class="static dynamic-children menu-item ms-core-listMenu-item ms-displayInline ms-navedit-linkNode" data-bind="attr: { href: item.Url, title: item.Title }">
                        <span aria-haspopup="true" class="additional-background ms-navedit-flyoutArrow dynamic-children">
                            <span class="menu-item-text" data-bind="text: item.Title">
                            </span>
                        </span>
                    </a>
                    <ul id="menu" data-bind="foreach: children; visible: children.length>0" class="dynamic" >
                        <li class="dynamic">
                            <a class="dynamic menu-item ms-core-listMenu-item ms-displayInline ms-navedit-linkNode" data-bind="attr: { href: item.Url, title: item.Title }">
                                <span class="menu-item-text" data-bind="text: item.Title">
                                </span>
                            </a>
                        </li>
                    </ul>
                </li>
            </ul>
        </div>
    </div>
  6. Pakeiskite URL į nuotraukos žymę žymės pradžioje, su nuoroda į įkėlimo vaizdo svetainių rinkinyje. Atlikę keitimus, pervardyti failą ir įkelkite jį į pagrindinio puslapio galerijoje. Tai sukuria naują .šablonas failą.

  7. Šis HTML yra pagrindinės žymėjimą, kad bus užpildomi pagal ieškos rezultatuose, "JavaScript" kodą. Jums reikės redaguoti šį kodą, Norėdami pakeisti var root = “site collection URL reikšmę, kaip nurodyta toliau fragmentą:

    var root = “https://spperformance.sharepoint.com/sites/NavigationBySearch”;

    Visą failą JavaScript yra tokia:

    //Models and Namespaces
    var SPOCustom = SPOCustom || {};
    SPOCustom.Models = SPOCustom.Models || {}
    SPOCustom.Models.NavigationNode = function () {
    
        this.Url = ko.observable("");
        this.Title = ko.observable("");
        this.Parent = ko.observable("");
    
    };
    
    var root = "https://spperformance.sharepoint.com/sites/NavigationBySearch";
    var baseUrl = root + "/_api/search/query?querytext=";
    var query = baseUrl + "'contentClass=\"STS_Web\"+path:" + root + "'&trimduplicates=false&rowlimit=300";
    
    var baseRequest = {
        url: "",
        type: ""
    };
    
    
    //Parses a local object from JSON search result.
    function getNavigationFromDto(dto) {
        var item = new SPOCustom.Models.NavigationNode();
        if (dto != undefined) {
    
            var webTemplate = getSearchResultsValue(dto.Cells.results, 'WebTemplate');
    
            if (webTemplate != "APP") {
                item.Title(getSearchResultsValue(dto.Cells.results, 'Title')); //Key = Title
                item.Url(getSearchResultsValue(dto.Cells.results, 'Path')); //Key = Path
                item.Parent(getSearchResultsValue(dto.Cells.results, 'ParentLink')); //Key = ParentLink
            }
    
        }
        return item;
    }
    
    function getSearchResultsValue(results, key) {
    
        for (i = 0; i < results.length; i++) {
            if (results[i].Key == key) {
                return results[i].Value;
            }
        }
        return null;
    }
    
    //Parse a local object from the serialized cache.
    function getNavigationFromCache(dto) {
        var item = new SPOCustom.Models.NavigationNode();
    
        if (dto != undefined) {
    
            item.Title(dto.Title);
            item.Url(dto.Url);
            item.Parent(dto.Parent);
        }
    
        return item;
    }
    
    /* create a new OData request for JSON response */
    function getRequest(endpoint) {
        var request = baseRequest;
        request.type = "GET";
        request.url = endpoint;
        request.headers = { ACCEPT: "application/json;odata=verbose" };
        return request;
    };
    
    /* Navigation Module*/
    function NavigationViewModel() {
        "use strict";
        var self = this;
        self.nodes = ko.observableArray([]);
        self.hierarchy = ko.observableArray([]);;
        self.loadNavigatioNodes = function () {
            //Check local storage for cached navigation datasource.
            var fromStorage = localStorage["nodesCache"];
            if (false) {
                var cachedNodes = JSON.parse(localStorage["nodesCache"]);
    
                if (cachedNodes && timeStamp) {
                    //Check for cache expiration. Currently set to 3 hrs.
                    var now = new Date();
                    var diff = now.getTime() - timeStamp;
                    if (Math.round(diff / (1000 * 60 * 60)) < 3) {
    
                        //return from cache.
                        var cacheResults = [];
                        $.each(cachedNodes, function (i, item) {
                            var nodeitem = getNavigationFromCache(item, true);
                            cacheResults.push(nodeitem);
                        });
    
                        self.buildHierarchy(cacheResults);
                        self.toggleView();
                        addEventsToElements();
                        return;
                    }
                }
            }
            //No cache hit, REST call required.
            self.queryRemoteInterface();
        };
    
        //Executes a REST call and builds the navigation hierarchy.
        self.queryRemoteInterface = function () {
            var oDataRequest = getRequest(query);
            $.ajax(oDataRequest).done(function (data) {
                var results = [];
                $.each(data.d.query.PrimaryQueryResult.RelevantResults.Table.Rows.results, function (i, item) {
    
                    if (i == 0) {
                        //Add root element.
                        var rootItem = new SPOCustom.Models.NavigationNode();
                        rootItem.Title("Root");
                        rootItem.Url(root);
                        rootItem.Parent(null);
                        results.push(rootItem);
                    }
                    var navItem = getNavigationFromDto(item);
                    results.push(navItem);
                });
                //Add to local cache
                localStorage["nodesCache"] = ko.toJSON(results);
    
                localStorage["nodesCachedAt"] = new Date().getTime();
                self.nodes(results);
                if (self.nodes().length > 0) {
                    var unsortedArray = self.nodes();
                    var sortedArray = unsortedArray.sort(self.sortObjectsInArray);
    
                    self.buildHierarchy(sortedArray);
                    self.toggleView();
                    addEventsToElements();
                }
            }).fail(function () {
                //Handle error here!!
                $("#loading").hide();
                $("#error").show();
            });
        };
        self.toggleView = function () {
            var navContainer = document.getElementById("navContainer");
            ko.applyBindings(self, navContainer);
            $("#loading").hide();
            $("#navContainer").show();
    
        };
        //Uses linq.js to build the navigation tree.
        self.buildHierarchy = function (enumerable) {
            self.hierarchy(Enumerable.From(enumerable).ByHierarchy(function (d) {
                return d.Parent() == null;
            }, function (parent, child) {
                if (parent.Url() == null || child.Parent() == null)
                    return false;
                return parent.Url().toUpperCase() == child.Parent().toUpperCase();
            }).ToArray());
    
            self.sortChildren(self.hierarchy()[0]);
        };
    
    
        self.sortChildren = function (parent) {
    
            // sjip processing if no children
            if (!parent || !parent.children || parent.children.length === 0) {
                return;
            }
    
            parent.children = parent.children.sort(self.sortObjectsInArray2);
    
            for (var i = 0; i < parent.children.length; i++) {
                var elem = parent.children[i];
    
                if (elem.children && elem.children.length > 0) {
                    self.sortChildren(elem);
                }
            }
        };
    
        // ByHierarchy method breaks the sorting in chrome and firefix 
        // we need to resort  as ascending
        self.sortObjectsInArray2 = function (a, b) {
            if (a.item.Title() > b.item.Title())
                return 1;
            if (a.item.Title() < b.item.Title())
                return -1;
            return 0;
        };
    
    
        self.sortObjectsInArray = function (a, b) {
            if (a.Title() > b.Title())
                return -1;
            if (a.Title() < b.Title())
                return 1;
            return 0;
        }
    }
    
    //Loads the navigation on load and binds the event handlers for mouse interaction.
    function InitCustomNav() {
        var viewModel = new NavigationViewModel();
        viewModel.loadNavigatioNodes();
    }
    
    function addEventsToElements() {
        //events.
        $("li.dynamic-children").mouseover(function () {
            var position = $(this).position();
            $(this).find("ul").css({ width: 125, left: position.left + 10, top: 50 });
    
        })
            .mouseout(function () {
                $(this).find("ul").css({ width: 0, left: -99999, top: 0 });
            });
    }
    
    _spBodyOnLoadFunctionNames.push("InitCustomNav");
    

    Apibendrinimas kodas rodomas virš jQuery $(document).ready funkcijoje yra viewModel objektas, sukurtas ir tada loadNavigationNodes() veikia tas objektas yra vadinamas. Ši funkcija arba įkelia anksčiau sukurtas naršymo hierarchijoje, saugomi HTML5 vietos saugykloje kliento naršyklės arba reikia funkcija queryRemoteInterface().

    QueryRemoteInterface() sukuria naudojant funkciją getRequest() su apibrėžiamas scenarijų parametro užklausą ir tada pateikia duomenis iš serverio. Šie duomenys yra iš esmės masyvo visų svetainių svetainių rinkinyje, išreikštas duomenų perdavimo objektų su įvairiais parametrais. Šie duomenys yra tada patikrintas į anksčiau apibrėžtus SPO.Models.NavigationNode objektus, kurie Knockout.js pasinaudoti kurdami stebimų ypatybės, kuris bus naudojamas duomenų surišimo reikšmes į HTML, anksčiau apibrėžtą. Objektus, tada yra įdėti į rezultatų masyvą. Šiame masyve yra patikrintas, į nokautas naudojant JSON ir saugomi vietinės naršyklės saugyklą, kad pagerėjęs našumas apie būsimus puslapio.

  8. Tada rezultatai priskiriamos self.nodes masyvo ir hierarchijos kuriama iš naudojant linq.js priskirti išvestyje yra masyvo self.heirarchyobjektus. Šis masyvas objektą, kuris yra susieta su HTML. Tai daroma toggleView() funkcijoje einanti savarankiškai objekto ko.applyBinding() funkcijos. Tada dėl hierarchijos masyvo laikytis šių HTML:

    <div data-bind=”foreach: hierarchy” class=”noindex ms-core-listMenu-horizontalBox”>

    Be to, įvykių apdorojimo programos mouseenter ir mouseexit yra įtraukiami į aukščiausio lygio naršymo, antrinės svetainės meniu tvarkyti daroma addEventsToElements() funkcija.

    Naršymo srities rezultatų matyti ekrano nuotrauka žemiau:

    Naršymo rezultatų ekrano kopija

    Pateiktame pavyzdyje sudėtingas naršymo šviežiu puslapio apkrova be vietos talpinimo rodomas laikas, praleistas serveryje buvo sumažinti iš etaloninių struktūrinis naršymas, norint gauti panašius rezultatus kaip valdomąjį naršymą būdo.

    Ekrano nuotrauka SPRequestDuration 301

    Itin naudingi, šis metodas yra, naudojant HTML5 vietinę saugyklą, naršymo saugoma vartotojo kitą kartą jos įkelti puslapį.

Gauname pagrindinių efektyvumo patobulinimai naudojant ieškos API struktūrinis naršymas; Tačiau reikia atlikti keli techninės galimybę vykdyti ir pritaikyti šią funkciją. Vykdant pavyzdys svetainių išdėstomi taip pat kaip out of the box struktūrinis naršymas; abėcėlės tvarka. Jei norite, kad skirtis nuo šia tvarka, būtų sudėtingiau kurti ir tvarkyti. Be to, šio būdo reikia skirtis iš palaikomų puslapių šablonai. Jei neišlaikoma pasirinktinį puslapio šabloną, jūsų svetainė bus praleisti ant naujinimų ir patobulinimų, kad "Microsoft" atlieka puslapių šablonai.

Šį kodą turi šias priklausomybes:

Dabartinė versija LinqJS nėra ByHierarchy metodo šį kodą ir bus suskirstyti į naršymo kodą. Norėdami išspręsti šią problemą, įtraukti šį metodą Linq.js failą prieš eilutę "priploti: funkcija ()".

ByHierarchy: function(firstLevel, connectBy, orderBy, ascending, parent) {
     ascending = ascending == undefined ? true : ascending;
     var orderMethod = ascending == true ? 'OrderBy' : 'OrderByDescending';
     var source = this;
     firstLevel = Utils.CreateLambda(firstLevel);
     connectBy = Utils.CreateLambda(connectBy);
     orderBy = Utils.CreateLambda(orderBy);
    
     //Initiate or increase level
     var level = parent === undefined ? 1 : parent.level + 1;

    return new Enumerable(function() {
         var enumerator;
         var index = 0;

        var createLevel = function() {
                 var obj = {
                     item: enumerator.Current(),
                     level : level
                 };
                 obj.children = Enumerable.From(source).ByHierarchy(firstLevel, connectBy, orderBy, ascending, obj);
                 if (orderBy !== undefined) {
                     obj.children = obj.children[orderMethod](function(d) {
                         return orderBy(d.item); //unwrap the actual item for sort to work
                     });
                 }
                 obj.children = obj.children.ToArray();
                 Enumerable.From(obj.children).ForEach(function(child) {
                     child.getParent = function() {
                         return obj;
                     };
                 });
                 return obj;
             };

        return new IEnumerator(

        function() {
             enumerator = source.GetEnumerator();
         }, function() {
             while (enumerator.MoveNext()) {
                 var returnArr;
                 if (!parent) {
                     if (firstLevel(enumerator.Current(), index++)) {
                         return this.Yield(createLevel());
                     }

                } else {
                     if (connectBy(parent.item, enumerator.Current(), index++)) {
                         return this.Yield(createLevel());
                     }
                 }
             }
             return false;
         }, function() {
             Utils.Dispose(enumerator);
         })
     });
 },

Pastaba : Mašininio vertimo atsakomybės atsisakymas: Šis straipsnis išverstas naudojant kompiuterinę sistemą be žmogaus įsikišimo. „Microsoft“ pateikia šiuos mašininius vertimus norėdama padėti anglų kalbos nesuprantantiems vartotojams perskaityti turinį apie „Microsoft“ produktus, paslaugas ir technologijas. Šis straipsnis išverstas mašininio vertimo būdu, todėl jame gali būti žodyno, sintaksės ar gramatikos klaidų.

Tobulinkite savo įgūdžius
Ieškoti mokymo
Pirmiausia gaukite naujų funkcijų
Prisijunkite prie „Office Insider“ dalyvių

Ar ši informacija buvo naudinga?

Dėkojame už jūsų atsiliepimus!

Dėkojame už jūsų atsiliepimą! Panašu, kad gali būti naudinga jus sujungti su vienu iš mūsų „Office“ palaikymo agentų.

×