Прерывание операции при использовании польз-х алгоритмов
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 204
- Зарегистрирован: 13 ноя 2012, 12:47
- Откуда: СПб
- Контактная информация:
Прерывание операции при использовании польз-х алгоритмов
В настройках Галактики при проведении различных документов есть возможность выбрать алгоритм который будет выполняться как до, так и после обработки документа.
Например для приходной накладной ( Логистика/Управление снабжением/Приходная накладная/Запуск алгоритмов).
Есть ли возможность написать этот алгоритм таким образом, чтобы в случает необходимости можно было отменить оприходование приходной накладной?
То есть, в алгоритме реализуется механизм проверки на возможность оприходования накладной, и если требования не выполняются, то оприходование не начинается.
Например для приходной накладной ( Логистика/Управление снабжением/Приходная накладная/Запуск алгоритмов).
Есть ли возможность написать этот алгоритм таким образом, чтобы в случает необходимости можно было отменить оприходование приходной накладной?
То есть, в алгоритме реализуется механизм проверки на возможность оприходования накладной, и если требования не выполняются, то оприходование не начинается.
Программист-самоучка
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Прерывание операции при использовании польз-х алгоритмов
Ну вот как это прописано для приходной накладной
Фейс закрывается так
то есть вам нужно будет pt.Binding выставить в 8 или 1.
Код: Выделить всё
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))))
-
- Местный житель
- Сообщения: 204
- Зарегистрирован: 13 ноя 2012, 12:47
- Откуда: СПб
- Контактная информация:
Re: Прерывание операции при использовании польз-х алгоритмов
Эдвард, как всегда, огромное спасибо.
Программист-самоучка
-
- Местный житель
- Сообщения: 1089
- Зарегистрирован: 04 сен 2008, 11:27
- Откуда: Москва
- Контактная информация:
Re: Прерывание операции при использовании польз-х алгоритмов
в 9.1 это работает или уже нет?
что-то печаль меня там одолела
Собрал такое..
сделал Userscript.lst
'M_MNPLAN::Algoritm_77777'
в перечне интерфейсов есть, при инициализации пишет 'группа функций M_MNPLAN::Algoritm_77777 не найдена в ресурсе', хотя в перечне запускаемых интерфейсов он есть ..
что-то печаль меня там одолела
Собрал такое..
Код: Выделить всё
#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 не найдена в ресурсе', хотя в перечне запускаемых интерфейсов он есть ..
Время ведет!
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Прерывание операции при использовании польз-х алгоритмов
смущает ComponentVersion в интерфейсе. А описание объекта oAlgoritm_Sys
где подключено? В проекте?
#define ComponentVersion должен быть объявлен до #include Algor.vih
где подключено? В проекте?
#define ComponentVersion должен быть объявлен до #include Algor.vih
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Прерывание операции при использовании польз-х алгоритмов
Может 7ок многовато )
замени кругом 77777 на какое нить 5777
и пропиши в UserAlgor.lst :
Algorithm5777 = 'Algoritm_5777'
замени кругом 77777 на какое нить 5777
и пропиши в UserAlgor.lst :
Algorithm5777 = 'Algoritm_5777'
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Прерывание операции при использовании польз-х алгоритмов
а да - там word наверняка в номере алгоритма- это 65 штук с копейками.
-
- Местный житель
- Сообщения: 1089
- Зарегистрирован: 04 сен 2008, 11:27
- Откуда: Москва
- Контактная информация:
Re: Прерывание операции при использовании польз-х алгоритмов
для начала спасибо Userscript.lst это совсем не UserAlgor.lst ) по функционалу смотрю..
Время ведет!