Страница 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 ) по функционалу смотрю..