рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде SharePoint 2013 рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВ

рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдореИрдВрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рднреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдерд╛ред

рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдкрдХреЛ SharePoint 2013 рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреИрд╕реЗ рдорджрдж рдХрд░рддрд╛ рд╣реИред SharePoint 2013 рдореЗрдВ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рд╡рд┐рдХрд╛рд╕ рдХреНрд╖рдорддрд╛рдУрдВ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рди рдХреЗрд╡рд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЙрдкрд▓рдмреНрдз рдПрдкреАрдЖрдИ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдХреЗ рд╡рд┐рддрд░рдг рдФрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рддрдВрддреНрд░ рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, SharePoint 2013 рдХреА рдХрдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╕реНрд╡рдпрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


SharePoint 2013 рдХреНрд▓рд╛рдЗрдВрдЯ рдкрдХреНрд╖ рдкрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ API рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ: рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ (CSOM) рдФрд░ REST APIред REST API рдЖрдкрдХреЛ REST (OData) рд╡реЗрдм рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред CSOM рдЙрди рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИ, рдЬреЛ рд╢рдмреНрджрд╛рд░реНрде рд╕рд░реНрд╡рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЗ рд╕рдорд╛рди рд╣реИрдВред CSOM рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ (рдЬрд┐рд╕реЗ JSOM - JavaScript рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ .NET рдХреЗ рд▓рд┐рдПред рд▓реЗрдХрд┐рди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, .NET рдХреЗ рд╡рд┐рдкрд░реАрдд, рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдФрд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рд▓реЗрдЦ рдареАрдХ JSOM рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдЧрд╛ред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдкрдХреЛ JSOM рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рд╕реНрдерд┐рд░ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдФрд░ рд╕реВрдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, SharePoint 2013 рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред

рдореБрдЭреЗ рдФрд░ рдЖрдВрджреНрд░реЗрдИ рдорд╛рд░реНрдХреЗрд╡ рдиреЗ рдПрдХ рдХреЛрдбрдкреНрд▓реЗрдХреНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд┐рд╕рдореЗрдВ рд╣рдордиреЗ рдЯрд╛рдЗрдк 2013 рдХреА рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рдФрд░ SharePoint 2013 рдХреЗ рд▓рд┐рдП рдирдореВрдирд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдмрдирд╛рдпрд╛ред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓рд┐рдВрдХ http://sptypescript.codeplex.com/ рд╣реИ

рдЖрд╡реЗрджрди рдЙрджрд╛рд╣рд░рдг

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдРрд╕рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рдЖрдкрдХреЛ рдХрд╛рд░реНрдпрд╕реНрдерд▓ рдкрд░ рд╕рдордп рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред



рдЯреНрд░реЗрдирд┐рдВрдЧ

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП:


рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рддрддреНрд╡реЛрдВ рдХреЛ .csproj рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

<PropertyGroup> <TypeScriptTarget>ES3</TypeScriptTarget> <TypeScriptIncludeComments>true</TypeScriptIncludeComments> <TypeScriptSourceMap>true</TypeScriptSourceMap> </PropertyGroup> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" /> 


рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ

рдПрдХреНрд╕рдЯреЗрдВрд╢рди koLite рдХреЗ рд╕рд╛рде рдиреЙрдХрдЖрдЙрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд NuGet рд╕рдВрдХреБрд▓ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


рдкрд┐рдЫрд▓реЗ рддреАрди рдкреИрдХреЗрдЬ .d.ts рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ рдЬреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ JSOM рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ SharePoint.d.ts рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред NuGet рдкреИрдХреЗрдЬ рдЬрд▓реНрдж рд╣реА рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред

рдорд╛рдВрдЧ рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
SP.SOD рд╡рд░реНрдЧ рдореЗрдВ SharePoint рдХреА рдЕрдкрдиреА рдСрди-рдбрд┐рдорд╛рдВрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдбрд░ рд╣реИред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЖрд╡реЗрджрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдбрд░ рдХреЛрдб:

 ///<reference path="typings/SharePoint.d.ts" /> ///<reference path="typings/jquery/jquery.d.ts" /> ///<reference path="typings/knockout/knockout.d.ts" /> /// <reference path="ViewModel.ts" /> $(() => { SP.SOD.registerSod('ViewModels', _spPageContextInfo.webServerRelativeUrl + '/Scripts/ViewModel.js'); SP.SOD.registerSodDep('ViewModels', 'sp.js'); SP.SOD.executeFunc('ViewModels', null, () => { var vm = new ViewModels.Model(SP.ClientContext.get_current()); ko.applyBindings(vm); }); }); 


рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреЗрдЬ рд▓реЗрдЖрдЙрдЯ:

 <div> <p data-bind="text:message"></p> <button data-bind="text:buttonText, command: checkInOut, visible:isLoaded" style="display:none;"/> </div> 


рдХреЛрд▓рд╛рдЗрдЯ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред

рджреЗрдЦреЗрдВ рдореЙрдбрд▓ рдХреЛрдб:

 module ViewModels { export class Model { constructor(public context: SP.ClientContext) { this.isLoaded = ko.observable(false); this.message = ko.observable(''); this.buttonText = ko.observable(''); this.checkInOut = ko.asyncCommand({ canExecute: (isExecuting) => !isExecuting && this.isLoaded(), execute: this.executeCheckInOut }); this.init(); } public message: KnockoutObservableString; public buttonText: KnockoutObservableString; public checkInOut: KoliteCommand; public isLoaded: KnockoutObservableBool; //... } } 


рд╕рднреА рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ .d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдВрдХрд▓рди рдкрд░ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ
JSOM, рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдкрд░, SP.ClientContext.executeQueryAsync рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рд╕рд░реНрд╡рд░ рдХреЛ рднреЗрдЬреА рдЧрдИ рдЖрджреЗрд╢реЛрдВ рдХреА рдПрдХ рдХрддрд╛рд░ рдмрдирд╛рддрд╛ рд╣реИред executeQueryAsync рджреЛ рдХреЙрд▓рдмреИрдХ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдкрд╣рд▓реЗ рдХреЛ рд╕рдлрд▓рддрд╛ рдкрд░, рджреВрд╕рд░реЗ рдХреЛ рдЕрд╕рдлрд▓рддрд╛ рдкрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ, рдпрд╣ рдкреЙрдЗрдВрдЯрд░ рдирд┐рд╖реНрдкрд╛рджрдирдпреЛрдЧреНрдп рдХреЙрд▓ рдХреЗ рдЕрдВрджрд░ рдЦрд░рд╛рдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ , рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдХреЙрд▓рдмреИрдХ рдХреЛ рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЯреАрдПрд╕ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдЙрд╕ рдХреЛрдб рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддрд╛ рд╣реИред

 private init() { this.list = this.context.get_web().get_lists().getByTitle('Log'); var items = this.list.getItems(SP.CamlQuery.createAllItemsQuery()); this.context.load(items); this.context.executeQueryAsync( () => { this.processItems(items); this.setData(); this.isLoaded(true); }, (sender, args) => alert(args.get_message())); }; 

JSOM рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд╡реЗрд░реА рд╕рд░рдгреА рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдЬреЛ IEnumerable рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рд╕рд░рдгреА рд╡рд╕реНрддреБ рдХреЗ рдЕрдВрджрд░ рдирд┐рд╣рд┐рдд рд╣реИред рдпрд╣ рд╕рдм рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд░реНрд╡рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╕рднреА рд╕рдВрдЧреНрд░рд╣реЛрдВ рдХреЛ рддреНрд░рд┐рдХреЛрдгреАрдп рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреИрдЯрд░реНрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред IEnumerable рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП .NET рдХреЛрдб рдХреЗ рд╕рд╛рде рдпрд╣ 100% рдЕрдиреБрдкрд╛рд▓рди рд╣реИред

рдХреНрд╡реЗрд░реА рдкрд░рд┐рдгрд╛рдо рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛:

 private processItems(items: SP.ListItemCollection) { this.hoursSubmitted = 0; var enumerator = items.getEnumerator(); while (enumerator.moveNext()) { var item = <SP.ListItem>enumerator.get_current(); var author = <SP.FieldUserValue>item.get_item('Author'); //Filter by current user if (author.get_lookupId() == _spPageContextInfo.userId) { var dateCompleted = item.get_item('DateCompleted'); if (dateCompleted) { this.hoursSubmitted += item.get_item('DurationInHours'); } else { this.curentItem = item; } } } } 

рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рд╕реЗ рдпрд╣ рднреА рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдк рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХреИрд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдСрдкрд░реЗрд╢рди рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╕рд╣реА рд╣реИрдВред

рдХрдорд╛рдВрдб рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ
рдореЙрдбрд▓ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдХ рдЪреЗрдХ-рдЗрди рдпрд╛ рдЪреЗрдХ-рдЖрдЙрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 private executeCheckInOut(complete: () => void ) { if (this.curentItem) { this.checkOut(complete); } else { this.checkIn(complete); } }; 


рдЪреЗрдХ-рдЗрди рдСрдкрд░реЗрд╢рди рдкреВрд░рд╛ рд╕рдордп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛, SharePoint рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдирдпрд╛ рдЖрдЗрдЯрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред

 private checkIn(complete: () => void ) { var item = this.list.addItem(new SP.ListItemCreationInformation()); item.set_item('StartDate', new Date()); item.update(); this.context.executeQueryAsync( () => { this.curentItem = item; this.setData(); complete(); }, (sender, args) => { alert(args.get_message()); complete(); }); } 


рд╡рд┐рдкрд░реАрдд рдСрдкрд░реЗрд╢рди, рдЪреЗрдХ-рдЖрдЙрдЯ, рд╕рдордп рдФрд░ рдЕрд╡рдзрд┐ рдХреЛ рдШрдВрдЯреЛрдВ рдореЗрдВ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред

 private checkOut(complete: () => void ) { var startedDate = <Date>this.curentItem.get_item('StartDate'); var dateCompleted = new Date(); var hours = (dateCompleted.getTime() - startedDate.getTime()) / (1000 * 60 * 60); this.curentItem.set_item('DateCompleted', dateCompleted); this.curentItem.set_item('DurationInHours', hours); this.curentItem.update(); this.context.executeQueryAsync( () => { this.curentItem = null; this.hoursSubmitted += hours; this.setData(); complete(); }, (sender, args) => { alert(args.get_message()); complete(); }); } 

рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдПрдХ рд╣реА "рдкреИрдЯрд░реНрди" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдПрдХ рдкреИрдХреЗрдЬ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╕рдлрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдмрд╛рдж, рдореЙрдбрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред

рдирд┐рд╖реНрдХрд░реНрд╖


рдЖрдк рд▓рд┐рдВрдХ рд╕реЗ рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рдФрд░ SharePoint ( рд╕реНрд░реЛрдд рдХреЛрдб ) рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рднреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рдЖрдкрдХреЛ рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рдорд┐рд▓реЗрдВрдЧреАред

рд╡реИрд╕реЗ, рдирдореВрдирд╛ рдХреЛрдб рд╕реНрд╡рдпрдВ SharePoint 2010 рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдПрдХ рдЕрдиреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╕рдорд╛рдзрд╛рди рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдПрдХ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рддреИрдирд╛рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВред

рдФрд░ рдЕрдЧрд▓реА рдмрд╛рд░ рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЖрдк SharePoint 2013 рдореЗрдВ рдлрд╝реЙрд░реНрдо рдФрд░ рд╕реВрдЪреА рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдХреИрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рднреАред

Source: https://habr.com/ru/post/In174099/


All Articles