Изтриване на обект в възел за обмен на данни

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

Специфична ситуация: по някаква причина е необходимо обменът (и ако имаше директен или отдалечен достъп до отдалечената база данни, тогава въпросът просто би отсъствал) да изтрие някакъв обект от отдалечената база данни (DB).

Опция 1. Използване на обект Изтриване на обект. Изводът е, че намираме връзка към обекта и го изпращаме на отдалечена база чрез размяна. Нещо такова:

Node = ExchangePlans.Name на необходимияExchangePlan.FindByCode ("02");
Връзка = Directories.Nomenclature.FindByCode ("000000026");
Deletion = Нов DeletionObject (Връзка);
Delete.Write ();
Exchange Plans.RegisterChanges (Node, Delete);

Но при този код ще възникне следният проблем - ако има ред Изтриване Write (); обектът в текущата база ще бъде изтрит (и това не е необходимо). Ако няма ред Delete.Write (); данните ще останат в отдалечената база данни, тоест задачата няма да бъде решена.

Сега, ако в текущата база данни няма такъв обект, тогава можете да използвате следното:

Node = ExchangePlans.Name на необходимияExchangePlan.FindByCode ("02");
Ref = Directories.Nomenclature.GetLink (New UniqueIdentifier ("de18c53b-c3a7-11e2-acf9-001966ee0859"));
Deletion = Нов DeletionObject (Връзка);
Delete.Write ();
Exchange Plans.RegisterChanges (Node, Delete);

Забележка: в 1C8 трябва да се прави разлика между уникален идентификатор (UUID) и глобално уникален идентификатор (GUID). Ако е необходимо, в мрежата можете да намерите кода за конвертиране на UUID в GUID и обратно.

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

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