Про "первичный документ"



Posted by Сергей Холево, фирма Централь Минск on September 14, 1999 at 19:08:58:

Что такое первичный документ, создаваемый псевдопроводкой create document? Это форма, которая выполняется непосредственно после ввода новой операции. В ней нельзя использовать функции ввода, следовательно, исходными данными для алгоритмов этой формы могут быть лишь данные из самой операции либо данные о состоянии регистров учета, достигнутые к моменту выполнения данной псевдопроводки. При каждом пересчете баланса сервер проверяет дескриптор первичного документа, в котором хранится дата последнего изменения операции, и в случае несоответствия данных дескриптора дате операции регенирирует документ заново, добавляя его к предыдущим вариантам.


  1. Слово первичный для создаваемого документа как-то не очень подходит. Это скорее справка о каких-то результатах, достигнутых к моменту выполнения данной псевдопроводки. Ведь не этот первичный документ является источником исходной информации для операции, а наоборот, т.е. этот документ вторичный по отношению к операции.

  2. Алгоритм обновления первичного документа анализирует лишь дату операции, но не анализирует изменения исходных данных для этого документа, которые к моменту очередной пересбивки баланса могут измениться. Ведь этими исходными данными может быть информация о состоянии регистров учета, а пересбивка баланса для того и происходит, чтобы эти данные изменить. Следовательно, вполне возможна ситуация, что хранимая последняя версия документа не соответствует реальному текущему состоянию базы данных и может ввести пользователя в заблуждение.

    Возможны варианты решения этой проблемы:

    1. Записывать в дескриптор помимо даты операции и состояние контекста. После первой же попытки дождаться пересбивки баланса от этого варианта можно будет сразу отказаться :-).

    2. Серверу при каждой пересбивке баланса воспроизводить документ и сравнивать его с предыдущей версией. В случае отличий - дописывать. Этот вариант решения дисковой пямяти потребует меньше, но времени все равно может не хватить.

    3. Запретить использовать в первичных документах функции остатков, оборотов, корреспонденций, значений параметров, [get...] и даже [ged...].

  3. Достигнутый на сегодня уровень функциональных возможностей программы позволяет генерировать такой же документ средствами обычного файла-коэффициента. Отличие заключается только в невозможности обращаться из файла-коэффициента в first.rpt и инициализировать появление документа на экране сразу после ввода операции. В дополнение к first.rpt возможно появится когда-нибудь common.rpt для хранения алгоритмов подпрограмм, используемых файлами-коэффициентами (такое предложение неоднократно высказывалось на WWWboard). С появлением формы на экране - ???.

    Я практически не пользуюсь псевдопроводкой create document. Для чего ее используют коллеги пока понять не могу. Не исключаю какую-то полезность create document при выключенной опции "хранить первичные". Буду признателен, если кто-либо покажет практический пример настройки, где эта псевдопроводка несет в себе какой-нибудь обязательный смысл.



    Пpишедшие ответы: