Справка Инфо-Бухгалтер 10

Серверные алгоритмы модификации операций в журнале

Серверные алгоритмы модификации операций журнала принимают с клиентского места модифицируемую операцию и набор параметров. Алгоритмы могут изменять полученные параметры. При этом наличие параметров зависит от того, разрешена ли передача параметров этому алгоритму клиентским алгоритмом модификации (логические поля "до", "после" и "возврат" типа МОДИФ_ПАРАМ). Алгоритмы могут отменить действие путем возврата НЕТ в качестве результата выполнения. Алгоритмы могут быть заданы в том числе и для разделяемых типов операций, поэтому в них передается имя журнала. Ссылки на алгоритмы задаются: для типовых операций - в редакторе типов операций, для ручных операций и операций исходных остатков - в диалоге настройки алгоритмов журнала. Права доступа к операции, передаваемые во все алгоритмы модификации, являются входным параметром и не могут изменяться в алгоритмах. Права доступа можно использовать для анализа условий модификации операции или для добавления других операций с такими же правами в алгоритмах "после_модификации".

  1. Параметры алгоритмов ДО_ДОБАВЛЕНИЯ и ПОСЛЕ_ДОБАВЛЕНИЯ:

    ВЫЧИСЛИТЬ (СТРОКА: журнал; 
               ПЕРЕМ <ТИП>: оп; 
    		   ПЕРЕМ АЛГ_ПАРАМ: парам;
    		   ПЕРЕМ ПРАВА_ДОСТУПА: доступ; 
               ПЕРЕМ ЛОГИКА: рез)
    //…
    КОНЕЦ
    
    • журнал - входной параметр. Имя журнала.
    • оп - входной и выходной параметр в ДО_ДОБАВЛЕНИЯ, входной параметр в ПОСЛЕ_ДОБАВЛЕНИЯ. Добавляемая операция. Вместо идентификатора <ТИП> задается имя типа операции или имя одного из родительских типов. Как для типовых, так и для ручных операций в качестве имени типа может использоваться имя базового типа ОПЕРАЦИЯ. Для операций исходных остатков вместо идентификатора <ТИП> следует использовать тип ОСТАТОК.
    • парам - входной и выходной параметр. Набор параметров.
    • доступ - входной параметр. Права доступа к добавляемой операции.
    • рез - выходной параметр. Логическое значение результата выполнения алгоритма.

    Пример

    Пример иллюстрирует использование алгоритма ПОСЛЕ_ДОБАВЛЕНИЯ, в ходе работы которого при добавлении операции типа "Движ_тов" в журнал автоматически добавляется операция типа "Движ_ден" в этот же журнал, между операциями устанавливается связь.

    ВЫЧИСЛИТЬ(СТРОКА: журнал;              // вход
              ПЕРЕМ ОПЕРАЦИЯ: оп;          // вход
              ПЕРЕМ АЛГ_ПАРАМ: парам;      // вход/выход
              ПЕРЕМ ПРАВА_ДОСТУПА: доступ; // вход
              ПЕРЕМ ЛОГИКА: рез)           // вход/выход
    
      ПЕРЕМ ЖУРНАЛ: ж
      ж.название = журнал
      ПЕРЕМ ДенегДвиж: опер
      опер.дата_время = оп.дата_время
      опер.комментарий = "Движение денег"
      ж.ДОБАВИТЬ(опер)
      ПЕРЕМ СВЯЗИ: св
      св.связи[опер.номер] = ДА
      ж.ЗАПИСАТЬ_СВЯЗИ(журнал, оп.номер, св)
      рез = ДА
    КОНЕЦ
  2. Параметры алгоритмов ДО_ИЗМЕНЕНИЯ и ПОСЛЕ_ИЗМЕНЕНИЯ:

    ВЫЧИСЛИТЬ (СТРОКА: журнал; 
               ПЕРЕМ <ТИП>: старая_оп; 
    		   ПЕРЕМ <ТИП>: новая_оп; 
               ПЕРЕМ АЛГ_ПАРАМ: парам; 
    		   ПЕРЕМ ПРАВА_ДОСТУПА: доступ; 
               ПЕРЕМ ЛОГИКА: рез)
    //…
    КОНЕЦ
    
    • журнал - входной параметр. Имя журнала.
    • старая_оп - входной и выходной параметр в ДО_ИЗМЕНЕНИЯ, входной параметр в ПОСЛЕ_ИЗМЕНЕНИЯ. Операция до редактирования.
    • новая_оп - входной параметр. Операция после редактирования.
    • парам - входной и выходной параметр. Набор параметров.
    • доступ - входной параметр. Права доступа к операции после редактирования.
    • рез - выходной параметр. Логическое значение результата выполнения алгоритма.
  3. Параметры алгоритмов ДО_УДАЛЕНИЯ и ПОСЛЕ_УДАЛЕНИЯ:

    ВЫЧИСЛИТЬ (СТРОКА: журнал; 
               ПЕРЕМ <ТИП>: оп; 
    		   ПЕРЕМ АЛГ_ПАРАМ: парам; 
               ПЕРЕМ ПРАВА_ДОСТУПА: доступ; 
    		   ПЕРЕМ ЛОГИКА: рез)
    //…
    КОНЕЦ
    
    
    • журнал - входной параметр. Имя журнала.
    • оп - входной параметр. Удаляемая операция.
    • парам - входной и выходной параметр. Набор параметров.
    • доступ - входной параметр. Права доступа к удаляемой операции.
    • рез - выходной параметр. Логическое значение результата выполнения алгоритма.

    Пример

    Пример иллюстрирует использование алгоритма ДО_УДАЛЕНИЯ, в ходе работы которого при удалении операции типа "Движ_тов" из журнала автоматически удаляются все связанные операции с этим типом.

    ВЫЧИСЛИТЬ(СТРОКА: журнал;               // вход
              ПЕРЕМ ТоварДвиж: оп;          // вход
              ПЕРЕМ АЛГ_ПАРАМ: парам;       // вход/выход
              ПЕРЕМ ПРАВА_ДОСТУПА: доступ;  // вход
              ПЕРЕМ ЛОГИКА: рез)            // вход/выход
      ЕСЛИ парам.парам["уд_связ"] = ДА ТО
        ПЕРЕМ ЖУРНАЛ: ж
        ж.название = журнал
        ПЕРЕМ СВЯЗИ: ж_связи
        ж.СЧИТАТЬ_СВЯЗИ(журнал, оп.номер, ж_связи)
        ЦИКЛ ИНДЕКС(знач = ж_связи.связи[инд])
          ж.УДАЛИТЬ(инд)
        КОНЕЦ_ЦИКЛА
      КОНЕЦ_ЕСЛИ
      рез = ДА
    КОНЕЦ

См. также: