Создание системных алгоритмов на VIP в Галактике 8.10

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

Создание системных алгоритмов на VIP в Галактике 8.10

Сообщение Nikos »

Добрый день!
Появилась необходимость при оприходовании материалов выполнить определенные действия. В настройках есть такой пункт как "Перед оприходованием выполнить алгоритм". По названию как раз то, что мне нужно. Почитал документацию в ...\EXE\ManufExt\Samples\VIP. Практически без ошибок откомпилировал предложенные демо варианты (только несоответствие количества параметров в одном месте) и надеялся в итоге увидеть сообщение 'Вас приветствует алгоритм №5000'.
Далее в настройках ... - Управление снабжением - Приходная накладная - Запуск алгоритмов - Перед оприходованием выполнить алгоритм пытаюсь выбрать алгоритм с номером 5000, выбираю перерегистрацию алгоритмов... и все - нет в списке алгоритма с таким номером! Что я не так сделал?
Ресурс подключен, через запуск внешнего интерфейса видны ALGORITM_5000 и ALGORITMSETUP_5000
oiko
Местный житель
Сообщения: 418
Зарегистрирован: 29 мар 2005, 17:49

Сообщение oiko »

а в UserAlgor.lst строчку AlgorithmName = 'Algoritm_5000' добавили?
Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

Сообщение Nikos »

Действительно, там не совпадали наименования, но теперь опять появилась ошибка (которую я уже решил, что победил). Возникло необработанное исключение ... ошибка загрузки объекта из ресурсного файла (M_MnPlan::Algoritm_5000). Почему он указывает M_MnPlan?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

потому что :) - все алгоритмы вызывается из компоненты M_MnPlan . А ругается потому как вы при компиляции не указали сию компоненту.
Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

Сообщение Nikos »

Понятно. А подскажите, как это сделать - указать компоненту при компиляции?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

после vih пропишите в vip
#ifdef ComponentVersion
#component "M_Mnplan"
#endif
Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

Сообщение Nikos »

edward_K, большое спасибо! Заработало.
Когда перешли на 8-ку я прописывал компоненты для UserReport.vih, но не понимал для чего... Получается, что я добавляю функционал в существующую компоненту?
Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

Сообщение Nikos »

И еще последний вопрос. Что нужно сделать, чтоб алгоритм выполнялся в фоновом режиме, чтоб пользователю не нужно было нажимать кнопку "выполнить"?
oiko
Местный житель
Сообщения: 418
Зарегистрирован: 29 мар 2005, 17:49

Сообщение oiko »

В настройке алгоритма указать чтобы исполнялся без запроса.
Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

Сообщение Nikos »

oiko, большое спасибо - теперь просто красота!
Всех с наступающим Новым Годом!!!
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Создание системных алгоритмов на VIP в Галактике 8.10

Сообщение hope »

Тоже откомпилировала алгоритм из примера и тоже не могу увидеть этот алгоритм. Только у меня 7.12.

При описании алгоритма в UserAlgor.lst в строке AlgorithmName = 'Algoritm_5000' в апострофах нужно указать имя интрефейса? какого из них: AlgoritmSetup_5000 или Algoritm_5000.

Или может текстовое имя алгоритма, которое задается в коде: GetName := 'Пример написания VIP-алгоритма';

Или может в 7.12 тоже надо как-то указать принадлежность к компоненте?

Этот свой алгоритм должен появиться в таблице FORMPL?
Seybukan
Местный житель
Сообщения: 1357
Зарегистрирован: 29 мар 2005, 17:49
Откуда: СПб, ЭП-Аудит
Контактная информация:

Re: Создание системных алгоритмов на VIP в Галактике 8.10

Сообщение Seybukan »

Перерегистрацию алгоритмов запускали.
Он сам не появиться в списке.
Надо запустить перерегистрацию по локальной функции из списка системных алгоритмов.
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Создание системных алгоритмов на VIP в Галактике 8.10

Сообщение hope »

Спасибо! Все получилось - перерегистрация помогла. Оказывется я еще и не там искала новый алгоритм - надо в системных его смотреть.
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: Создание системных алгоритмов на VIP в Галактике 8.10

Сообщение Алексей »

сделал алгоритм, при переинициализации алгоритмов получаю сообщение:
"приведение M_MnPlan :: Algoritm6010 к нереализованному ObjInterface "M_MNPLAN::oAlgoritm_Sys"
Системная ошибка, алгоритм M_MnPlan :: Algoritm6010 не загружен
Если смотреть через запуск удаленных интерфейсов - там он есть... вихи все новые подложил, в чем может быть дело?

Или киньте плиз самый просто пример тестового алгоритма аля "Хэллоу ворлд".
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: Создание системных алгоритмов на VIP в Галактике 8.10

Сообщение n0where »

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

#define ComponentVersion

#component "M_MnPlan"

CONST
#include "..\include\GLOCONST.INC"
end;
#include "..\include\galnet.ccm" end;

#include "..\include\uAlgor.vih"
#include "..\include\oAlgSetup.vih"


VipInterface Algoritm_7052 implements oAlgoritm_Sys
#ifdef ATL51
  Licensed (FREE)
#endif
;

interface Algoritm_7052;

create view;

//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// Номер системного алгоритма
Function GetNum: word;
{
  GetNum := 7052;
} // Function GetNum
Function GetName: string;
{
  GetName := 'Бла Бла';
}; // Function GetName
Function GetMemo(st: oSteckCommonString): boolean;
{
  st.Push('');
  GetMemo := true;
}; // Function GetMemo
Function GetNameInter: string;
{
  GetNameInter := 'Algoritm_7052';
}; // 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
  RunInterface('Algoritm_7250_Main',PT.cpNrec,1); // Вызываем или выполняем что хотим ! Но я делаю без настройки через интерфейсы
  RunInter := true;
end;

end.
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Ответить