"Mapping" არის ახალი LPgenerator ინსტრუმენტი! რა არის პორტის რუქები


ნაწილი 3: მონაცემების ჩვენება ცხრილიდან (LIST ოპერაცია)

წინა ნაწილში განვიხილეთ ურთიერთობების ტიპები (ერთი-ერთზე, ერთ-ერთ-მრავალზე, ბევრი-მრავალზე), ასევე ერთი კლასის Book და მისი შედგენის კლასი BookMap. მეორე ნაწილში ჩვენ განვაახლებთ Book კლასს, შევქმნით დარჩენილ კლასებს და მათ შორის კავშირებს, როგორც ეს იყო ასახული წინა თავში მონაცემთა ბაზის დიაგრამაში, რომელიც მდებარეობს ქვესათაური 1.3.1 ურთიერთობები.

კლასების და რუკების კოდი (კომენტარებით)

საკლასო წიგნი

საჯარო კლასის წიგნი ( //უნიკალური იდენტიფიკატორი public virtual int Id (get; set;) // სათაური საჯარო ვირტუალური სტრიქონი სახელი (get; set;) // აღწერა საჯარო ვირტუალური სტრიქონი აღწერა (get; set;) // მსოფლიო რეიტინგი მხატვრული ლიტერატურის საჯარო ვირტუალური int MfRaiting ( მიიღეთ; კომპლექტი; ) //გვერდის ნომრები საჯარო ვირტუალური int PageNumber ( მიიღეთ; დაყენება; ) //სურათის ბმული საჯარო ვირტუალური სტრიქონის გამოსახულება (მიღება; დაყენება; ) //წიგნის ჩამოსვლის თარიღი (ფილტრი ახალი ელემენტებით!) საჯარო ვირტუალური DateTime IncomeDate ( მიიღეთ; დაყენება; ) //ჟანრი (ბევრი-მრავალამდე) //რატომ არის ISet და არა IList მხოლოდ ერთი კოლექციის (IList) არჩევა JOIN fetch-ის გამოყენებით, თუ ერთზე მეტია? კოლექცია საჭიროა JOIN-ის მოსატანად, მაშინ უმჯობესია მათი გადაყვანა ISet საჯარო ვირტუალურ ISet კოლექციად ჟანრები ( მიიღეთ; კომპლექტი; ) //სერიები (ბევრი-ერთზე) საჯარო ვირტუალური სერიები სერიები ( მიიღეთ; კომპლექტი; ) //აზრი და სხვა (ერთი-ერთზე) კერძო გონება _ გონება; საჯარო ვირტუალური Mind Mind ( get ( return _mind ?? (_mind = new Mind()); ) set ( _mind = value; ) ) //Author (Many-to-May) საჯარო ვირტუალური ISet ავტორები ( მიიღეთ; დაყენება; ) //ინიციალიზაცია წინასწარ, რათა არ მოხდეს ნულოვანი გამონაკლისი. public Book() ( //Uordered set (ერთი ცხრილი არ შეიძლება შეიცავდეს ორ ზუსტად იდენტურ მწკრივს, წინააღმდეგ შემთხვევაში ის ირჩევს ერთს და უგულებელყოფს მეორეს) Genres = new HashSet ( public BookMap() ( Id(x => x.Id); რუკა (x => x.Name); რუკა (x => x.აღწერა); რუკა (x => x.MfRaiting); რუკა (x = > x.PageNumber(x => x.Image) ობიექტი შენახულია, განახლებულია ან წაშლილია, ყველა დამოკიდებული ობიექტი მოწმდება და //created/updated/added.Cascade.SaveUpdate() //შუალედური ცხრილის სახელი უნდა იყოს იგივე, რაც კლასის Genre .Table("Book_Genre" > x.Authors) .Cascade.SaveUpdate() .Table("Book_Author") . => x.Mind).Cascade.All().Constrained();

საჯარო კლასი ავტორი ( public virtual int Id ( get; set; ) //სახელი-გვარი საჯარო ვირტუალური სტრიქონი სახელი (get; set;) //ბიოგრაფია საჯარო ვირტუალური სტრიქონი ბიოგრაფია (get; set;) //Books public virtual ISet წიგნები ( მიიღეთ; კომპლექტი; ) //ავტორების ინიციალიზაცია საჯარო ავტორი() (წიგნები=new HashSet (); ) ) // ავტორის რუკების საჯარო კლასი AuthorMap: ClassMap

( public AuthorMap() ( Id(x => x.Id); Map(x => x.Name); Map(x => x.ბიოგრაფია); //Many-to-Many ურთიერთობა HasManyToMany(x => x .წიგნები) //კასკადის წესები ყველა - როდესაც ობიექტი ინახება, განახლდება ან წაიშლება, ყველა დამოკიდებული ობიექტი მოწმდება და იქმნება/განახლდება/დამატებულია.Cascade.All() //კოლექციის მფლობელი ურთიერთობის მეორე ბოლოა. (Book) და ის შეინახება ჯერ .Inverse() //შუალედური ცხრილის სახელი უნდა იყოს იგივე, რაც Book კლასი.

კლასის ჟანრი საჯარო კლასი ჟანრი ( public virtual int Id ( get; set; ) //ჟანრის სახელი საჯარო ვირტუალური სტრიქონი სახელი (get; set; ) //ჟანრის ინგლისური სახელი საჯარო ვირტუალური სტრიქონი EngName (get; set; ) //Books საჯარო ვირტუალური ISet წიგნები ( მიიღეთ; კომპლექტი; ) //წიგნების ინიციალიზაცია საჯარო ჟანრის() (წიგნები=new HashSet ();

) ) //ჟანრის რუკების საჯარო კლასი GenreMap: ClassMap

საჯარო კლასი Mind ( public virtual int Id ( get; set; ) //ჩემი აზრი საჯარო ვირტუალური სტრიქონი MyMind ( get; set; ) //Fantlab-ის აზრი საჯარო ვირტუალური სტრიქონი MindFantLab ( get; set; ) //Book public virtual Book Book ( მიიღეთ; ( public MindMap() ( Id(x => x.Id); Map(x => x.MyMind); Map(x => x.MindFantLab); //ერთ-ერთზე ურთიერთობა HasOne(x => x .წიგნი ) )

კლასის ციკლი (სერიები):

საჯარო კლასის სერიები ( public virtual int Id ( get; set; ) public virtual string სახელი ( get; set; ) //მე შევქმენი IList და არა ISet, რადგან წიგნის გარდა, სერია არ ასოცირდება სხვასთან, თუმცა თქვენ შეუძლია გააკეთოს და დააყენოს საჯარო ვირტუალური IList წიგნები ( მიიღეთ; კომპლექტი; ) //წიგნების ინიციალიზაცია. public Series() ( წიგნები = ახალი სია ();

) ) საჯარო კლასის სერიის რუკა: ClassMap
( public SeriesMap() ( Id(x => x.Id); Map(x => x.Name); //ერთ-ერთზე ურთიერთობა HasMany(x => x.Books) ////მფლობელი კრებულის მეორე ბოლო (წიგნი) და პირველი შეინახება. პატარა ახსნა
საჯარო ვირტუალური ISet ჟანრები (მიღება; დაყენება;)

საჯარო ვირტუალური ISet ავტორები (მიიღე; კომპლექტი; ) რატომ ISet
, და არა, მაგალითად, ბევრისთვის ნაცნობი ილისტი
? თუ ISet-ის ნაცვლად გამოვიყენებთ IList-ს და შევეცდებით პროექტის გაშვებას, დიდ განსხვავებას ვერ შევამჩნევთ (შეიქმნება ცხრილები და კლასები). მაგრამ როდესაც ჩვენ ერთდროულად დავამატებთ ჟანრს და ავტორებს ცხრილებს Book LeftJoin კლასში და ასევე ვცდილობთ გამოვაჩინოთ არ განმეორებადი ჩანაწერები Book ცხრილიდან (Distinct Book.Id) ხედში (View), Nhibernate ჩააგდებს გამონაკლისი და შეცდომა.

რამდენიმე ჩანთის ერთდროულად მიღება შეუძლებელია.

ასეთ შემთხვევებში ჩვენ ვიყენებთ ISet-ს, მით უმეტეს, რომ კომპლექტები ამისთვისაა განკუთვნილი (ისინი უგულებელყოფენ დუბლიკატ ჩანაწერებს).
ბევრი-ბევრი ურთიერთობა.
NHibernate-ს აქვს „მთავარი“ ცხრილის კონცეფცია. მიუხედავად იმისა, რომ წიგნისა და ავტორის ცხრილებს შორის მრავალი-მრავალთან ურთიერთობა ეკვივალენტურია (ავტორს შეიძლება ჰყავდეს ბევრი წიგნი, წიგნს შეიძლება ჰყავდეს ბევრი ავტორი), Nhibernate მოითხოვს პროგრამისტს მიუთითოს ცხრილი, რომელიც ინახება მეორეში (აქვს მეთოდი. შებრუნებული. ()), ანუ ჯერ წიგნი შეიქმნება/განახლდება/წაიშლება ჩანაწერი და მხოლოდ ამის შემდეგ ავტორის ცხრილში.

ბევრი-ერთ-ერთზე, ერთი-მრავალზე ურთიერთობა.

მეთოდი.Constrained() ეუბნება NHibernate-ს, რომ ჩანაწერი Book ცხრილიდან უნდა ემთხვეოდეს ჩანაწერს Mind ცხრილიდან (Mind ცხრილის ID უნდა იყოს Book ცხრილის id-ის ტოლი)

თუ ახლა აწარმოებთ პროექტს და გადახედავთ Bibilioteca მონაცემთა ბაზას, გამოჩნდება ახალი ცხრილები უკვე ჩამოყალიბებული კავშირებით.

შემდეგ შეავსეთ შექმნილი ცხრილები მონაცემებით...
ამისათვის ჩვენ შევქმნით სატესტო აპლიკაციას, რომელიც შეინახავს მონაცემებს მონაცემთა ბაზაში, განაახლებს და წაშლის მას, შემდეგნაირად შევცვლით HomeController-ს (ჩვენ კომენტარს ვაკეთებთ კოდის არასაჭირო მონაკვეთებზე):
public ActionResult Index() ( (ISession session = NHibernateHelper.OpenSession()) ( გამოყენებით (ITransaction ტრანზაქცია = session.BeginTransaction()) ( //Create, add var createBook = new Book(); createBook.Name = "Metro2033" CreateBook.Description = "Post-apocalyptic Mysticism".Add(New Author (სახელი = "Glukhovsky" ) ; (სახელი = "Metro" ); (1); //var updateBook = session.Get (1); //updateBook.Name = "Metro2034";

) ) საჯარო კლასის სერიის რუკა: ClassMap

  1. //updateBook.Description = "დისტოპია"; () //updateBook.Authors.ElementAt(0).Name = "გლუხოვსკი";;
  2. //updateBook.Genres.ElementAt(0).Name = "დისტოპია";//updateBook.Series = სერია;
    //updateBook.Mind.MyMind = "11111";
    //session.SaveOrUpdate(updateBook);
    //წაშლა (ID-ით) //var deleteBook = სესია.მიღება
  3. .TransformUsing(Transformers.DistinctRootEntity)- SQL სკრიპტის შესრულების მსგავსად: აირჩიეთ განსხვავებული Book.Id..., (აშორებს დუბლიკატ ჩანაწერებს იგივე ID-ით)

ასოციაციების სახეები
//updateBook.Genres.ElementAt(0).Name = "დისტოპია";

  1. LeftOuterJoin - ირჩევს ყველა ჩანაწერს მარცხენა ცხრილიდან ( წიგნი), და შემდეგ ანიჭებს მათ ცხრილის მარჯვენა ჩანაწერებს ( ჟანრი). თუ შესაბამისი ჩანაწერი არ არის ნაპოვნი მარჯვენა ცხრილში, აჩვენებს მას Null-ად
  2. RightOuterJoin არის LEFT JOIN-ის საპირისპირო - ის ირჩევს ყველა ჩანაწერს მარჯვენა ცხრილიდან ( ჟანრი), და შემდეგ მათ უერთდება ცხრილის მარცხენა ჩანაწერები ( წიგნი)
  3. InnerJoin - ირჩევს მხოლოდ იმ ჩანაწერებს მარცხენა ცხრილებიდან ( წიგნი) რომელსაც აქვს შესაბამისი ჩანაწერი მარჯვენა ცხრილიდან ( ჟანრი), და შემდეგ უერთდება მათ ჩანაწერებს მარჯვენა ცხრილიდან

მოდით შევცვალოთ წარმომადგენლობა შემდეგნაირად:

ინდექსის ხედი

@model IEnumerable @( განლაგება = null; ) ინდექსი

@Html.ActionLink ("ახლის შექმნა", "შექმნა")

@foreach (var პუნქტი მოდელში) ( @(string strSeries = item.Series != null ? item.Series.Name: null;) }
@Html.DisplayNameFor(model => model.Name) @Html.DisplayNameFor(model => model.Mind) @Html.DisplayNameFor(model => model.Series) @Html.DisplayNameFor(model => model.Authors) @Html.DisplayNameFor(მოდელი => მოდელი.ჟანრები) ოპერაციები
@Html.DisplayFor(modelItem => item.Name) @Html.DisplayFor(modelItem => item.Mind.MyMind)@Html.DisplayFor(modelItem => strSeries) @foreach (var ავტორი item.Authors-ში) ( string strAuthor = ავტორი != null ? author.Name: null; @Html.DisplayFor(modelItem => strAuthor)
}
@foreach (var ჟანრი item.Genres-ში) ( string strGenre = genre!= null ? genre.Name: null; @Html.DisplayFor(modelItem => strGenre)
}
@Html.ActionLink("რედაქტირება", "რედაქტირება", ახალი ( id = item.Id )) |




@Html.ActionLink("დეტალები", "დეტალები", ახალი ( id = item.Id )) |
  • @Html.ActionLink ("წაშლა", "წაშლა", ახალი ( id = ელემენტი. ID ))
  • ყველა ოპერაციის სათითაოდ შემოწმების შემდეგ შევამჩნევთ, რომ:

შექმნის და განახლების ოპერაციების დროს, წიგნის ცხრილთან დაკავშირებული ყველა მონაცემი განახლდება (ამოშალეთ Cascade="შენახვა-განახლება" ან cascade="ყველა" და დაკავშირებული მონაცემები არ შეინახება)
წაშლისას მონაცემები წაიშლება Book, Mind, Book_Author ცხრილებიდან, მაგრამ დარჩენილი მონაცემები არ იშლება, რადგან მათ აქვთ Cascade="save-update"
//ორგანზომილებიანი ფორმების კლასი საჯარო კლასი TwoDShape ( //Width public virtual int Width ( get; set; ) // Height public virtual int Height ( get; set; ) ) // Class Triangle public class Triangle: TwoDShape ( / /საიდენტიფიკაციო ნომერი public virtual int Id ( get; set; ) //სამკუთხედის ტიპი საჯარო ვირტუალური სტრიქონი Style (get; set; ) )

პრინციპში, ამ რუკებში არაფერია რთული, ჩვენ უბრალოდ შევქმნით ერთ რუკს წარმოებული კლასისთვის, ანუ სამკუთხედის ცხრილისთვის.
//სამკუთხედის რუკების საჯარო კლასი TriangleMap: ClassMap ( საჯარო TriangleMap () ( Id (x => x.Id); რუკა (x => x. სტილი); რუკა (x => x. სიმაღლე); რუკა (x => x. სიგანე); ) )
აპლიკაციის გაშვების შემდეგ Biblioteca-ს მონაცემთა ბაზაში გამოჩნდება შემდეგი (ცარიელი) ცხრილი

ტეგები: ტეგების დამატება


წინა ნაწილში განვიხილეთ ურთიერთობების ტიპები (ერთი-ერთზე, ერთ-ერთ-მრავალზე, ბევრი-მრავალზე), ასევე ერთი კლასის Book და მისი შედგენის კლასი BookMap. მეორე ნაწილში ჩვენ განვაახლებთ Book კლასს, შევქმნით დარჩენილ კლასებს და მათ შორის კავშირებს, როგორც ეს იყო ასახული წინა თავში მონაცემთა ბაზის დიაგრამაში, რომელიც მდებარეობს ქვესათაური 1.3.1 ურთიერთობები.

კლასების და რუკების კოდი (კომენტარებით)

საკლასო წიგნი

საჯარო კლასის წიგნი ( //უნიკალური იდენტიფიკატორი public virtual int Id (get; set;) // სათაური საჯარო ვირტუალური სტრიქონი სახელი (get; set;) // აღწერა საჯარო ვირტუალური სტრიქონი აღწერა (get; set;) // მსოფლიო რეიტინგი მხატვრული ლიტერატურის საჯარო ვირტუალური int MfRaiting ( მიიღეთ; კომპლექტი; ) //გვერდის ნომრები საჯარო ვირტუალური int PageNumber ( მიიღეთ; დაყენება; ) //სურათის ბმული საჯარო ვირტუალური სტრიქონის გამოსახულება (მიღება; დაყენება; ) //წიგნის ჩამოსვლის თარიღი (ფილტრი ახალი ელემენტებით!) საჯარო ვირტუალური DateTime IncomeDate ( მიიღეთ; დაყენება; ) //ჟანრი (ბევრი-მრავალამდე) //რატომ არის ISet და არა IList მხოლოდ ერთი კოლექციის (IList) არჩევა JOIN fetch-ის გამოყენებით, თუ ერთზე მეტია? კოლექცია საჭიროა JOIN-ის მოსატანად, მაშინ უმჯობესია მათი გადაყვანა ISet საჯარო ვირტუალურ ISet კოლექციად ჟანრები ( მიიღეთ; კომპლექტი; ) //სერიები (ბევრი-ერთზე) საჯარო ვირტუალური სერიები სერიები ( მიიღეთ; კომპლექტი; ) //აზრი და სხვა (ერთი-ერთზე) კერძო გონება _ გონება; საჯარო ვირტუალური Mind Mind ( get ( return _mind ?? (_mind = new Mind()); ) set ( _mind = value; ) ) //Author (Many-to-May) საჯარო ვირტუალური ISet ავტორები ( მიიღეთ; დაყენება; ) //ინიციალიზაცია წინასწარ, რათა არ მოხდეს ნულოვანი გამონაკლისი. public Book() ( //Uordered set (ერთი ცხრილი არ შეიძლება შეიცავდეს ორ ზუსტად იდენტურ მწკრივს, წინააღმდეგ შემთხვევაში ის ირჩევს ერთს და უგულებელყოფს მეორეს) Genres = new HashSet ( public BookMap() ( Id(x => x.Id); რუკა (x => x.Name); რუკა (x => x.აღწერა); რუკა (x => x.MfRaiting); რუკა (x = > x.PageNumber(x => x.Image) ობიექტი შენახულია, განახლებულია ან წაშლილია, ყველა დამოკიდებული ობიექტი მოწმდება და //created/updated/added.Cascade.SaveUpdate() //შუალედური ცხრილის სახელი უნდა იყოს იგივე, რაც კლასის Genre .Table("Book_Genre" > x.Authors) .Cascade.SaveUpdate() .Table("Book_Author") . => x.Mind).Cascade.All().Constrained();

საჯარო კლასი ავტორი ( public virtual int Id ( get; set; ) //სახელი-გვარი საჯარო ვირტუალური სტრიქონი სახელი (get; set;) //ბიოგრაფია საჯარო ვირტუალური სტრიქონი ბიოგრაფია (get; set;) //Books public virtual ISet წიგნები ( მიიღეთ; კომპლექტი; ) //ავტორების ინიციალიზაცია საჯარო ავტორი() (წიგნები=new HashSet (); ) ) // ავტორის რუკების საჯარო კლასი AuthorMap: ClassMap

( public AuthorMap() ( Id(x => x.Id); Map(x => x.Name); Map(x => x.ბიოგრაფია); //Many-to-Many ურთიერთობა HasManyToMany(x => x .წიგნები) //კასკადის წესები ყველა - როდესაც ობიექტი ინახება, განახლდება ან წაიშლება, ყველა დამოკიდებული ობიექტი მოწმდება და იქმნება/განახლდება/დამატებულია.Cascade.All() //კოლექციის მფლობელი ურთიერთობის მეორე ბოლოა. (Book) და ის შეინახება ჯერ .Inverse() //შუალედური ცხრილის სახელი უნდა იყოს იგივე, რაც Book კლასი.

კლასის ჟანრი საჯარო კლასი ჟანრი ( public virtual int Id ( get; set; ) //ჟანრის სახელი საჯარო ვირტუალური სტრიქონი სახელი (get; set; ) //ჟანრის ინგლისური სახელი საჯარო ვირტუალური სტრიქონი EngName (get; set; ) //Books საჯარო ვირტუალური ISet წიგნები ( მიიღეთ; კომპლექტი; ) //წიგნების ინიციალიზაცია საჯარო ჟანრის() (წიგნები=new HashSet ();

) ) //ჟანრის რუკების საჯარო კლასი GenreMap: ClassMap

საჯარო კლასი Mind ( public virtual int Id ( get; set; ) //ჩემი აზრი საჯარო ვირტუალური სტრიქონი MyMind ( get; set; ) //Fantlab-ის აზრი საჯარო ვირტუალური სტრიქონი MindFantLab ( get; set; ) //Book public virtual Book Book ( მიიღეთ; ( public MindMap() ( Id(x => x.Id); Map(x => x.MyMind); Map(x => x.MindFantLab); //ერთ-ერთზე ურთიერთობა HasOne(x => x .წიგნი ) )

კლასის ციკლი (სერიები):

საჯარო კლასის სერიები ( public virtual int Id ( get; set; ) public virtual string სახელი ( get; set; ) //მე შევქმენი IList და არა ISet, რადგან წიგნის გარდა, სერია არ ასოცირდება სხვასთან, თუმცა თქვენ შეუძლია გააკეთოს და დააყენოს საჯარო ვირტუალური IList წიგნები ( მიიღეთ; კომპლექტი; ) //წიგნების ინიციალიზაცია. public Series() ( წიგნები = ახალი სია ();

) ) საჯარო კლასის სერიის რუკა: ClassMap
( public SeriesMap() ( Id(x => x.Id); Map(x => x.Name); //ერთ-ერთზე ურთიერთობა HasMany(x => x.Books) ////მფლობელი კრებულის მეორე ბოლო (წიგნი) და პირველი შეინახება. პატარა ახსნა
საჯარო ვირტუალური ISet ჟანრები (მიღება; დაყენება;)

საჯარო ვირტუალური ISet ავტორები (მიიღე; კომპლექტი; ) რატომ ISet
, და არა, მაგალითად, ბევრისთვის ნაცნობი ილისტი
? თუ ISet-ის ნაცვლად გამოვიყენებთ IList-ს და შევეცდებით პროექტის გაშვებას, დიდ განსხვავებას ვერ შევამჩნევთ (შეიქმნება ცხრილები და კლასები). მაგრამ როდესაც ჩვენ ერთდროულად დავამატებთ ჟანრს და ავტორებს ცხრილებს Book LeftJoin კლასში და ასევე ვცდილობთ გამოვაჩინოთ არ განმეორებადი ჩანაწერები Book ცხრილიდან (Distinct Book.Id) ხედში (View), Nhibernate ჩააგდებს გამონაკლისი და შეცდომა.

რამდენიმე ჩანთის ერთდროულად მიღება შეუძლებელია.

ასეთ შემთხვევებში ჩვენ ვიყენებთ ISet-ს, მით უმეტეს, რომ კომპლექტები ამისთვისაა განკუთვნილი (ისინი უგულებელყოფენ დუბლიკატ ჩანაწერებს).
ბევრი-ბევრი ურთიერთობა.
NHibernate-ს აქვს „მთავარი“ ცხრილის კონცეფცია. მიუხედავად იმისა, რომ წიგნისა და ავტორის ცხრილებს შორის მრავალი-მრავალთან ურთიერთობა ეკვივალენტურია (ავტორს შეიძლება ჰყავდეს ბევრი წიგნი, წიგნს შეიძლება ჰყავდეს ბევრი ავტორი), Nhibernate მოითხოვს პროგრამისტს მიუთითოს ცხრილი, რომელიც ინახება მეორეში (აქვს მეთოდი. შებრუნებული. ()), ანუ ჯერ წიგნი შეიქმნება/განახლდება/წაიშლება ჩანაწერი და მხოლოდ ამის შემდეგ ავტორის ცხრილში.

ბევრი-ერთ-ერთზე, ერთი-მრავალზე ურთიერთობა.

მეთოდი.Constrained() ეუბნება NHibernate-ს, რომ ჩანაწერი Book ცხრილიდან უნდა ემთხვეოდეს ჩანაწერს Mind ცხრილიდან (Mind ცხრილის ID უნდა იყოს Book ცხრილის id-ის ტოლი)

თუ ახლა აწარმოებთ პროექტს და გადახედავთ Bibilioteca მონაცემთა ბაზას, გამოჩნდება ახალი ცხრილები უკვე ჩამოყალიბებული კავშირებით.

შემდეგ შეავსეთ შექმნილი ცხრილები მონაცემებით...
ამისათვის ჩვენ შევქმნით სატესტო აპლიკაციას, რომელიც შეინახავს მონაცემებს მონაცემთა ბაზაში, განაახლებს და წაშლის მას, შემდეგნაირად შევცვლით HomeController-ს (ჩვენ კომენტარს ვაკეთებთ კოდის არასაჭირო მონაკვეთებზე):
public ActionResult Index() ( (ISession session = NHibernateHelper.OpenSession()) ( გამოყენებით (ITransaction ტრანზაქცია = session.BeginTransaction()) ( //Create, add var createBook = new Book(); createBook.Name = "Metro2033" CreateBook.Description = "Post-apocalyptic Mysticism".Add(New Author (სახელი = "Glukhovsky" ) ; (სახელი = "Metro" ); (1); //var updateBook = session.Get (1); //updateBook.Name = "Metro2034";

) ) საჯარო კლასის სერიის რუკა: ClassMap

  1. //updateBook.Description = "დისტოპია"; () //updateBook.Authors.ElementAt(0).Name = "გლუხოვსკი";;
  2. //updateBook.Genres.ElementAt(0).Name = "დისტოპია";//updateBook.Series = სერია;
    //updateBook.Mind.MyMind = "11111";
    //session.SaveOrUpdate(updateBook);
    //წაშლა (ID-ით) //var deleteBook = სესია.მიღება
  3. .TransformUsing(Transformers.DistinctRootEntity)- SQL სკრიპტის შესრულების მსგავსად: აირჩიეთ განსხვავებული Book.Id..., (აშორებს დუბლიკატ ჩანაწერებს იგივე ID-ით)

ასოციაციების სახეები
//updateBook.Genres.ElementAt(0).Name = "დისტოპია";

  1. LeftOuterJoin - ირჩევს ყველა ჩანაწერს მარცხენა ცხრილიდან ( წიგნი), და შემდეგ ანიჭებს მათ ცხრილის მარჯვენა ჩანაწერებს ( ჟანრი). თუ შესაბამისი ჩანაწერი არ არის ნაპოვნი მარჯვენა ცხრილში, აჩვენებს მას Null-ად
  2. RightOuterJoin არის LEFT JOIN-ის საპირისპირო - ის ირჩევს ყველა ჩანაწერს მარჯვენა ცხრილიდან ( ჟანრი), და შემდეგ მათ უერთდება ცხრილის მარცხენა ჩანაწერები ( წიგნი)
  3. InnerJoin - ირჩევს მხოლოდ იმ ჩანაწერებს მარცხენა ცხრილებიდან ( წიგნი) რომელსაც აქვს შესაბამისი ჩანაწერი მარჯვენა ცხრილიდან ( ჟანრი), და შემდეგ უერთდება მათ ჩანაწერებს მარჯვენა ცხრილიდან

მოდით შევცვალოთ წარმომადგენლობა შემდეგნაირად:

ინდექსის ხედი

@model IEnumerable @( განლაგება = null; ) ინდექსი

@Html.ActionLink ("ახლის შექმნა", "შექმნა")

@foreach (var პუნქტი მოდელში) ( @(string strSeries = item.Series != null ? item.Series.Name: null;) }
@Html.DisplayNameFor(model => model.Name) @Html.DisplayNameFor(model => model.Mind) @Html.DisplayNameFor(model => model.Series) @Html.DisplayNameFor(model => model.Authors) @Html.DisplayNameFor(მოდელი => მოდელი.ჟანრები) ოპერაციები
@Html.DisplayFor(modelItem => item.Name) @Html.DisplayFor(modelItem => item.Mind.MyMind)@Html.DisplayFor(modelItem => strSeries) @foreach (var ავტორი item.Authors-ში) ( string strAuthor = ავტორი != null ? author.Name: null; @Html.DisplayFor(modelItem => strAuthor)
}
@foreach (var ჟანრი item.Genres-ში) ( string strGenre = genre!= null ? genre.Name: null; @Html.DisplayFor(modelItem => strGenre)
}
@Html.ActionLink("რედაქტირება", "რედაქტირება", ახალი ( id = item.Id )) |




@Html.ActionLink("დეტალები", "დეტალები", ახალი ( id = item.Id )) |
  • @Html.ActionLink ("წაშლა", "წაშლა", ახალი ( id = ელემენტი. ID ))
  • ყველა ოპერაციის სათითაოდ შემოწმების შემდეგ შევამჩნევთ, რომ:

შექმნის და განახლების ოპერაციების დროს, წიგნის ცხრილთან დაკავშირებული ყველა მონაცემი განახლდება (ამოშალეთ Cascade="შენახვა-განახლება" ან cascade="ყველა" და დაკავშირებული მონაცემები არ შეინახება)
წაშლისას მონაცემები წაიშლება Book, Mind, Book_Author ცხრილებიდან, მაგრამ დარჩენილი მონაცემები არ იშლება, რადგან მათ აქვთ Cascade="save-update"
//ორგანზომილებიანი ფორმების კლასი საჯარო კლასი TwoDShape ( //Width public virtual int Width ( get; set; ) // Height public virtual int Height ( get; set; ) ) // Class Triangle public class Triangle: TwoDShape ( / /საიდენტიფიკაციო ნომერი public virtual int Id ( get; set; ) //სამკუთხედის ტიპი საჯარო ვირტუალური სტრიქონი Style (get; set; ) )

პრინციპში, ამ რუკებში არაფერია რთული, ჩვენ უბრალოდ შევქმნით ერთ რუკს წარმოებული კლასისთვის, ანუ სამკუთხედის ცხრილისთვის.
//სამკუთხედის რუკების საჯარო კლასი TriangleMap: ClassMap ( საჯარო TriangleMap () ( Id (x => x.Id); რუკა (x => x. სტილი); რუკა (x => x. სიმაღლე); რუკა (x => x. სიგანე); ) )
აპლიკაციის გაშვების შემდეგ Biblioteca-ს მონაცემთა ბაზაში გამოჩნდება შემდეგი (ცარიელი) ცხრილი

ტეგები:

  • asp.net mvc 4
  • დაძინება
  • sql სერვერი
ტეგების დამატება

მონაცემთა საწყობი ფინანსური ინსტიტუტისთვის

საბანკო ინდუსტრიაში მონაცემთა საწყობები შექმნილია განსხვავებული სისტემების განსხვავებული მონაცემების კონსოლიდაციისთვის და კონსოლიდირებული მონაცემებიდან ინფორმაციის ამოღების მიზნით. მიუხედავად იმისა, რომ საწყობს შეუძლია მონაცემთა კონსოლიდაციის პრობლემების გადაჭრა, მას არ შეუძლია ჯადოსნურად გადაჭრას ყველა საინფორმაციო პრობლემა. ბანკის მონაცემთა საწყობის პროექტის ფორმირება და მართვა მოითხოვს ყველა დაინტერესებული მხარის შეგნებულ ძალისხმევას.

ამ მხრივ, ღირს გადახედოთ ნაბიჯებს (რომლების გადადგმაც შესაძლებელია მონაცემთა მოდელის დანერგვამდეც) ბანკში მონაცემთა საწყობის წარმატებით განხორციელებისთვის იდეალური გარემოს შექმნის უზრუნველსაყოფად.

1. დაინტერესებული მხარეების იდენტიფიცირება ბანკის საქმიანობის მიხედვით (საცალო ბანკი, კორპორატიული ბიზნესი, საკრედიტო ბარათები და ა.შ.).

დაინტერესებულ მხარეებს უნდა ჰქონდეთ შესაბამისი ცოდნა. იმისათვის, რომ უკეთ გავიგოთ მონაცემთა საწყობი და მისი საჭიროებები თითოეული ინდივიდუალური ბიზნეს ფუნქციისთვის, აუცილებელია პროექტის გუნდის წევრების ჩართვა როგორც ბიზნესის, ასევე ბიზნეს ტექნოლოგიების მხრიდან. დაინტერესებული მხარეები თავიდანვე უნდა ჩაერთონ პროექტში, რათა თავიდან აიცილონ ინფორმაციის გაჟონვა ჯგუფებში.

2. ტრენინგები ბანკში მონაცემთა შენახვის აუცილებლობის გასაგებად.

პროექტის დაინტერესებულ მხარეებს უნდა ესმოდეთ, რომ მონაცემთა საწყობი არის მხოლოდ შესაბამისი მონაცემთა ელემენტების საცავი და არა წყაროს სისტემის ზუსტი ასლი. ეს ეხმარება გუნდებს გადაწყვიტონ, რა მონაცემები ღირს შესანახად.

3. მონაცემთა მოდელირების კონცეფციის გააზრება.

მეტამონაცემების ცხრილებისა და ისტორიული ცხრილების გამოყენების გააზრება უზრუნველყოფს პროექტის გუნდს დარწმუნებას, რომ მათი მოთხოვნები დანერგილი იქნება მონაცემთა მოდელში.

4. წყაროს სისტემების ლანდშაფტის კოლექტიური აღმოჩენა.

დარწმუნდით, რომ ორგანიზაციის თითოეულ სისტემას სათანადოდ განიხილება და განიხილება მონაცემთა საწყობში ჩართვა.

5. ძირითადი მოდელის გარშემო პროექტის აგება მონაცემთა მოდელის გაფართოების საერთო მიდგომის გასაგებად.

საბაზისო მოდელი უნდა მოიცავდეს ძირითად ბიზნეს განზომილებებს და უზრუნველყოს ფაქტობრივი მონაცემების შესახებ ინფორმაცია, რომლებიც შეიძლება საჭირო გახდეს შენახვა.

6. მონაცემთა რუქა.

ა) წყაროდან (ორგანიზაციაში წყაროს სისტემები) მონაცემების რუკების დაფიქსირება სამიზნე სტრუქტურამდე (საწყობის მონაცემთა მოდელი).

თქვენ უნდა განსაზღვროთ საწყისი სისტემები და ურთიერთობები სისტემებს შორის თითოეული განზომილებისთვის მონაცემთა მოდელში.

ბ) მონაცემთა რუკების შედგენა თითოეული ფუნქციისთვის ბიზნესისა და IT გუნდის წევრებთან:

ეს რუკა შეიძლება საჭირო გახდეს ორ დონეზე:

პირდაპირი რუქა წყაროს სისტემებიდან: მონაცემთა ელემენტების უმეტესობა პირდაპირ იქნება შედგენილი მონაცემთა მოდელში. აქ თქვენ უნდა განსაზღვროთ წყარო და ველის სახელები.

წყაროს სისტემებიდან მიღებული რუკა: მოდელის ზოგიერთი მონაცემთა ელემენტი შეიძლება მოითხოვდეს ბიზნეს წესების გამოყენებას წყარო სისტემის მონაცემებზე ზუსტი ინფორმაციის მისაღებად. ისინი მკაფიოდ უნდა იყოს დოკუმენტირებული.

ორი ან მეტი წყაროდან რუკების შედგენისას უნდა განისაზღვროს ამ წყაროს სისტემებს შორის ურთიერთობები.

7. აგრეგაციის განმარტება.

მონაცემთა საწყობის შექმნის ერთ-ერთი მიზანია ისტორიული მონაცემებიდან ანალიტიკური ინფორმაციის მიღება. ის ასევე მოიცავს მონაცემების პროგნოზირებადი ტენდენციების შექმნას. აგრეგაცია განსაზღვრავს ფენებს ან ზომებს, რომლებშიც ხდება მონაცემების ანალიზი. უმჯობესია, თუ აგრეგაციები განისაზღვროს ინფორმაციის (ანგარიშები და დაფები) საფუძველზე, რომელიც უნდა იყოს მიღებული მონაცემთა მოდელიდან.

8. მონაცემთა ელემენტების გამოტოვება და დასახელება.

პროექტის გუნდებმა უნდა აღიარონ, რომ წყარომ შეიძლება ყოველთვის არ უზრუნველყოს ყველა მონაცემი სტანდარტული მოდელის ფარგლებში. გუნდის წევრებმა უნდა გადაწყვიტონ ან გამორიცხონ ეს ელემენტები მოდელიდან ან დატოვონ ისინი, მაგრამ არ გამოიყენონ ისინი. სასურველი გზა არის შეუსაბამო ველების გამოტოვება. ისინი უნდა დარჩეს გამოუყენებელი მხოლოდ მაშინ, როდესაც მოსალოდნელია, რომ ისინი სასარგებლო იქნება მომავალში.

9. პროცესის შემდგომი გაუმჯობესების დეკლარაცია.

მიუხედავად იმისა, რომ მონაცემთა საწყობები თავისთავად არ არის პროცესის გაუმჯობესების პროექტი, მათ შეუძლიათ გაუმჯობესებები მოიტანონ საწყობის მიღმა. პროცესებში ან წყაროს სისტემებში დაფიქსირებული სისუსტეები უნდა აღინიშნოს და პარალელურად აღმოიფხვრას. თუმცა, პროცესის მიერ განხორციელებული ცვლილებები შეიძლება მოგვიანებით განხორციელდეს და არ უნდა იმოქმედოს მონაცემთა საწყობის პროექტზე.

10. ვერსიის გასწორება.

რუკების და მონაცემთა მოდელები უნდა იქნას მიღებული, როგორც ვერსიები, რომლებიც დაკავშირებულია ცვლილებებთან პროექტის განვითარებასთან ერთად. მნიშვნელოვანია ამ ცვლილებებთან ადაპტაციისკენ მიმართული პროცესის შექმნა.

ძალიან ბევრი მონაცემების შესანახად და გასაანალიზებლად შეიძლება იყოს გამოწვევა ყველა ორგანიზაციისთვის, განსაკუთრებით მაშინ, როდესაც ეს იწვევს მეტრიკის შეუსაბამობას. როდესაც ძალიან ბევრი მონაცემია, თქვენ უნდა გაუმკლავდეთ კონფლიქტურ მონაცემებს ანგარიშებში, აირჩიოთ კონფლიქტურ ინდიკატორებს შორის და წაშალოთ დუბლიკატი ჩანაწერები. ამას ძალიან ბევრი დრო და რესურსი სჭირდება, განსაკუთრებით უმსხვილეს კომპანიებში, რომლებმაც დანერგეს ძალიან ბევრი მონაცემთა საწყობი ან მონაცემთა მარტი, რომლებიც აწვდიან განსხვავებულ ინფორმაციას ერთი და იგივე ბიზნეს პროცესების ან მოვლენების შესახებ.

ამ პრობლემის მოგვარება უწევთ როგორც საბანკო დაწესებულებებს, ასევე ეკონომიკის რეალურ სექტორში არსებულ საწარმოებს. მათ გამოცდილებაზე მიბრუნებით, შეგიძლიათ მიიღოთ რამდენიმე უნივერსალური რეკომენდაცია.

შეამცირეთ მრავალი მონაცემთა მაღაზიები ერთ მაგალითზე

Boeing-მა გაიარა ეს პროცესი, დაიწყო 12 მონაცემთა საწყობიდან და 50 ხარჯების მართვის სისტემით, რომელთაგან ზოგიერთს ათიათასობით ბიზნეს წესი ჰქონდა. „პრობლემა იმაში მდგომარეობდა, რომ ჩვენი IT დეპარტამენტი აწვდიდა იმას, რაც მომხმარებლებს სჭირდებოდათ, მაგრამ ისინი არ უკავშირდებოდნენ ერთმანეთს“, ამბობს ბილ კერლი, Boeing-ის ფინანსური აღმასრულებელი. ინტეგრაციის ეს ნაკლებობა ანგარიშგების შეუსაბამობის მიზეზი იყო.

Boeing-ს რამდენიმე წელი დასჭირდა ყველა ფინანსური ანგარიშგების ერთიან მთლიანობაში გაერთიანებას. ამ ამოცანაზე მომუშავე პროექტის ჯგუფის წევრებმა მიდგომა მიიღეს ზემოდან ქვევით - მათ ჰკითხეს „მონაცემთა მფლობელებს“ რა ინფორმაცია სჭირდებოდათ სამუშაოს შესასრულებლად და დანერგეს მონაცემთა სტანდარტული ლექსიკონი მინიმალური საჭირო ელემენტებით. გარდა ამისა, მათ გამიჯნეს ანგარიშგებისთვის საჭირო ოპერატიული და ფაქტობრივი სააღრიცხვო მონაცემები. „აღარ გვჭირდებოდა ოპერაციული ინფორმაციის გაშვება ჩვენი სააღრიცხვო სისტემის მეშვეობით“, - ამბობს ბილ კერლი.

მონაცემთა ერთიან არქიტექტურაზე გადასვლა მონაცემთა ხარისხის გასაუმჯობესებლად

Nike მუშაობდა ამ ამოცანაზე ბოლო რამდენიმე წლის განმავლობაში. ამისათვის კომპანიის მონაცემთა არქიტექტორმა ჯეიმს ლიმ აღმოფხვრა დუბლიკატი მონაცემები, შეავსო ცხრილებში გამოტოვებული ველები და განიხილა ანგარიშების სერია, რომელთა გენერირებას ძალიან დიდი დრო დასჭირდა. „სიმართლის ერთი ვერსიისკენ მიმავალ გზაზე, ჩვენ გვინდოდა მივაღწიოთ მნიშვნელოვან მოქნილობას, რათა ბიზნეს ერთეულებმა შეძლონ თავიანთი ანგარიშების გენერირება IT დეპარტამენტის მონაწილეობის გარეშე. ერთ-ერთი მიზანი ის იყო, რომ მომხმარებლები თვითკმარი ყოფილიყვნენ მონაცემებთან მუშაობის თვალსაზრისით“, - იხსენებს ის. Nike-ის ერთ-ერთი ყველაზე ხშირად გამოყენებული ცხრილი შეიცავდა ასზე მეტ სვეტს. ეს იყო უკიდურესად არაეფექტური I/O და გადამამუშავებელი ენერგიის მოხმარების თვალსაზრისით. Nike-მა გაამარტივა ეს ულტრა ფართო ცხრილი და შეამცირა მისი მონაცემთა მოდელები ნაკლებ ელემენტებზე. ამ პროცესმა ასევე გააუმჯობესა მონაცემთა ხარისხი იმით, რომ მომხმარებლები პასუხისმგებელნი გახდნენ დაკარგული, მაგრამ აუცილებელი მონაცემების ელემენტებზე და გახდნენ უფრო პროაქტიული მათ თვალყურის დევნებაში.

პუბლიკაციები

  1. აართი ნიადიში. „იდეალური საბანკო მონაცემთა შენახვის პროექტი: 10 ნაბიჯი სწორი ტემპის დასაყენებლად“, 2013 წლის 15 იანვარი.
  2. დევიდ სტრომი. "გაუმკლავდეს ძალიან ბევრ მონაცემს: როგორ გააკეთეს ეს Boeing-მა, Nike-მა და სხვებმა", 2012 წლის 23 ოქტომბერი.

პორტის რუკა- ეს არის მიღებული მონაცემების გადამისამართება ისე, რომ ერთი კომპიუტერის რომელიმე პორტზე მიღებული მონაცემები ავტომატურად გადამისამართდება სხვა კომპიუტერის სხვა პორტში.

სინამდვილეში, ეს ბევრად უფრო ადვილია ტექნიკურად განხორციელება, ვიდრე თავად პრინციპის ახსნა. ეს შეიძლება შევადაროთ მზის სხივს: თუ სინათლის სხივს სარკეში მიმართავთ, ის „ავტომატურად“ აირეკლება და ანათებს ობიექტს. მეტიც, თუ ადამიანს გაანათებ და ამ ადამიანმა არ იცის, რომ სხივი სარკიდან აირეკა, იფიქრებს, რომ სინათლე მოდის იმ ადგილიდან, სადაც სარკე მდებარეობს. აქაც იგივეა: თქვენს მიერ გადაცემული ყველა მონაცემი ყოველგვარი დამახინჯების გარეშე გადადის სხვა კომპიუტერზე, რომელიც შეიძლება განთავსდეს ნებისმიერ ადგილას.

ეს ტექნოლოგია გარკვეულწილად წააგავს პროქსი სერვერს, მაგრამ ის ბევრად უფრო მარტივი და ნაკლებად მოქნილია.

სქემა დაახლოებით იგივეა, რაც პროქსის გამოყენებისას (შეგიძლიათ თქვათ, რომ პორტის რუკების მსგავსი პროქსი - მაგრამ ეს იგივე იქნება, რაც თქვა "ბაბუა შვილიშვილს ჰგავს" - სინამდვილეში, პროქსი პორტის რუკების მსგავსია. ):

თქვენი კომპიუტერი >>> კომპიუტერი პორტის რუკებით >>> დისტანციური სერვერი.

რატომ გჭირდებათ პორტის რუკა?

  1. თუ თქვენი ორგანიზაცია იყენებს კორპორატიულ პროქსის, მაშინ მასზე პორტის რუკების კონფიგურაციით გარე ფოსტის სერვერზე (mail.ru), შეგიძლიათ გამოიყენოთ ნებისმიერიფოსტის პროგრამა კორპორატიული ქსელიდან - და თქვენ არ გჭირდებათ რაიმე დამატებითი პროგრამის ინსტალაცია/კონფიგურაცია!
  2. ზუსტად ისევე, როგორც ელექტრონული ფოსტის პროგრამა, შეგიძლიათ თითქმის ნებისმიერი სხვა პროგრამის კონფიგურაცია! თუ მხოლოდ მას მხარს უჭერს TCP/IP.

რა თქმა უნდა, ეს მხოლოდ პორტის რუკების გამოყენების ძირითადი გზებია. არსებობს მრავალი სხვა სახის აქტივობა, სადაც ის ასევე ძალიან, ძალიან სასარგებლო იქნება.

პორტის რუკების უპირატესობები

  1. ეს სისტემა ძალიან მარტივია და ინტერნეტში ბევრი პროგრამაა, რომლებიც ამ ფუნქციის განხორციელების საშუალებას გაძლევენ;
  2. ვინაიდან მონაცემები გადაცემულია 100% ყოველგვარი დამახინჯების გარეშე, თქვენ გარანტირებული გაქვთ 100% ანონიმურობა;
  3. თუ თქვენ იყენებთ ამ სისტემას, არ გჭირდებათ რაიმე "სოქსიფიკატორი" - ვინაიდან დამატებითი კავშირის ინიციალიზაცია არ არის საჭირო, პორტის მაპერთან დაკავშირება დისტანციურ კომპიუტერთან დაკავშირების ტოლფასია.

პორტის რუკების ნაკლოვანებები

  1. ეს სისტემა არ არის მოქნილი. პროქსისგან განსხვავებით, სადაც შეგიძლიათ დაუკავშირდეთ ბევრ საიტს ერთი პროქსის საშუალებით, შეგიძლიათ დაუკავშირდეთ ერთი პორტის რუკების საშუალებით მხოლოდ ერთსსერვერი.
  2. ყოველი ახალი პორტის რუკისთვის, თქვენ უნდა შეცვალოთ პარამეტრები სერვერზე, სადაც ეს ფუნქცია განხორციელებულია - ეს არ არის ხელმისაწვდომი კლიენტის კომპიუტერიდან.
  3. ინტერნეტში არაუფასო პორტების მაპერები (მათი უკიდურესი შეზღუდვების გამო - ერთი პორტის რუკების წვდომა მხოლოდ ერთ სერვერზე იძლევა), ასე რომ, თუ გსურთ იყოთ ნამდვილად ანონიმური თქვენს კომპიუტერში, უნდა გქონდეთ სერვერი სადმე, რომელზეც დაინსტალირებული იქნება პორტის რუკების პროგრამა - და ახლა ამ სერვერის მისამართი "გაბრწყინდება" ვებსაიტის ჟურნალებში.

როგორ ვიმუშაოთ პორტის რუკებთან

გთხოვთ გაითვალისწინოთ, რომ პორტის რუკებთან მუშაობის სქემა დაახლოებით იგივეა, რაც პროქსისთან მუშაობისას, მხოლოდ უფრო მარტივი. პორტის რუქა არის მეტსახელი (დამატებითი სახელი) იმ კომპიუტერისთვის, რომელზედაც ის არის კონფიგურირებული.

დავუშვათ, რომ პორტის რუქა შესრულებულია:

192.168.1.255:1234 => www.mail.ru:80 (პორტი 80 არის ვებ სერვერის პორტი)

შემდეგ, mail.ru ვებსაიტის გასახსნელად, შეგიძლიათ გამოიყენოთ 2 მეთოდი - გახსენით ვებ – გვერდი ბრაუზერის ფანჯარაში:

  1. http://www.mail.ru
  2. http://192.168.1.255:1234/
    (ამ შემთხვევაში აუცილებლად დაწერეთ http://)

მინდა აღვნიშნო: თუ თქვენ საჭიროაგამოიყენეთ პორტის რუკინგი, შემდეგ თქვენ უნდა გამოიყენოს მხოლოდ მეორე მისამართი.

ანუ, თუ mail.ru-სთან დაკავშირება შეუძლებელია, მაშინ უნდა გამოიყენოთ მხოლოდ შიდა მისამართი (http://192.168.1.255:1234/).

პორტის რუქა ლოკალურ კომპიუტერზე

  1. იმ შემთხვევაში, როდესაც თქვენ აკეთებთ პორტების რუკს საკუთარ კომპიუტერზე, ჩვეულებრივ მიუთითებთ:
  2. ლოკალური პორტი - ლოკალური პორტი თქვენს კომპიუტერში, რომელსაც უნდა დაუკავშირდეთ პორტების რუკების გამოსაყენებლად. ეს რიცხვი შეიძლება იყოს ნებისმიერი (1-დან 65535-მდე), სასურველია 1000-ზე მეტი; დისტანციური ჰოსტი - ეს კომპიუტერი (ჰოსტი),რომელსაც
  3. განსაზღვრავს პორტის რუკს. მაგალითად, ეს შეიძლება იყოს ფოსტის სერვერი pop.mail.ru;დისტანციური პორტი - კომპიუტერის პორტი,

რომელსაც კავშირი მოხდება პორტის რუკების საშუალებით. ფოსტის მისაღებად (POP3) ეს ჩვეულებრივ არის პორტი 110, ფოსტის გასაგზავნად (SMTP) - პორტი 25, ვებ სერვერებისთვის (www...) - ეს არის ჩვეულებრივ პორტი 80.ასე რომ, ამ შემთხვევაში თქვენ გჭირდებათ (პორტის რუკების დაყენებით) დაკავშირება

არა

mail.ru-ზე (და მსგავს) და მიუთითეთ თქვენი საკუთარი კომპიუტერი სერვერად:

127.0.0.1: ადგილობრივი პორტი სადაც localport არის პორტის ნომერი, რომელიც მითითებულია პორტის რუკების კონფიგურაციისას. მაგალითად, ეს შეიძლება იყოს პორტი 1234.

ანუ, თუ თქვენ გააკეთეთ პორტის რუკინგი ვებსაიტზე, მაშინ უნდა დაწეროთ: 127.0.0.1 http://127.0.0.1:1234/

თუ თქვენ აყენებთ ფოსტას, მიუთითეთ როგორც ფოსტის სერვერი - როგორც ფოსტის მისაღებად, ასევე გაგზავნისთვის. და არ დაგავიწყდეთ იპოვოთ პორტის ნომრის პარამეტრები (POP3 და SMTP) თქვენს ელ.ფოსტის კლიენტში და შეცვალოთ ისინი თქვენი პარამეტრების შესაბამისად პორტის რუკებში!საწარმოს მენეჯმენტის სწრაფი და ხარისხიანი გადაწყვეტილების მიღება დამოკიდებულია კომპანიაში კარგად ჩამოყალიბებულ მენეჯმენტის აღრიცხვის სისტემაზე.

  • მართვის აღრიცხვა
  • აქ, ზოგადად მიღებული პრაქტიკის შესაბამისად, ამ ტერმინის გამოყენება ნიშნავს აღრიცხვისა და ფინანსური მართვის პრინციპების გამოყენებას საწარმოს შემდეგ სფეროებში პრობლემების გადასაჭრელად:
  • ბიზნეს სტრატეგიის შემუშავება და განხორციელება;
  • დაგეგმვისა და კონტროლის განხორციელება;
  • რესურსების ეფექტური გამოყენება;
  • საოპერაციო ეფექტურობის გაზრდა;

მატერიალური და არამატერიალური აქტივების შენარჩუნება;

ვინაიდან საწარმოს ეკონომიკური საქმიანობის შესახებ მონაცემების შეგროვება და შენახვა საკმაოდ შრომატევადი და ძვირადღირებული პროცესია, ამ ინფორმაციის ეფექტური გამოყენება ხდება მნიშვნელოვანი ამოცანა და კონკურენტული უპირატესობა. შეგროვებული ინფორმაციის მოცულობა განისაზღვრება კომპანიის მენეჯმენტის მიერ, როგორც კომპრომისული გადაწყვეტა ინფორმაციის გამჟღავნების შესახებ სახელმწიფო და მარეგულირებელი ორგანოების მოთხოვნებსა და საწარმოს საქმიანი საქმიანობის პროცესში წარმოქმნილი ინფორმაციის მაქსიმალურ მოცულობას (ფინანსური, ტექნოლოგიური, სტატისტიკური) შორის. .

საქმიანობის პროცესში გენერირებული ინფორმაციის გამოყენების ყველაზე ეფექტური გზაა მონაცემთა საწყობის შექმნა (Datewarehouse), რომლის საფუძველზეც, OLAP ტექნოლოგიების გამოყენებით, ნებისმიერ საწარმოს მენეჯერს შეუძლია შექმნას ანგარიში, რათა გააანალიზოს მონაცემები მისთვის საჭირო ანალიტიკურ კონტექსტში. და თავად მიაწოდოს ინფორმაცია გადაწყვეტილების მისაღებად.

თუმცა, ამჟამად, ყველაზე გავრცელებულ ვარიანტად რჩება საინფორმაციო სისტემის შექმნა, რომელშიც მონაცემები გროვდება და, როგორც წესი, არსებობს მორგებული ანგარიშის გენერატორი, რომელიც ავსებს სისტემის შემქმნელის მიერ მოწოდებულ სტანდარტულ ანგარიშებს.

როგორც წესი, პროგრამული უზრუნველყოფის შემქმნელები მომხმარებლებს სთავაზობენ რეგულარულად განახლებულ გარე (მარეგულირებელი ორგანოებისთვის) ანგარიშგების ფორმებს (ბუღალტრული აღრიცხვა და საგადასახადო) და აცხადებენ საწარმოს მიერ მოთხოვნილი ნებისმიერი ტიპის მენეჯმენტის ანგარიშების შექმნის შესაძლებლობას. თუმცა, გენერირებული ანგარიში სულაც არ არის კარგად ჩამოყალიბებული.
საწარმო მარტო რჩება ანგარიშების სწორად გენერირების (შევსების) პრობლემასთან.

საწარმოს მიერ საერთაშორისო სტანდარტების მიხედვით ანგარიშგების გენერირების აუცილებლობამ მხოლოდ სიტუაციის გამწვავება შეიძლება.

ყველა შემთხვევაში ანგარიშგების საკვანძო პუნქტი არის საინფორმაციო სისტემებში რწმუნებათა სიგელებისა და ანგარიშგების ფორმების შესაბამის ველებს შორის კავშირის შექმნის აუცილებლობა.

ურთიერთობის ორგანიზების შემდეგი ვარიანტებია შესაძლებელი:

  • ცხრილის სახით, რომელიც აღწერს კავშირებს ან შესაბამისობას მოხსენების ველებსა და სისტემაში არსებულ მონაცემებს შორის (მოჰყვება ალგორითმის დაწერა ანგარიშის ავტომატური წარმოქმნისთვის).
  • საჭირო ინფორმაციის ხელით შერჩევით (ანგარიშის ავტომატიზაციის შესაძლებლობის სრული არარსებობით).
  • შერეული ვერსია, რომელიც მოითხოვს ურთიერთდაკავშირების ცხრილების არსებობას და ხელით დეკოდირებას და კორექტირებას მოხსენებების გენერირებისას.

საინფორმაციო აღრიცხვის სისტემების ურთიერთობის ორგანიზების პირველ ვარიანტს ანგარიშგების ფორმებთან (ურთიერთობების აღწერის ცხრილების საშუალებით) ეწოდება ” რუკების შედგენა“.

რუქა (ფართო გაგებით) არის მონაცემების ტრანსფორმაცია ერთი ფორმიდან მეორეში. ბუღალტრული აღრიცხვისთვის რუქა არის ბუღალტრული აღრიცხვის ანგარიშების შესაბამისობის ცხრილის შედგენა სხვადასხვა ანგარიშების სქემებიდან, მაგალითად, რუსული ანგარიშების სქემა და GAAP (IFRS) ანგარიშთა სქემა (ან მენეჯმენტის აღრიცხვის ანგარიშთა სქემა).

მაგალითი 1. კომუნიკაციის ორგანიზაციის შერეული ვერსია.

კომპანიების უმეტესობა ამზადებს ანგარიშებს, მაგალითად, IFRS-ის მიხედვით, ტრანსფორმაციის გზით. მეთოდი ეფუძნება მიდგომას, რომლის მიხედვითაც ხდება რუსული სტანდარტების მიხედვით გენერირებული ინფორმაციის ანალიზი და კორექტირება IFRS-თან შესაბამისობაში მოყვანის მიზნით.

მოხსენება გარდაიქმნება მინიმუმ ოთხ ეტაპად რუკების ცხრილებისა და ხელით კორექტირების გამოყენებით.

1 ეტაპი.ბალანსის და მოგების ანგარიშგების სტრუქტურული ტრანსფორმაცია. შედეგი არის ფინანსურ ანგარიშგებაში ცალკეული პუნქტების გადაჯგუფება და გაერთიანება, რათა მომზადდეს მონაცემთა ბაზა შემდგომი კორექტირების ჩანაწერებისთვის. ამავდროულად, რუკების ცხრილი შეიცავს RAS-ის ფარგლებში ფინანსური ანგარიშგების ინდიკატორებს და მათ ასახვას IFRS-ის მიხედვით შუალედურ ანგარიშგებაში.

მე-2 ეტაპი.კორექტირების ჩანაწერების განხორციელება, რომელიც მიზნად ისახავს ხარისხობრივი განსხვავებების აღმოფხვრას რუსულ ანგარიშგებასა და ფასს-ის მიხედვით ანგარიშგებას შორის. კეთდება ხელით ტრანსფორმაციის სპეციალისტის მიერ.

მე-3 ეტაპი.ფასს-ის მიხედვით ანგარიშგების მომზადება ტრანსფორმირებულ ბალანსებზე, მოგება-ზარალის ანგარიშგებაზე და სხვა ფორმებზე დაყრდნობით. რუკების ცხრილი მოიცავს IFRS-ის მიხედვით შუალედურ საანგარიშო ციფრებს და ტრანსფორმაციის სპეციალისტის მიერ გაკეთებულ კორექტივებს.

მე-4 ეტაპი.მოხსენების აღწერითი ნაწილის მომზადება.

ცხრილი 1. რუსული ანგარიშთა გეგმის ურთიერთმიმართების ილუსტრაცია GAAP-ის ანგარიშთა გეგმასთან (ამონაწერი)

საინვესტიციო განყოფილება (დასახადი)

ინვესტმ. გამგზავრება (გამოქვითვა)

შეფასების დეპარტამენტი

ვალუატ განყოფილება. (გამოქვითვის)

კვლევის დეპარტამენტი (დასახადი)

კვლევის განყოფილება. (გამოქვითვის)

დღგ გაყიდვებზე დღგ

დღგ - მომსახურება

მინუს მომსახურება დღგ

მთლიანი შემოსავალი

მთლიანი გაყიდვები/შემოსავლები

გაყიდვების ღირებულება

ინვესტმ. გამგზავრება (გამოქვითვა)

დარიცხული სხვა გადასახადები (TsP)

სხვა გადასახადების შეგროვება

სავაჭრო მარჟა (ფასდაკლება, კონცხი)

სავაჭრო მარჟა (ფასდაკლება, დამატება)

მიმწოდებლის ფასდაკლება ტრანსპორტირების ხარჯების ანაზღაურებაზე

მომწოდებლების ფასდაკლება ტრანსპორტირების ხარჯების ანაზღაურებაზე

ძირითადი საშუალებების გაყიდვა და გასხვისება

ძირითადი საშუალებების გასხვისება

სხვა აქტივების გაყიდვა

სხვა აქტივების გასხვისება

ძირითადი წარმოება

ძირითადი წარმოება

დამხმარე წარმოება

დამატებითი პროდუქცია

ზოგადი წარმოების ხარჯები

ზოგადი წარმოების ხარჯები

მარკეტინგის დეპარტამენტი (გადასახადი)

ბაზრიდან გამგზავრება (გამოქვითვა)

მარკეტინგის დეპარტამენტი (არადაბეგვრის)

ბაზრიდან გამგზავრება (არააღსანიშნავი)

გაყიდვები - ძირითადი საქმიანობა

გაყიდვები/შემოსავლები – ძირითადი საქმიანობა

გაყიდვების ღირებულება

მთლიანი მოგება

წმინდა გაყიდვები

ზოგადი, გასაყიდი და ადმინისტრაციული ხარჯები

იყიდება ზოგადი და ადმინისტრაციული ხარჯები

რუკების ცხრილები ასევე გამოიყენება კორპორატიული მენეჯმენტის ანგარიშგების გენერირებაში (ჩვეულებრივ ჰოლდინგის კომპანიებში და ფილიალების მქონე კომპანიებში).

რუკების დაყენების საფუძველია ბუღალტრული აღრიცხვის მონაცემების გარკვეული გზით დაჯგუფება (კომპანიის სტანდარტების მიხედვით).

მარტივად რომ ვთქვათ, კორპორატიული ანგარიშგების ხაზის შექმნისას ჩვენ ზუსტად მივუთითებთ რა ბრუნვები (ან ანგარიშის ნაშთები (ქვეანგარიშები)) და რა თანმიმდევრობით უნდა გამოიყენოს ავტომატური აღრიცხვის სისტემა ამ ხაზის შესაქმნელად.

რუქა არის ის წესები, რომლებიც თქვენ დაწესეთ, რომლის მიხედვითაც გენერირებული იქნება თქვენთვის საჭირო ანგარიშები. რუკების ხაზების გენერირების ტექნიკური პრინციპები ყველა საანგარიშო ფორმისთვის ერთნაირია, განსხვავება მხოლოდ შინაარსშია.

ამასთან დაკავშირებით უნდა აღინიშნოს, რომ რუკების კონფიგურაცია უნდა მოხდეს კვალიფიციური სპეციალისტების მიერ და, რაც მთავარია, ერთიანი მეთოდოლოგიური წესით. რუკების პროცესი საკმაოდ დიდ დროს მოითხოვს.

მენეჯმენტის აღრიცხვის (ისევე როგორც ბუღალტრული აღრიცხვის) საფუძველია: ანგარიშთა გეგმა, ბიუჯეტის მუხლები და სხვადასხვა ანალიტიკური საცნობარო წიგნები.

თუმცა, მენეჯმენტის ანგარიშთა სქემა მნიშვნელოვნად განსხვავდება სტანდარტული ანგარიშთა გეგმისგან, რომელიც გამოიყენება აღრიცხვისთვის, რადგან მართვის ანგარიშთა გეგმის ზოგიერთ ანგარიშს (შემდგომში MCA) შეიძლება ჰქონდეს უფრო დეტალური ანალიტიკა, და მეორე ნაწილს შეიძლება ჰქონდეს უფრო სრულყოფილი ანალიტიკა (ეს ყველაფერი დამოკიდებულია კონკრეტულ საწარმოებზე). განსხვავებულია ანალიტიკური საცნობარო წიგნების სტრუქტურაც, ვინაიდან მენეჯმენტის ანგარიშები მოითხოვს სააღრიცხვო ინფორმაციის წარმოდგენას სრულიად განსხვავებულ კონტექსტში, ვიდრე სააღრიცხვო ანგარიშებისთვის.

რა თქმა უნდა, პრაქტიკაში, ინდიკატორების დამაკავშირებელი ( რუკების შედგენა) მენეჯმენტის, საგადასახადო და ბუღალტრული (ფინანსური) აღრიცხვა უამრავ პრობლემას იწვევს.
მოდით შევხედოთ ზოგიერთ მათგანს.

1. კომპანიის სამუშაო ანგარიშთა გეგმაში (შემდგომში WCA) ანალიტიკის ნაკლებობა.

ეს გასაგებია, რადგან საწარმოებს, რომლებიც შეიქმნა ერთი დღის განმავლობაში, ყოველთვის არ ჰქონდათ გრძელვადიანი სტრატეგია და აქციონერთა ინტერესები ყოველთვის არ იყო დაცული. დღეს უკვე შეიცვალა ბიზნესის კულტურა. აქციონერები, სახელმწიფოს ჩათვლით, მზარდ ინტერესს იჩენენ, თუ რამდენად კომპეტენტურად და ოსტატურად მართავენ საწარმოს ყველა დონის მენეჯერები.
ამ პრობლემის გადაწყვეტა არის კომპანიის არსებული სალარო აპარატის სისტემის გაფართოება და დამატება და ახლად დანერგილი ანგარიშების (ქვეანგარიშების) შესახებ ინფორმაციის ეტაპობრივი დაგროვება.

საანგარიშო გეგმის აგების ძირითადი მიდგომების გააზრება, ისევე როგორც კომპანიაში ერთიანი აღრიცხვის სისტემის სამი კომპონენტის (ფინანსური, საგადასახადო, მენეჯმენტი) გააზრება, წინასწარ განსაზღვრავს აუცილებლობას გამოყოს სამი ძირითადი კომპონენტი ფინანსური აღრიცხვის სისტემის სისტემური მიდგომით. კომერციული ორგანიზაციის, კერძოდ:

  1. ფინანსური (საბუღალტრო);
  2. გადასახადი;
  3. მენეჯერული.

RPS-ისადმი სისტემატური მიდგომის ფინანსური, საგადასახადო და მართვის კომპონენტების შესაძლო ინტერპრეტაციები წარმოდგენილია ქვემოთ.

ფინანსური (საბუღალტრო) კომპონენტი. RPS-ის გამოყენებამ უნდა უზრუნველყოს გარე ფინანსური ანგარიშგების ყველა (გამონაკლისის გარეშე) სააღრიცხვო და ანალიტიკური ინდიკატორის გენერირების შესაძლებლობა და განმარტებითი შენიშვნები გენერალური წიგნის ანგარიშების კონტექსტში ანგარიშგების თარიღისთვის. გარე სააღრიცხვო ანგარიშების ფორმირებაში ჩართული RPS-ის სააღრიცხვო ანგარიშების ბლოკი არის ფინანსური ანგარიშები. თავის მხრივ, ფინანსური ანგარიშები იყოფა ანალიტიკურ და სინთეტიკად. RPS-ის ფინანსური აღრიცხვის ქვეანგარიშები შუალედურია ანალიტიკურ და სინთეზურს შორის. უფრო მეტიც, ფინანსური ანალიტიკური და სინთეზური ანგარიშები, ისევე როგორც ქვეანგარიშები, შეიძლება წარმოადგენდეს RPS-ის მართვის კომპონენტის განუყოფელ ნაწილს. მაგალითად, მენეჯმენტის გადაწყვეტილებების მისაღებად მნიშვნელოვანია ფინანსური ანგარიშის 90 „გაყიდვები“ ცალკეულ ქვეანგარიშებზე ასახული მონაცემები.

RPS-ის ფინანსური ანგარიშების ჯგუფის შექმნისას უნდა დაკმაყოფილდეს შემდეგი მოთხოვნები:

  1. გარე ბუღალტრული აღრიცხვის ანგარიშგების მუხლებსა და ფინანსური ანგარიშის ნაშთებს შორის უნდა დადგინდეს კორესპონდენცია, რომელიც არ საჭიროებს დამატებით ლოგიკურ ოპერაციებს საანგარიშგებო პუნქტის ტიპის დასადგენად;
  2. RPS-ის ფინანსური ანგარიშების მინიმალური შესაძლო ნაკრები მიზანმიმართულად უნდა ჩამოყალიბდეს გარე ფინანსური ანგარიშგების ინდიკატორების შემადგენლობის საფუძველზე;
  3. თითოეული გარე ფინანსური ანგარიშგების ინდიკატორი უნდა იყოს მიღებული ფინანსური აღრიცხვის მონაცემებიდან RPS-ის გამოყენებით, ყოველგვარი დამატებითი გაშიფვრისა და კორექტირების გარეშე.

საგადასახადო კომპონენტი.სააღრიცხვო სისტემაში RPS-ის გამოყენება იძლევა საგადასახადო ბაზის და საგადასახადო მიზნებისათვის მოგების ოდენობის გამოთვლის შესაძლებლობას თავის მოთხოვნების შესაბამისად. 25 რუსეთის ფედერაციის საგადასახადო კოდექსი. RPS-ისადმი სისტემატური მიდგომის საგადასახადო კომპონენტის განხორციელება მოიცავს:

  1. ხარჯებისა და შემოსავლების ანალიტიკური ფინანსური და საგადასახადო აღრიცხვის ორგანიზება, რათა დადგინდეს მათი გავლენა კომერციული ორგანიზაციის მოგების გადასახადის გამოანგარიშების საგადასახადო ბაზის ოდენობაზე ფინანსური ანგარიშების დეტალური აღწერა (01 - 99) RPS;
  2. საგადასახადო ანგარიშების სიის შემუშავება (მაგალითად, 101–199). მათი განხორციელება შესაძლებელს გახდის ფინანსური და საგადასახადო აღრიცხვის ობიექტების სააღრიცხვო მონაცემებში გადახრების აღრიცხვას ფინანსური აღრიცხვისა და ფინანსური ანგარიშგების საფუძველზე საგადასახადო აღრიცხვისა და საგადასახადო ანგარიშგების შესაქმნელად;
  3. წესების შემუშავება, რომელიც შესაძლებელს გახდის საგადასახადო კომპონენტის ზემოქმედების კორექტირებას ერთიან ინტეგრირებულ სააღრიცხვო ანგარიშგებაზე, რათა აღმოიფხვრას საანგარიშგებო (შედეგი) აღრიცხვისა და ანალიტიკური მაჩვენებლების დუბლირება.

მართვის კომპონენტი. RPS-ში, მენეჯმენტის შიდა ანგარიშგების და მენეჯმენტის აღრიცხვის შედეგად მიღებული აღრიცხვისა და ანალიტიკური ინდიკატორების მისაღებად, გამოიყოფა მენეჯმენტის ანგარიშების ბლოკი (მაგალითად, 201–299). ამ მენეჯმენტის ანგარიშებზე, 01–99 ფინანსურ ანგარიშებზე ორჯერადი კორექტირება ხდება შიდა მენეჯმენტის ანგარიშგების მომხმარებელთა მოთხოვნების საფუძველზე. სამომავლოდ მენეჯმენტის ანგარიშების 201–299 მონაცემები, გარკვეული წესების გამოყენებისას, ავსებს (ასწორებს) მონაცემებს ფინანსურ ანგარიშებზე 01–99. ასეთი ქმედებების შედეგია შიდა მენეჯმენტის ანგარიშგების ინდიკატორები.

მართვის ასპექტის განხორციელება RPS-ის ფორმირების სისტემატური მიდგომით მოიცავს:

  1. სააღრიცხვო პოლიტიკის დებულებები (გარე და შიდა), სააღრიცხვო პუნქტების ამოცნობის კრიტერიუმების გარკვევა, მათი შეფასება, აგრეთვე მენეჯმენტის ანგარიშგების პუნქტების შინაარსის გამჟღავნება;
  2. ერთიანი RPS-ის მართვის ანგარიშების ქვესისტემა, რომელიც აუცილებელია მენეჯმენტის აღრიცხვის მონაცემების ფინანსური აღრიცხვის მონაცემებიდან გადახრების აღრიცხვისა და შეჯამებისთვის;
  3. მენეჯმენტის ანგარიშგების ფორმების ალტერნატიული ფინანსური ანგარიშგების შემადგენლობა.

გარდა ამისა, RPS-ისთვის მენეჯმენტის ანგარიშების ბლოკის ფორმირებისას აუცილებელია ცხრილის შემუშავება „საფინანსო და მენეჯმენტის ანგარიშების ქვესისტემებს შორის ურთიერთობა (დასახვა) მენეჯმენტის ალტერნატიული ანგარიშგების ინდიკატორებთან“.

ცხრილი 2. რუსული სააღრიცხვო (ფინანსური) აღრიცხვის ოპერაციების რუკა კორპორატიული ანგარიშგების ფორმის "ბალანსის" ხაზების გენერირებისთვის (ამონაწერი)

სადებეტო ბრუნვა

OS ორგანიზაციაში

OS ჯგუფები:<все>

ინვესტიცია არამიმდინარე
აქტივები

არ შეიცვალოს

განყოფილებები:<все>

არანაირი ცვლილებები

პროექტის კოდი:<все>

არ გაიშალოს

მონაწილეობს ჯგუფურ კონტროლში პლუსით

ძირითადი საშუალებები: სხვა ძირითადი საშუალებები

სამშენებლო პროექტები (p): ძირითადი საშუალებების შემოსავლის ტიპი (მესამე პირებისაგან მიღება)

სადებეტო ბრუნვა

OS რეგისტრაციის გარეშე

OS ჯგუფები:<все>

არ შეიცვალოს

განყოფილებები:<все>

არანაირი ცვლილებები

პროექტის კოდი:<все>

არ გაიშალოს

მონაწილეობს ჯგუფურ კონტროლში პლუსით

ძირითადი საშუალებები: სხვა ძირითადი საშუალებები

სამშენებლო პროექტები (p): ძირითადი საშუალებების შემოსავლის ტიპი (მესამე პირებისაგან მიღება)

სადებეტო ბრუნვა

MC ორგანიზაციაში

ინვესტიცია გრძელვადიან აქტივებში

არ შეიცვალოს

არანაირი ცვლილებები

არ გაიშალოს

მონაწილეობს ჯგუფურ კონტროლში პლუსით

ძირითადი აქტივ(ებ)ი: ფიქსირებული შემოსავლის ტიპი (მესამე პირებისგან მიღებული ქვითარი)

სადებეტო ბრუნვა

MC, წინა. დროებით მფლობელობაში

კონტრაქტორები:<все>

ინვესტიცია არამიმდინარე
აქტივები

არ შეიცვალოს

შეთანხმებები:<все>

არანაირი ცვლილებები

პროექტის კოდი:<все>

არ გაიშალოს

მონაწილეობს ჯგუფურ კონტროლში პლუსით

ძირითადი საშუალებები: სხვა ძირითადი საშუალებები

სამშენებლო პროექტები (p): ReceiptOS-ის ტიპი (მიღება მესამე მხარისგან)

სადებეტო ბრუნვა

MC, წინა. დროებითი გამოყენებისთვის

კონტრაქტორები:<все>

ინვესტიცია არამიმდინარე
აქტივები

არ შეიცვალოს

შეთანხმებები:<все>

არანაირი ცვლილებები

პროექტის კოდი:<все>

არ გაიშალოს

მონაწილეობს ჯგუფურ კონტროლში პლუსით

ბალანსის ხაზი

საბუღალტრო ანგარიში

შერჩევა 1 ქვეკონტოს მიხედვით

კორ. ბუღალტრული ანგარიში

შერჩევა 1 ქვეკონტოს მიხედვით

შერჩევის ფორმულა

შერჩევა ქვეკონტო 2-ით

შერჩევა ქვეკონტო 2-ით

ინვერსიული ნიშანი

შერჩევა ქვეკონტო 3-ით

შერჩევა ქვეკონტო 3-ით

დღგ-ს აღრიცხვა

შერჩევა 4 ქვეკონტოს მიხედვით

შერჩევა 4 ქვეკონტოს მიხედვით

გაფართოება

შერჩევა ქვეკონტოს მიხედვით 5

შერჩევა ქვეკონტოს მიხედვით 5

ჯგუფურ ანგარიშში მონაწილეობა

BL00102 ექსპლუატაციაში შესული (+)

ექსპლუატაციაში შესვლა (+)

ექსპლუატაციაში შესვლა (+)

ექსპლუატაციაში შესვლა (+)

ექსპლუატაციაში შესვლა (+)

ექსპლუატაციაში შესვლა (+)

ეჭვგარეშეა, გადაწყვეტილება კომერციულ ორგანიზაციაში ინტეგრირებული აღრიცხვის (ფინანსური, საგადასახადო და მენეჯმენტის) სისტემის შექმნისა და სტანდარტულ ანგარიშთა სქემაზე დაფუძნებული ასეთი სისტემის ერთიანი სამუშაო ანგარიშების შემუშავების შესახებ არ არის ერთმნიშვნელოვანი. თეორიულად, შემდეგი მიდგომები შეიძლება გამოყენებულ იქნას კომერციული ორგანიზაციისთვის სამუშაო ანგარიშების სქემის შესაქმნელად (აღრიცხვის სამი ტიპის ანგარიშთა სქემების გამოყენების შემთხვევაში):

  • ფინანსური, საგადასახადო და მართვის აღრიცხვის ერთიანი ინტეგრირებული ანგარიშთა გეგმა;
  • ფინანსური და საგადასახადო აღრიცხვის ინტეგრირებული ანგარიშთა გეგმა, მართვის ბუღალტრული აღრიცხვის ავტონომიური ანგარიშთა გეგმა;
  • ფინანსური და მენეჯმენტის აღრიცხვის ინტეგრირებული ანგარიშთა სქემა; საგადასახადო აღრიცხვის ავტონომიური ანგარიშთა გეგმა;
  • საგადასახადო და მართვის აღრიცხვის ინტეგრირებული ანგარიშთა სქემა; ფინანსური აღრიცხვის ავტონომიური ანგარიშთა გეგმა;
  • ფინანსური, საგადასახადო და მენეჯმენტის აღრიცხვის ავტონომიური ანგარიშების სქემა.

2. საცნობარო წიგნების და კლასიფიკატორების აგების პრობლემები, რომელთაგან მთავარია:

  • დირექტორიებში ინფორმაციის დუბლირება;
  • ტერმინების დირექტორიების არასწორი კოდირება.

ხშირად ხდება, მაგალითად, რომ არ არსებობს კოდებისა და სახელების მინიჭების ერთიანი პროცედურა, ერთი და იგივე კონტრაგენტი შეიძლება იყოს მითითებული დირექტორიაში ორჯერ (შპს „რომაშკა“ და შპს „რომაშკა“, სხვა ვარიანტები და კომბინაციები) ან სხვადასხვა სახელწოდებით (მაგალითად, ქვემოთ); სრული და ქვემო შემოკლებით). არასტრუქტურირებული დირექტორიების გამოყენებით საინფორმაციო სისტემაში საჭირო მონაცემების ძიება საკმაოდ რთული და მოუხერხებელია. გარდა ამისა, საცნობარო წიგნებში არეულობა იწვევს შეცდომებს მოხსენებაში.

მაგალითად, თითოეული საწარმო, რომელიც არის ჰოლდინგის ნაწილი, გარკვეულწილად, დამოუკიდებლად ინახავს პირველადი ჩანაწერებს, ავითარებს და აახლებს საკუთარ დირექტორიას. ამ სამუშაოს საწარმოებში ჩვეულებრივ ახორციელებენ სხვადასხვა სერვისები: ფინანსური განყოფილებები, მარკეტინგის დეპარტამენტი, იურიდიული დეპარტამენტი და ა.შ. ეს ყველაფერი საშუალებას გაძლევთ მიიღოთ ოპტიმალური მენეჯმენტის გადაწყვეტილებები კონკრეტულ საწარმოში. თუმცა, მთლიანობაში ჰოლდინგის ამჟამინდელი მდგომარეობის გაგება და ანალიზის უნარი ძალიან რთულია ინფორმაციის არასტრუქტურირებული და ერთიანი ხასიათის გამო.

კიდევ ერთი გავრცელებული სიტუაცია: ერთ-ერთ კომპანიაში, მარკეტინგის დეპარტამენტის რეგულარული მოთხოვნის გამო, გაყიდვების სტრუქტურის შესახებ ბუღალტრული აღრიცხვის განყოფილებაში, ბუღალტერებს უწევდათ ინფორმაციის ხელით შეგროვება საჭირო ინფორმაციის განყოფილებებში. ეს განპირობებული იყო იმით, რომ გაყიდვების განყოფილება ყოველთვის არ შედიოდა დირექტორიაში საჭირო ანგარიშების ავტომატური წარმოქმნისთვის საჭირო მონაცემებს.

– ავტომატური აღრიცხვის სისტემის ნაწილების შეუთავსებლობა.
მაგალითად, მიწოდების განყოფილება ინახავს ITC-ის რეესტრებს და კატალოგებს ქეში პროგრამაში, ხოლო საბუღალტრო (ფინანსური) და მენეჯმენტის რეესტრები და დირექტორიები ინახება SAP R3-ში და იქ ასევე იქმნება კომპანიის ანგარიშგება. ამ პროგრამებში მონაცემთა პრეზენტაციის ფორმატები განსხვავებულია, ამიტომ მათ შორის მონაცემების კონვერტაცია რთულია და ზოგიერთ შემთხვევაში პირდაპირ შეუძლებელი.

საცნობარო წიგნების შემუშავებისას უნდა დაიცვან შემდეგი პრინციპები.

– დირექტორიების დეტალები და სტრუქტურა უნდა იყოს ისეთი, რომ შესაძლებელი იყოს მონაცემთა სწრაფად დამუშავება და საჭირო ანგარიშების გენერირება.

თუ საცნობარო წიგნი არ არის საკმარისად დეტალური, ეს გაართულებს საჭირო ინფორმაციის მოპოვებას. მაგალითად, თუ წლის შუა რიცხვებში უნდა გაიგოთ მარკეტინგის დეპარტამენტის მიერ შეკვეთილი სარეკლამო ბროშურების წარმოების ხარჯები და მანამდე ყველა მარკეტინგული ხარჯი ერთად იყო გათვალისწინებული, მაშინ მოგიწევთ დამატებითი არჩევანის გაკეთება. ირიბ მტკიცებულებებზე დაფუძნებული ინფორმაცია (მაგალითად, სტამბების მიერ). (ჰოლდინგებისთვის ან კომპანიების ჯგუფებისთვის, დირექტორიების დეტალები დამოკიდებული იქნება არა მხოლოდ ცალკეული საწარმოს, არამედ მთელი ჰოლდინგის ინფორმაციის სტრუქტურირების მოთხოვნებზე.)

თუ საცნობარო წიგნი ძალიან დეტალურია, მაშინ რთულია მისი ინფორმაციის შევსება და ნამუშევარში გამოყენება. მაგალითად, დირექტორია „ფულადი სახსრები“ შეიძლება შეიცავდეს ათასზე მეტ სხვადასხვა გადახდის მიზანს. გენერალური დირექტორისთვის ძირითადი გადახდებისთვის ფულადი სახსრების მოძრაობის ანგარიშის მომზადებას დიდი დრო დასჭირდება, რადგან თქვენ მოგიწევთ საჭირო დაჯგუფების განხორციელება (ინდიკატორების აგრეგაცია ან საჭირო ინფორმაციის შერჩევა ზედმეტი ინფორმაციის მასივიდან). გარდა ამისა, ინფორმაციის შეყვანისას მომხმარებელმა შეიძლება არ იცოდეს, სად შეიტანოს კონკრეტული გადახდა. ეს აუცილებლად გამოიწვევს საქონლის არასწორ შერჩევას დირექტორიადან ან გადახდის კლასიფიკაციას, როგორც "სხვა". შეიძლება რეკომენდირებული იყოს დეტალურად აღწეროთ რომელი სააღრიცხვო ობიექტები შეიძლება აისახოს დირექტორიას თითოეული ხაზისთვის.

– დირექტორიაში ელემენტების კოდირებამ უნდა გააუქმოს ინფორმაციის დუბლირება და ხელი შეუწყოს დირექტორიასთან მუშაობის დაჩქარებას. მონაცემთა დაშიფვრამდე აუცილებელია განისაზღვროს, რომელ საწარმოს საინფორმაციო სისტემაში იქნება შენახული საცნობარო დირექტორიები. გარკვეული კოდების გამოყენების შესაძლებლობა დიდწილად იქნება დამოკიდებული სისტემის შესაძლებლობებზე. ასეთი სისტემა შეიძლება იყოს სააღრიცხვო პროგრამა, საიდანაც ინფორმაცია ავტომატურად გადაეცემა სხვა სისტემებს, რომლებიც იყენებენ იმავე კატალოგებს.

- თქვენ უნდა მოერიდოთ მსგავსი კოდირების გამოყენებას სხვადასხვა დირექტორიაში.
მაგალითად, თუ გაყიდვების გაანალიზებისას მარკეტინგის დეპარტამენტი განსაზღვრავს მყიდველთა ჯგუფებს არა რეგიონის, არამედ ქალაქისა და რეგიონის მიხედვით, მაშინ ანალიზის ჯგუფები არ უნდა ემთხვეოდეს ფედერალური რეგიონების კოდებს. წინააღმდეგ შემთხვევაში, ეს გამოიწვევს შეცდომებს ინფორმაციის შეყვანისას. ამრიგად, კოდი "77" დაყენებულია მოსკოვისთვის, ხოლო ბელგოროდის რეგიონი ჩამოთვლილია ამ კოდის ქვეშ საწარმოში. შედეგად, თანამშრომელმა შეიძლება მიაკუთვნოს გარკვეული ტიპის გაყიდვები არა რეგიონს, არამედ მოსკოვს და ინფორმაცია დამახინჯდეს. ამ შემთხვევაში, რეკომენდებულია სხვადასხვა სიგრძის კოდების შექმნა, მაგალითად, მარკეტინგული ჯგუფების დაშიფვრა, სამი ციფრის გამოყენება (კოდი "770" კლიენტებისთვის ბელგოროდის რეგიონში);

იდეალურ შემთხვევაშიდირექტორია კოდი არ უნდა აღემატებოდეს 8 სიმბოლოს. წინააღმდეგ შემთხვევაში, მონაცემების შეყვანა რთულია, რადგან კოდები ერთმანეთისგან ადვილად არ გამოირჩევა.

– ურთიერთდაკავშირებული დირექტორიების შექმნისას უნდა აღმოიფხვრას დუბლირება. დირექტორიებში შეცდომების თავიდან ასაცილებლად (მათი შევსების არასისტემატური და ქაოტური ხასიათის გამო), აუცილებელია მათში შემავალი ინფორმაციის ანალიზი, რათა დადგინდეს მონაცემები, რომლებიც შეიძლება შეიქმნას ცალკეული დირექტორიების მიერ.

– ერთიანი დირექტორია სისტემის შემუშავებისას აუცილებელია მისი დაცვა არაავტორიზებული ცვლილებებისგან. საკმარისად მაღალი უსაფრთხოების მიღწევა ჩვეულებრივ შეიძლება მიღწეული იყოს როგორც მომხმარებლის იდენტიფიკაციის მეთოდების გამოყენებით, ასევე მომხმარებლის ინფორმაციაზე წვდომის უფლებების დელიმიტაციით. ყველაზე ხშირად, დირექტორიების შესაქმნელად და შესანარჩუნებლად, კომპანიები შეიმუშავებენ რეგულაციებს, რომლებიც განსაზღვრავენ მათ, ვინც პასუხისმგებელნი არიან დირექტორიებში ინფორმაციის შეტანასა და მის შეცვლაზე.

დასასრულს, უნდა ითქვას, რომ რუკების დაყენებამდე აუცილებელია ზემოაღნიშნული პრობლემების გადაჭრა. წინააღმდეგ შემთხვევაში, ნაკლებად სავარაუდოა, რომ მენეჯმენტის ანგარიშგების გენერირება შესაძლებელია. მაშინაც კი, თუ მოხსენება იქმნება, ალბათობა იმისა, რომ ის სწორი იქნება, პრაქტიკულად ნულის ტოლია. მიზეზები აშკარაა:

  1. შეცდომები, რომლებიც გამოჩნდება ადრე აღწერილი პრობლემების გამო.
  2. ბუღალტრული შეცდომები (როგორც მეთოდოლოგიური, ასევე აღრიცხვის). ხალხი ინახავს ჩანაწერებს, ეს არ დაგავიწყდეთ.
  3. შემდეგი, უნდა მივცეთ სხვადასხვა ტიპის შეცდომების გრძელი სია, რომლის წყარო იქნება 1 და 2 პუნქტების სუპერპოზიციის შედეგები. თუმცა, ჩვენი აზრით, ეს ზედმეტია.


რაიმე შეკითხვა?

შეატყობინეთ შეცდომას

ტექსტი, რომელიც გაეგზავნება ჩვენს რედაქტორებს: