ПредишенСледващото

В действителност, това, което би могло да бъде по-лошо? Потреблението надвишава пристигането в склада има отрицателно салдо, както и добре установени, както и изчислява partionny водене отлита в ада. Какво да се прави?

Най-лесният начин е административно (в техническия смисъл на думата) на забраната за провеждане на документи със задна дата. В действителност, тъй като # 147; мъртви копелета не могат да наследят престола # 147;. Но не всеки клиент ще се съглася с тази гледна точка на програмиста на. И той ще бъде прав # 151; Той е не само и не толкова невнимание в персонал, завинаги губи някои документи и изведнъж намери друг загубен преди месец. Много бизнес процеси са изградени по такъв начин, че провеждането на документи със задна дата е неразделна част от # 151; например, когато доставчикът възлага на почивка (и за нас, за да закупите) цена на пратката въз основа на продажбите на партията.

Така че забраната няма да работи. Ако програмистът не може да гарантира точността на изчисленията, необходими на клиента, клиентът няма да влезе в дебата, а просто наемат друг програмист. И той ще бъде прав.

1C Company е погрижила за нас, да влезе в обща платформа за наблюдение на провеждането на специален документ обект # 147; # 148. Секвенция Идеята е, че ние определяме какви документи са включени в поредицата, която регистрира движение, извършени тези документи са важни за нас. и всичко може да спи спокойно. Самата система ще следи целостта на последователността и в хронологичен ред, а ние имаме по всяко време, като използвате софтуерни методи за този обект ще бъде в състояние да разберете дали последователността е счупен, и ще продължи да действа в съответствие със собствените си # 151; отбележи болт, предупреди потребителя, да го накара да pereprovesti документи в правилния ред, за да подаде жалба шеф на потребителя, за да форматирате твърдия диск към него, и т.н.

Тя ще изглежда, че проблемът е решен. Но не всичко е толкова проста # 151; последователност на възстановяване на практика означава общо pereprovednie всички входящи документи в последователност, като се започва с # 147; на увредена # 148; и завършва с последния път. И ако # 147, # 148 не се допуска; документ се намира в началото на миналата година? Ако тази година базата данни е била доведена половин милион документи? Ако имаме сто доставчици и 99 работят с нас като народ, както и за стотен # 151; получовек като истински, но това е най-важното за нас и # 147, # 148 са в лошо състояние; фактури всяка седмица идват от него? Ние трябва постоянно да преизчисли Повторното свързване и стотици и хиляди (и много късмет, и десетки хиляди) от всички невинни документи. Програмистите измислят най-невероятни начини да направят живота ви по-лесно, създаване на инструменти за произволно хитри автоматични поредици за възстановяване. Последователността очевидно не е подходящ за ролята на генеричните лекарства. Сега, ако тя не може да се свързва с движението на регистъра, като такива, но да се регистрират движенията на определен набор от измервания. че би било много по-удобно.

Опитайте временно да забрави за съществуването на обекта # 147; последователност # 148; и въоръжени с инструмент, наречен # 147; # 148 собствените си ръце. Какво се случва?
  • На първо място, се определят # 147; Key # 148; Регистрирайте измерение, на които трябва да контролират движението (обикновено, това е най-измерване). Уверете се, че тази директория, тъй като за не-директории все още не е измислена техника.
  • Да предположим, че ние открихме водач # 147; # 148;. Клиентите Ще се създадат нови неговите подпори тип партида # 147; Документ # 148. Наречете го, например, на границите. Ще проявяват в проп опция # 147; модифицира документ # 148; и деактивирайте опцията # 147; Ръчна промяна # 148;. Можете да вмъкнете този във формата на подпори, но в режим на R / O # 151; Потребителите не трябва да могат да го променят.
  • Писане за глобалната функция на този вид:

    Функционални тестове (продължение) Износ
    Граница = Kont.Klient.Granitsa.Poluchit (RabochayaData ());
    Ако SravnitDokiPoVremeni (Border, Kont.TekuschiyDokument ()) = 1 Тогава
    Доклад ( "Ай-ай последователност е счупена!");
    Върнете 0;
    в противен случай
    Назад 1;
    ENDIF;
    KonetsFunktsii

    SravnitDokiPoVremeni () функция сравнява две тъп инструмент на датата / часа и кода не се даде пълна представа за баналността.

  • Сега ние завършим няколко реда в модула за документа:

    ObrabotkaProvedeniya () процедура
    Проверете дали (контекст) = 0 Тогава
    StatusVozvrata (0);
    се върне;
    ENDIF;

    // тук действителното реализиране на документа

    UstanovitRekvizitSpravochnika (клиент, "Гранична"
    TekuschiyDokument () DataDok. ));
    KonetsProtsedury

  • За да не се трудят с ръчно нулиране на нашия микросеквениращ, прави преработка услуга, която намира всички документи, изисквани от клиента за определен период и да ги свързването на жиците в правилния ред. За да не се губи време за премахване на предварителния, е възможно чрез флаг (константа, глобална променлива, и т.н.) се предава в индикацията за проверка процедура винаги се върне един ако поведението не е иницииран от потребителя, и обработката на услуги. Все още трябва да се направи една дузина неща, описанието на което ми липсва, поради наличието на моите читатели хипотетични добро въображение и богат професионален опит.
  • В този пример, можете да изберете по трудния вариант на поведението на системата, когато backdating работи само през специална обработка (може би само DBA санкции), както и всички други опити блокирани. Но никой не спира да се реализират и по-лоялни към потребителското верига # 151; когато за нарушение на последователността просто някъде фиксирана, а след това се появи в някакъв момент. Това е въпрос на вкус (или TK), предпочитам да не се даде на потребителя възможност да направя нещо грешно, отколкото да се преодолее успешно последиците от това # 147; не е ли # 148;.

    Това, което имаме в крайна сметка? Провеждане на документ със задна дата изисква преизчисляване не е цялата база данни # 147; от оградата и преди вечеря # 148;, но само някаква част от документите. Този код е реализация на една много проста случай, тъй като # 147; Key # 148; регистрират измервания са засегнати от провеждане на документ, обикновено няколко (клиент, продукт, фирма и т.н.) и горната схема няма да спечели така или иначе. Но в някои случаи (и това се потвърждава от практиката) да използва механизма # 147; # 148 умен; последователности дава добър ефект.

    Къде е рейка, замислен читателят ще попитате? Същото не може да бъде за технологичната граница да отпадне като елементарна платформа начин. И наистина, има гребла.

    Бихте не че ние обменяхме шилото дори не сапун, както и други шило? Всичко зависи от ситуацията. Нито проблем не бъде решен в общ вид, и няма универсално решение не е без допълнителни разходи. Само в един случай, едно решение е по-изгодно, а другият # 151; повече. Има ситуации, които се наричат # 147; Catch-22, # 148;, но ми се струва, че проблемът с последователности за възстановяване на тези, все още не се прилага ;-)
    • Илюстрация в малък формат конфигурация

    Свързани статии

    Подкрепете проекта - споделете линка, благодаря!