Java скрипт - связь спецификации накладной и плана снабжения

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

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

Serg7907
Постоянный обитатель
Сообщения: 127
Зарегистрирован: 06 июл 2007, 18:25
Контактная информация:

Java скрипт - связь спецификации накладной и плана снабжения

Сообщение Serg7907 »

Добрый день! Начал изучать азы Java в Галактике. Нужно по определенному алгоритму вытаскивать в план снабжения (МТО) - вкладка "Входящие документы"- спецификацию приходной накладной, спецификация в плане снабжения уже есть, т.е. связка пойдет через nrec МЦ.
Кроме того, насколько я понимаю, связь накладной и плана снабжения пойдет по связке:
502==objacct.vidsopr
and 1==objacct.kindrec
and 4==objacct.typeobj
and MnPlan.nrec==objacct.cobject
and objacct.cowner==katsopr.nrec
Как бы это все увязать в скрипте, какие библиотеки и объекты использовать? В Java я еще новичок, так что если что сильно не ругайте)). Может быть у кого-то какой-то похожий пример уже имеется?
Zver
Местный житель
Сообщения: 204
Зарегистрирован: 13 ноя 2012, 12:47
Откуда: СПб
Контактная информация:

Re: Java скрипт - связь спецификации накладной и плана снабж

Сообщение Zver »

Serg7907, могу порекомендовать для начального ознакомления документацию по работе JS, которую можно скачать здесь: ftp://ftp.galaktika.ru/pub/support/gala ... /baza/pdf/
Здесь много чего лежит, Вам сейчас нужен файл JS_usage.pdf.

Если будут проблемы с переходом на ftp - могу выслать на почту скачанный документ.

Успехов.
Программист-самоучка
Serg7907
Постоянный обитатель
Сообщения: 127
Зарегистрирован: 06 июл 2007, 18:25
Контактная информация:

Re: Java скрипт - связь спецификации накладной и плана снабж

Сообщение Serg7907 »

Zver, спасибо за ссылку на документ. Я как раз его и изучил, поделал примеры, посмотрел документацию. Просто вдруг у кого-то похожие алгоритмы с объктами уже были где-то настроены, или кто-то подсказал, хотя бы в общих чертах, как этот скрипт в одно целое свести с учетом объектов и функций...
Zver
Местный житель
Сообщения: 204
Зарегистрирован: 13 ноя 2012, 12:47
Откуда: СПб
Контактная информация:

Re: Java скрипт - связь спецификации накладной и плана снабж

Сообщение Zver »

Попробую помочь. Представленные здесь рассуждения это моё понимание того, как работает JS в Галактике.
Надеюсь, что если я не прав, то более опытные коллеги поправят меня.

Грубо говоря, запись в какой-либо таблице на JS представляется объектом. Сначала описываем объект на вкладке Свойства. Аналог из С - класс.
Затем на вкладке Экземпляры создаём объекты - то есть конкретные экземпляры классов.

После этого обращаемся с ними как с обычными объектами в стиле C или Vip.

В приведённом коде:
alex - это объект таблицы SpSopr
matc - это объект таблицы KatMc
vhodecz - это объект таблицы KatSopr.

В целом обращение в БД в JS очень похоже на работу с БД на языке VIP. Надеюсь мой ответ поможет Вам разобраться.

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

var name1;
var number;
var date1;
var gr1;
var date2;
var date3;
var nfact;
var name2;
var all1;
var name4;
var nrec1;
var vhodnal;
var asd1;
var group1;
var nalog1;

  asd1 = asd();

   vhodecz.setPosition(asd1);
   vhodnal=vhodecz.vhod;

 alex.met(asd()) ;

 for(alex.getFirst(); ResultOfNavigation; alex.getNext())
 {
  if (alex.priznak != 1)
     continue;
    name1=alex.kol1;
    name2=(alex.price1/1).toFixed(2);
    name3=alex.name_nrec;
   grl=alex.grnal;
   nrec1=name3;

 matc.setPosition(nrec1);
  Name4 = matc.name;
  group1=matc.group;
  nalog1=matc.nalog;

switch (group1){
           case '281474976710657': nalog1=18;
           break
           case '281474976710659': nalog1=10;
           break
           default : nalog1=0;
    }

if (vhodnal != 2)
   name2 = (name2/(1+0.01*nalog1) ).toFixed(2);

if( matc.newprice1.toFixed(2) != name2)
  {
    matc.newprice1 = name2;
    matc.rewrite();
  }
 }
Программист-самоучка
Serg7907
Постоянный обитатель
Сообщения: 127
Зарегистрирован: 06 июл 2007, 18:25
Контактная информация:

Re: Java скрипт - связь спецификации накладной и плана снабж

Сообщение Serg7907 »

Zver, спасибо. Кое-что начинает проясняться))
А переменные, заданные в начале скрипта, они должны соответствовать определенным полям документа на вкладке "Объекты", как я понял?
Zver
Местный житель
Сообщения: 204
Зарегистрирован: 13 ноя 2012, 12:47
Откуда: СПб
Контактная информация:

Re: Java скрипт - связь спецификации накладной и плана снабж

Сообщение Zver »

Нет, это просто переменные, как и всегда. Тип всех переменных указан ниже.
Программист-самоучка
Serg7907
Постоянный обитатель
Сообщения: 127
Зарегистрирован: 06 июл 2007, 18:25
Контактная информация:

Re: Java скрипт - связь спецификации накладной и плана снабж

Сообщение Serg7907 »

Немного обобщу по этому запросу:
- вкладка "Объекты" - "Свойства" : alex - Спецификация накладной
matc - МатЦенность
vhodecz - Заголовок накладной

- вкладка "Объекты" - "Экземпляры": alex - alex
matc - matc
vhodecz - vhodecz
Библиотеки я выбрал такие: Сообщения и визуализация, Сервисные функции для накладных, Системная функция для работы с датами.
Переменные описаны в скрипте, их тип указан.
Правильно ли я понимаю, что такого плана алгоритм запускается только из логистики, а не скажем из контура Производственной логистики?
Zver
Местный житель
Сообщения: 204
Зарегистрирован: 13 ноя 2012, 12:47
Откуда: СПб
Контактная информация:

Re: Java скрипт - связь спецификации накладной и плана снабж

Сообщение Zver »

Этот алгоритм потом можно использовать в любом месте. Как привязать запуск алгоритма JS к событию галактики - уже забыл. У нас этим занимается другой человек,
постановщик задачи, который будет болеть, как минимум, до конца недели.
Программист-самоучка
Serg7907
Постоянный обитатель
Сообщения: 127
Зарегистрирован: 06 июл 2007, 18:25
Контактная информация:

Re: Java скрипт - связь спецификации накладной и плана снабж

Сообщение Serg7907 »

Как привязать запуск алгоритма JS к событию галактики, я вроде разобрался. Однако вот в чем проблема: при запуске алгоритма отладчик ругается "Предполагается наличие объекта" и курсор стоит перед этим местом: asd1 = asd();
Не могу понять, из-за чего...
Zver
Местный житель
Сообщения: 204
Зарегистрирован: 13 ноя 2012, 12:47
Откуда: СПб
Контактная информация:

Re: Java скрипт - связь спецификации накладной и плана снабж

Сообщение Zver »

Для того, чтобы заработал приведённый код необходимо сначала создать соответствующие объекты и их экземпляры.

Рекомендую Вам создать объект одной из таблиц, выбрать поля, которые будут нужны, затем создать экземпляр объекта и попробовать вывести в сообщении какое-либо
поле этого объекта.

Можно начать с того, чтобы вывести поле KAtSopr.nSopr. Как получится это сделать - остальное будет проще.
Программист-самоучка
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Re: Java скрипт - связь спецификации накладной и плана снабж

Сообщение zna »

Serg7907 писал(а):Как привязать запуск алгоритма JS к событию галактики, я вроде разобрался. Однако вот в чем проблема: при запуске алгоритма отладчик ругается "Предполагается наличие объекта" и курсор стоит перед этим местом: asd1 = asd();
Не могу понять, из-за чего...
asd()- это функция, которая объявлена в окне настройки JS алгоритма. По смыслу asd - это katsopr.nrec документа, их которого запускается алгоритм (накладной, акта)
Serg7907
Постоянный обитатель
Сообщения: 127
Зарегистрирован: 06 июл 2007, 18:25
Контактная информация:

Re: Java скрипт - связь спецификации накладной и плана снабж

Сообщение Serg7907 »

Спасибо за ответы. Итак:
1. Настроил объект: KatSopr - Заголовок накладной, выбрал для него 2 поля - number(Номер накладной), nrec (Уникальный номер записи)
2. Экземпляр назвал KatSopr
3. Вот скрипт, которым я пытаюсь вывести номер накладной (алгоритм запускаю из расширенной информации в накладной)
var number;
var nrec;
KatSopr.setPosition(curKatSopr());
for (KatSopr.getFirst(); ResultOfNavigation; KatSopr.getNext())
{
KatSopr.setPosition(KatSopr.nrec);
Message(KatSopr.number);

}

Все равно, выводит ошибку "Предполагает наличие объекта" (ругается на это KatSopr.setPosition(curKatSopr())), хотя объект и поля настроены и явно заданы(((
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Re: Java скрипт - связь спецификации накладной и плана снабж

Сообщение zna »

А функцию curKatSopr() определили в окне настройки алгоритма? Вот пример настройки:Изображение

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

SpMnPlan.toMnPlan(CurPlan());
if(SpMnPlan.getFirst() == true)
  {
     do
       {
          SpMnPlan.Status = 281474976710658;
          SpMnPlan.rewrite();
          SpMnPl.toSpMnPlan(SpMnPlan.Nrec);
          SpMnPl.getFirst();
          SpMnPl.StatusS = 281474976710658;
          SpMnPl.rewrite();
       }
     while(SpMnPlan.getNext() == true)
  }                                                   
Serg7907
Постоянный обитатель
Сообщения: 127
Зарегистрирован: 06 июл 2007, 18:25
Контактная информация:

Re: Java скрипт - связь спецификации накладной и плана снабж

Сообщение Serg7907 »

Ок, с переменными и выводом номера документа я разобрался. Всем спасибо за помощь!
Следующий вопрос: если в скрипте будет описана связь 2 документов (спецификация плана и спецификация накладной), в настройке алгоритма какой документ указывать? Как я понял, функции (типа CurKatsopr, asd) задаются к конкретному документу.
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Re: Java скрипт - связь спецификации накладной и плана снабж

Сообщение zna »

Serg7907 писал(а):Ок, с переменными и выводом номера документа я разобрался. Всем спасибо за помощь!
Следующий вопрос: если в скрипте будет описана связь 2 документов (спецификация плана и спецификация накладной), в настройке алгоритма какой документ указывать? Как я понял, функции (типа CurKatsopr, asd) задаются к конкретному документу.
На вкладке "Настройка алгоритма" указывается только одна функция- текущего документа. Второй и последующий документы, которые Вы используете, связывайте с данным документом в соответствии с логикой Ваших действий. В данном случае делаете цикл по спецификации накладной и ищете соответствующую спецификацию плана по связям: табицы objacct, spobjacc, въюшку Вы почти правильно написали в первом посте.
Ответить