рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди 7 рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рд╕реЗ рдЖрдЦрд┐рд░ рддрдХ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВред рднрд╛рдЧ 14. рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреА рдорд╛рдиреНрдпрддрд╛

рдкрд┐рдЫрд▓рд╛ рд╣рд┐рд╕реНрд╕рд╛

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

рдЗрд╕ рднрд╛рдЧ рдореЗрдВ рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ:

рдорд╛рдиреНрдпрддрд╛


рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдЙрди рдбреЗрдЯрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рджреЛ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╣реИрдВ рдЬрд┐рдирд╕реЗ рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдХреЛ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрди рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рд╕рд╛рде, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдЕрднреА рднреА рдЙрди рдореВрд▓реНрдпреЛрдВ рдХреЛ рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╕реНрд╡рд░реВрдкрд┐рдд рдпрд╛ рдЕрдиреНрдп рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЕрдорд╛рдиреНрдп рд╣реИрдВред

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

рдирд┐рдореНрди рдХреЛрдб Fillup рд╡рд░реНрдЧ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд╕рд░рд▓ рд╕рддреНрдпрд╛рдкрди рд╡рд┐рдзрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
public IEnumerable < string > Validate() { if (OdometerReading <= 0) yield return "The odometer value must be greater than zero." ; if (DistanceDriven <= 0) yield return "The odometer value must be greater than the previous value." ; if (FuelQuantity <= 0) yield return "The fuel quantity must be greater than zero." ; if (PricePerFuelUnit <= 0) yield return "The fuel price must be greater than zero." ; } * This source code was highlighted with Source Code Highlighter .
  1. public IEnumerable < string > Validate() { if (OdometerReading <= 0) yield return "The odometer value must be greater than zero." ; if (DistanceDriven <= 0) yield return "The odometer value must be greater than the previous value." ; if (FuelQuantity <= 0) yield return "The fuel quantity must be greater than zero." ; if (PricePerFuelUnit <= 0) yield return "The fuel price must be greater than zero." ; } * This source code was highlighted with Source Code Highlighter .
  2. public IEnumerable < string > Validate() { if (OdometerReading <= 0) yield return "The odometer value must be greater than zero." ; if (DistanceDriven <= 0) yield return "The odometer value must be greater than the previous value." ; if (FuelQuantity <= 0) yield return "The fuel quantity must be greater than zero." ; if (PricePerFuelUnit <= 0) yield return "The fuel price must be greater than zero." ; } * This source code was highlighted with Source Code Highlighter .
  3. public IEnumerable < string > Validate() { if (OdometerReading <= 0) yield return "The odometer value must be greater than zero." ; if (DistanceDriven <= 0) yield return "The odometer value must be greater than the previous value." ; if (FuelQuantity <= 0) yield return "The fuel quantity must be greater than zero." ; if (PricePerFuelUnit <= 0) yield return "The fuel price must be greater than zero." ; } * This source code was highlighted with Source Code Highlighter .
  4. public IEnumerable < string > Validate() { if (OdometerReading <= 0) yield return "The odometer value must be greater than zero." ; if (DistanceDriven <= 0) yield return "The odometer value must be greater than the previous value." ; if (FuelQuantity <= 0) yield return "The fuel quantity must be greater than zero." ; if (PricePerFuelUnit <= 0) yield return "The fuel price must be greater than zero." ; } * This source code was highlighted with Source Code Highlighter .
  5. public IEnumerable < string > Validate() { if (OdometerReading <= 0) yield return "The odometer value must be greater than zero." ; if (DistanceDriven <= 0) yield return "The odometer value must be greater than the previous value." ; if (FuelQuantity <= 0) yield return "The fuel quantity must be greater than zero." ; if (PricePerFuelUnit <= 0) yield return "The fuel price must be greater than zero." ; } * This source code was highlighted with Source Code Highlighter .
  6. public IEnumerable < string > Validate() { if (OdometerReading <= 0) yield return "The odometer value must be greater than zero." ; if (DistanceDriven <= 0) yield return "The odometer value must be greater than the previous value." ; if (FuelQuantity <= 0) yield return "The fuel quantity must be greater than zero." ; if (PricePerFuelUnit <= 0) yield return "The fuel price must be greater than zero." ; } * This source code was highlighted with Source Code Highlighter .
  7. public IEnumerable < string > Validate() { if (OdometerReading <= 0) yield return "The odometer value must be greater than zero." ; if (DistanceDriven <= 0) yield return "The odometer value must be greater than the previous value." ; if (FuelQuantity <= 0) yield return "The fuel quantity must be greater than zero." ; if (PricePerFuelUnit <= 0) yield return "The fuel price must be greater than zero." ; } * This source code was highlighted with Source Code Highlighter .
  8. public IEnumerable < string > Validate() { if (OdometerReading <= 0) yield return "The odometer value must be greater than zero." ; if (DistanceDriven <= 0) yield return "The odometer value must be greater than the previous value." ; if (FuelQuantity <= 0) yield return "The fuel quantity must be greater than zero." ; if (PricePerFuelUnit <= 0) yield return "The fuel price must be greater than zero." ; } * This source code was highlighted with Source Code Highlighter .
  9. public IEnumerable < string > Validate() { if (OdometerReading <= 0) yield return "The odometer value must be greater than zero." ; if (DistanceDriven <= 0) yield return "The odometer value must be greater than the previous value." ; if (FuelQuantity <= 0) yield return "The fuel quantity must be greater than zero." ; if (PricePerFuelUnit <= 0) yield return "The fuel price must be greater than zero." ; } * This source code was highlighted with Source Code Highlighter .
  10. public IEnumerable < string > Validate() { if (OdometerReading <= 0) yield return "The odometer value must be greater than zero." ; if (DistanceDriven <= 0) yield return "The odometer value must be greater than the previous value." ; if (FuelQuantity <= 0) yield return "The fuel quantity must be greater than zero." ; if (PricePerFuelUnit <= 0) yield return "The fuel price must be greater than zero." ; } * This source code was highlighted with Source Code Highlighter .
  11. public IEnumerable < string > Validate() { if (OdometerReading <= 0) yield return "The odometer value must be greater than zero." ; if (DistanceDriven <= 0) yield return "The odometer value must be greater than the previous value." ; if (FuelQuantity <= 0) yield return "The fuel quantity must be greater than zero." ; if (PricePerFuelUnit <= 0) yield return "The fuel price must be greater than zero." ; } * This source code was highlighted with Source Code Highlighter .
public IEnumerable < string > Validate() { if (OdometerReading <= 0) yield return "The odometer value must be greater than zero." ; if (DistanceDriven <= 0) yield return "The odometer value must be greater than the previous value." ; if (FuelQuantity <= 0) yield return "The fuel quantity must be greater than zero." ; if (PricePerFuelUnit <= 0) yield return "The fuel price must be greater than zero." ; } * This source code was highlighted with Source Code Highlighter .

рдирд┐рдореНрди рдЫрд╡рд┐ рдПрдХ рд╕рдВрджреЗрд╢ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддреА рд╣реИ рдЬреЛ рддрдм рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬрдм рдЖрдк рд╕рд╣реЗрдЬреЗрдВ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдУрдбреЛрдореАрдЯрд░ рд░реАрдбрд┐рдВрдЧ рдкрд┐рдЫрд▓реЗ рдореВрд▓реНрдп рд╕реЗ рдХрдо рд╣реЛрддреА рд╣реИред

рдЫрд╡рд┐

рдпрд╣ рдХреЛрдб рдХреЗрд╡рд▓ рдлрд┐рд▓рдЕрдк рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рдЕрд╡реИрдз рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджреЗрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рднреА рдЪреЗрдХ рдХрд┐рдП рдЧрдП рдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдЖрд░рдВрднреАрдХрд░рдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдкрд┐рдЫрд▓реЗ рдУрдбреЛрдореАрдЯрд░ рдкрдврд╝рдиреЗ рдХреЗ рд╕рд╛рде Fillup.OdometerReading рдорд╛рди рдХреА рддреБрд▓рдирд╛ рдХрд░рдХреЗ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд░реНрддрдорд╛рди рдлрд╝рд┐рд▓рдЕрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдорд╛рди рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреНрд░рд┐рдпрд╛ CarDataStore.SaveFillup рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЯреБрдХрдбрд╝рд╛ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
  1. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ SaveResult SaveFillup (Fillup рдлрд┐рд▓рдЕрдк, рдПрдХреНрд╢рди рддреНрд░реБрдЯрд┐ рдХреЙрд▓рдмреИрдХ)
  2. {
  3. var рдЕрдВрддрд┐рдо рдЙрддреНрддрд░ =
  4. рдХрд╛рд░.рдлрд┐рд▓реБрдкрд╣рд┐рд╕реНрдЯреНрд░рд┐рдХреНрд╕ .рд╛рдЙрдВрдЯ> 0?
  5. рдХрд╛рд░.рдлрд┐рд▓рдЕрдкрд╣рд┐рд╕реНрдЯрд╛рд░ред рдлрд╝рд░реНрд╕реНрдЯ ()ред рдУрдбреЛрдореАрдЯрд░ рд░реАрдбрд┐рдВрдЧ:
  6. Car.InitialOdometerReading;
  7. fillup.DistanceDriven = fillup.OdometerReading - lastReading;
  8. var saveResult = new SaveResult ();
  9. var validationResults = fillup.Validate ();
  10. рдЕрдЧрд░ (рд╕рддреНрдпрд╛рдкрдиред рд╡рдпрд╕реНрдХ .рд╛рдЙрдВрдЯ) ()> 0)
  11. {
  12. saveResult.SaveSuccessful = false ;
  13. saveResult.ErrorMessages = validationResults;
  14. }
  15. рдЕрдиреНрдпрдерд╛
  16. {
  17. рдХрд╛рд░.рдлрд┐рд▓реБрдкрд╣рд┐рд╕реНрдЯреНрд░реА.рдЗрдВрдЯрд░ (0, рдлрд┐рд▓рдЕрдк);
  18. saveResult.SaveSuccessful = true ;
  19. рд╕реЗрд╡рдХрд░ ( рдкреНрд░рддрд┐рдирд┐рдзрд┐ )
  20. saveResult.SaveSuccessful = false ;
  21. errorCallback (); });
  22. }
  23. saveResult;
  24. }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

CarDataStore.SaveFillup рдкрджреНрдзрддрд┐ рдмрдЪрдд рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рд┐рд▓рдЕрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреНрд╢рди рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ рд╡рд░реНрддрдорд╛рди рдУрдбреЛрдореАрдЯрд░ рд░реАрдбрд┐рдВрдЧ рд╕реЗ рдкрд┐рдЫрд▓реЗ рд░реАрдбрд┐рдВрдЧ рдХреЛ рдШрдЯрд╛рдХрд░ рдФрд░ рдлрд┐рд▓рдЕрдк рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЬрдорд╛ рдХрд░рдХреЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рдбрд┐рдЯреЗрдВрд╕ рдбрд╛рдпрд░рд┐рдпрди рдкреНрд░реЙрдкрд░реНрдЯреА рдореЗрдВ рддрд╛рдХрд┐ рджреВрдз рдХреА рдЬрд╛рдВрдЪ рдЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдХреА рдЬрд╛ рд╕рдХреЗред рдЗрд╕рдХреЗ рдмрд╛рдж, SaveFillup рдкрджреНрдзрддрд┐ Fillup.Validate рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ SaveResult рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рд╕рд╣реЗрдЬрддреА рд╣реИ, рдЬрд┐рд╕реЗ рд╡рд╣ рдХреЙрд▓рд┐рдВрдЧ рд╡рд┐рдзрд┐ рдкрд░ рд╡рд╛рдкрд╕ рд▓рд╛рддреА рд╣реИ ред рдпрджрд┐ рд╕рддреНрдпрд╛рдкрди рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ, рддреЛ SaveFillup рд╡рд┐рдзрд┐ рдИрдВрдзрди рднрд░рдиреЗ рдФрд░ рд╡рд╛рд╣рди рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, SaveFillup рд╡рд┐рдзрд┐ рдПрдХ SaveResult рдСрдмреНрдЬреЗрдХреНрдЯ рджреЗрддрд╛ рд╣реИред

рдиреЛрдЯ:
рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдХреЗ рд▓рд┐рдП рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдмрд╛рдзреНрдпрдХрд╛рд░реА-рд╕рдХреНрд╖рдо рд╕рддреНрдпрд╛рдкрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред ValidatesOnException рд╕рдВрдкрддреНрддрд┐ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдг рд╕рдВрд╕реНрдХрд░рдг рд╕рддреНрдпрд╛рдкрди рдкреИрдЯрд░реНрди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╕рддреНрдпрд╛рдкрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИред

рдирд┐рдореНрди рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдИрдВрдзрди рднрд░рдиреЗ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреГрд╖реНрда рдкрд░ "рд╕рд╣реЗрдЬреЗрдВ" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред
  1. рдирд┐рдЬреА рд╢реВрдиреНрдп SaveButton_Click ( рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЗрд╖рдХ, EventArgs e)
  2. {
  3. рдХрдореЗрдЯрдмреЙрдХреНрд╕ ();
  4. SaveResult рдкрд░рд┐рдгрд╛рдо = CarDataStore.SaveFillup (currentFillup,
  5. рдкреНрд░рддрд┐рдирд┐рдзрд┐ {
  6. MessageBox.Show ( "рдЖрдкрдХреЗ рдлреЛрди рдкрд░" + рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдерд╛рди рдирд╣реАрдВ рд╣реИ
  7. "рдЕрдкрдирд╛ рднрд░рдиреЗ рдХрд╛ рдбреЗрдЯрд╛ рд╕рд╣реЗрдЬреЗрдВред рдХреБрдЫ рдЬрдЧрд╣ рдЦрд╛рд▓реА рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред" ред
  8. "рдЪреЗрддрд╛рд╡рдиреА" , MessageBoxButton.OK);
  9. });
  10. рдпрджрд┐ (рдкрд░рд┐рдгрд╛рдоред рдЕрд╕рдлрд▓)
  11. {
  12. Microsoft.Phone.Shell.PhoneApplicationService.Current
  13. .State [ "FillupSaved" ] = true ;
  14. cacheChanges = false ;
  15. NavigationService.GoBack ();
  16. }
  17. рдЕрдиреНрдпрдерд╛
  18. {
  19. string errorMessages = рд╕реНрдЯреНрд░рд┐рдВрдЧред рдЬреЙрдЗрди (
  20. рдкрд░реНрдпрд╛рд╡рд░рдгред рдкрд░реНрдпрд╛рд╡рд░рдг + рдкрд░реНрдпрд╛рд╡рд░рдгред
  21. result.ErrorMessages.ToArray ());
  22. рдЕрдЧрд░ ( рд╕реНрдЯреНрд░рд┐рдВрдЧ .IsNullOrEmpty (errorMessages))
  23. {
  24. MessageBox.Show (errorMessages,
  25. "рдЪреЗрддрд╛рд╡рдиреА: рдЕрдорд╛рдиреНрдп рдорд╛рди" , MessageBoxButton.OK);
  26. }
  27. }
  28. }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдпрд╣ рдХреЛрдб SaveFillup рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рдХреЙрд▓рдмреИрдХ рддреНрд░реБрдЯрд┐ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИред рдпрд╣ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗрд╡рд▓ рд╕рдВрджреЗрд╢ рдмреЙрдХреНрд╕ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рддрдм рд╡рд┐рдзрд┐ рдЬрд╛рдВрдЪрддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕рддреНрдпрд╛рдкрди рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ, рддреЛ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрджреЗрд╢ рдмреЙрдХреНрд╕ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рд╕рд╣реЗрдЬрдирд╛ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ SaveButton_Click рд╡рд┐рдзрд┐ рдПрдХ рдорд╛рди рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди-рд╕реНрддрд░ рд╕реНрдерд┐рддрд┐ рдбрд┐рдХреНрд╢рдирд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ рдЬреЛ рдпрд╣ рд╕рдВрдХреЗрдд рджреЗрддреА рд╣реИ рдХрд┐ рдирдИ рдИрдВрдзрди рднрд░рдиреЗ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЕрднреА рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд┐рдзрд┐ рдлрд┐рд░ рд╡рд╛рдкрд╕ рдХреВрдж рдЬрд╛рддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рдХреИрд╢рд┐рдВрдЧ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдзреНрд╡рдЬ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЦрдВрдб "рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛" рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред рдЯреНрд░рд╛рдВрдЬрд╝рд┐рд╢рди рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдЧрд░ рд╕рд╛рд░рд╛рдВрд╢ рдХрд╛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдореВрд▓реНрдп рд░рд╛рдЬреНрдп рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ, рддреЛ рдкреГрд╖реНрда рд╕рд╛рд░рд╛рдВрд╢ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдкрд╣рд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддреБрд░рдВрдд рдИрдВрдзрди рднрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХреЗред рдЕрдиреНрдпрдерд╛, рд╕рд╛рд░рд╛рдВрд╢рдкреЗрдЬ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдлрд┐рд▓реБрдкрдкреЗрдЬ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рд╛рд░рд╛рдВрд╢ рдЖрдЗрдЯрдо рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдХреЗрд╡рд▓ рдПрдХ рд╕рддреНрдпрд╛рдкрди рд╡рд┐рдзрд┐ рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдФрд░ рднреА рдХрдИ рд╣реИрдВред

рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдкрд░ рд╕рд╣реЗрдЬреЗ рди рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ


рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдмреИрдХ рдмрдЯрди рджрдмрд╛рдиреЗ рд╕реЗ рд╡рд╛рдкрд╕ рдХреВрджрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдмрд┐рдирд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рдбреЗрдЯрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдкреГрд╖реНрда рд╣реИ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмреИрдХ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк PhoneApplicationPage.OnBackKeyPress рдкрджреНрдзрддрд┐ рдХреЛ рдЕрдзрд┐рднрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рд╣реЗрдЬреЗ рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрднрд╡рддрдГ рд╕рдВрдХреНрд░рдордг рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

рдЗрд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдХреНрд░рдордг рдХреЛ рдкреВрд░реНрд╡рд╡рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП OnBackKeyPress overload рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреИрдХ рдмрдЯрди рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдмреИрдХрд╡рд░реНрдб рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЖрд╡рд╢реНрдпрдХ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдбреЗрдЯрд╛ рд╣рдЯрд╛рдиреЗ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ред
рдлреНрдпреВрд▓ рдЯреНрд░реИрдХрд░ рдореЗрдВ рдбреЗрдЯрд╛ рдПрдВрдЯреНрд░реА рдХреЗ рд▓рд┐рдП рджреЛ рдкреЗрдЬ рд╣реИрдВ: CarDetailsPage рдФрд░ FillupPage ред рдпрджрд┐ рдЗрди рдкреГрд╖реНрдареЛрдВ рдкрд░ рд╕рд╣реЗрдЬреЗ рдирд╣реАрдВ рдЧрдП рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "рдмреИрдХ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреБрд╖реНрдЯрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд╕рдВрдХреНрд░рдордг рд╡рд╛рдкрд╕ рд░рджреНрдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдирд┐рдореНрди рдЫрд╡рд┐ рдкреБрд╖реНрдЯрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рддреА рд╣реИред

рдЫрд╡рд┐

рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдбрд┐рдЬрд╛рдЗрди рд╕рд┐рдлрд╛рд░рд┐рд╢:
рдбреЗрдЯрд╛ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдиреЗ рдпрд╛ рд╣рдЯрд╛рдиреЗ рдпрд╛ рд░рджреНрдж рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдПрдХ рд░рджреНрдж рдмрдЯрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдирд┐рдореНрди рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдлреНрдпреВрд▓ рдЯреНрд░реИрдХрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд┐рд╕реА рдореИрд╕реЗрдЬ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PhoneApplicationPage.OnBackKeyPress рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдмрд┐рдирд╛ рд╕рд╣реЗрдЬреЗ рдЧрдП рдбреЗрдЯрд╛ рдХреА рдкреБрд╖реНрдЯрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
  1. рд╕рдВрд░рдХреНрд╖рд┐рдд рдУрд╡рд░рд░рд╛рдЗрдб рд╢реВрдиреНрдп OnBackKeyPress (
  2. рд╕рд┐рд╕реНрдЯрдо .ComponentModel.CancelEventArgs рдИ)
  3. {
  4. рдЖрдзрд╛рд░ .OnBackKeyPress (e);
  5. // рдпрджрд┐ рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдХреБрдЫ рднреА рди рдХрд░реЗрдВред
  6. рдЕрдЧрд░ (рд╣реИ! рд╣реИрдирд╡реЗрдб рдЪреЗрдВрдЬреЗрдЬ) рд╡рд╛рдкрд╕реА ;
  7. var result = MessageBox.Show ( "рдЖрдк рдЕрдкрдиреЗ" + рдХреЛ рддреНрдпрд╛рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВ
  8. "рдкрд░рд┐рд╡рд░реНрддрдиред рдЬрд╛рд░реА рд░рдЦреЗрдВ?" , "рдЪреЗрддрд╛рд╡рдиреА" , MessageBoxButton.OKCancel);
  9. рдЕрдЧрд░ (рдкрд░рд┐рдгрд╛рдо == MessageBoxResult.OK)
  10. {
  11. // рд╕рд╛рдорд╛рдиреНрдп рдиреЗрд╡рд┐рдЧреЗрд╢рди; tombstoning рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ,
  12. // рдЗрд╕рд▓рд┐рдП cacheChanges рдзреНрд╡рдЬ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рд╡рд░реНрддрдорд╛рди рдХреИрд╢ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░реЗрдВред
  13. cacheChanges = false ;
  14. рдЗрд╕реЗ .State.Remove (CURRENT_FILLUP_KEY);
  15. }
  16. рдЕрдиреНрдпрдерд╛
  17. {
  18. // рдкрд┐рдЫрдбрд╝рд╛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд░рджреНрдж рдХрд░реЗрдВред
  19. e.Cancel = true ;
  20. }
  21. }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

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

рдЕрдЧрд▓реЗ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╣реЛрдЧрд╛ред
рдкрд╣рд▓рд╛ рднрд╛рдЧ

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


All Articles