Страница 1 из 1

Прерывание операции при использовании польз-х алгоритмов

Добавлено: 05 апр 2014, 12:19
Zver
В настройках Галактики при проведении различных документов есть возможность выбрать алгоритм который будет выполняться как до, так и после обработки документа.

Например для приходной накладной ( Логистика/Управление снабжением/Приходная накладная/Запуск алгоритмов).

Есть ли возможность написать этот алгоритм таким образом, чтобы в случает необходимости можно было отменить оприходование приходной накладной?

То есть, в алгоритме реализуется механизм проверки на возможность оприходования накладной, и если требования не выполняются, то оприходование не начинается.

Re: Прерывание операции при использовании польз-х алгоритмов

Добавлено: 07 апр 2014, 11:20
edward_K
Ну вот как это прописано для приходной накладной

Код: Выделить всё

  if (KatSopr.VidSopr = 101 Or KatSopr.VidSopr = 108)
    if (coGetTune('Oper.Buy.Nakl.BeforeOrder') <> 0)
    {
      wResult := RunInterface( 'SimpleWayToRunAlgorithm'
                             , coGetTune('Oper.Buy.Nakl.BeforeOrder')
                             , word(2101)
                             , KatSopr.NRec
                             , comp(0));
      ReReadRecord(#KatSopr);
    }

  if (wResult = cmNo) Or (wResult = cmDefault)
  {
    if (ShowMess)
    {
      Message(''#3+'По результатам выполнения алгоритма'+''#13+
              ''#3+'формирование ордеров запрещено',Information);
    }

    LogMessage1('По результатам выполнения алгоритма, заданного настройкой "Перед оприходованием выполнить алгоритм", формирование ордера запрещено.', 0, wMode);
    Exit;
  }

Фейс закрывается так

Код: Выделить всё

  aAccount.RunInter(cAlg, word(0), pt);
  CloseInterface(if(pt.Binding = 8, cmNo,
                  if(pt.Binding = 1, cmDefault,
                   if(pt.Error = 0, cmOk, cmCancel))))
то есть вам нужно будет pt.Binding выставить в 8 или 1.

Re: Прерывание операции при использовании польз-х алгоритмов

Добавлено: 07 апр 2014, 11:39
Zver
Эдвард, как всегда, огромное спасибо.

Re: Прерывание операции при использовании польз-х алгоритмов

Добавлено: 21 июн 2017, 17:47
Masygreen
в 9.1 это работает или уже нет?
что-то печаль меня там одолела
Собрал такое..

Код: Выделить всё

#define ComponentVersion
#component "M_MnPlan"
VipInterface Algoritm_77777 implements oAlgoritm_Sys Licensed(Free);
Interface Algoritm_77777;
create view;

//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// Номер системного алгоритма
Function GetNum: word;
{
  GetNum := 77777;
} // Function GetNum
Function GetName: string;
{
  GetName := '77777 Проверка';
}; // Function GetName
Function GetMemo(st: oSteckCommonString): boolean;
{
  st.Push('');
  GetMemo := true;
}; // Function GetMemo
Function GetNameInter: string;
{
  GetNameInter := 'Algoritm_77777';
}; // Function GetNameInter
Function GetNameInterPr: string;
{
  GetNameInterPr := ''; // настройка не требуется
}; // Function GetNameInterPr

Function InitInter(var pt: TRecAcc): boolean;
begin
  InitInter := true;
end;

Function RunInter(wflag: word; var pt: TRecAcc): boolean;
begin
  if (Message('Сформировать ордер?', yesNo + Confirmation) <> cmYes)
    pt.Binding := 1;
  else
    pt.Binding := 8;

  RunInter := true;
end;

end. 


сделал Userscript.lst
'M_MNPLAN::Algoritm_77777'

в перечне интерфейсов есть, при инициализации пишет 'группа функций M_MNPLAN::Algoritm_77777 не найдена в ресурсе', хотя в перечне запускаемых интерфейсов он есть ..

Re: Прерывание операции при использовании польз-х алгоритмов

Добавлено: 21 июн 2017, 18:54
edward_K
смущает ComponentVersion в интерфейсе. А описание объекта oAlgoritm_Sys
где подключено? В проекте?
#define ComponentVersion должен быть объявлен до #include Algor.vih

Re: Прерывание операции при использовании польз-х алгоритмов

Добавлено: 21 июн 2017, 19:13
Den
Может 7ок многовато )

замени кругом 77777 на какое нить 5777
и пропиши в UserAlgor.lst :
Algorithm5777 = 'Algoritm_5777'

Re: Прерывание операции при использовании польз-х алгоритмов

Добавлено: 21 июн 2017, 19:29
edward_K
а да - там word наверняка в номере алгоритма- это 65 штук с копейками.

Re: Прерывание операции при использовании польз-х алгоритмов

Добавлено: 22 июн 2017, 11:21
Masygreen
для начала спасибо Userscript.lst это совсем не UserAlgor.lst ) по функционалу смотрю..