Страница 4 из 5
Re: Java скрипт - связь спецификации накладной и плана снабж
Добавлено: 12 фев 2014, 08:35
zna
Serg, 3 замечания, коротко:
1. Перед добавлением новой связи objacct надо проверить, а не существует ли уже она:
Objacct.toIshod(тут параметры);
if (Objacct.getFirst() != 0)
{
Тут и создаёте Objacct
}
2. При поиске связей и создании удобно использовать объекты- так проще и красивей. Объект- запись в mnplan и katsopr (надо спозиционироваться на нужных записях), см. метод FindSvyaz на скрине.
3. Спецификации связей не создавал (для моих задач хватает и заголовков)- заморочно, но при необходимости сделал бы так:
3.1. Вручную создаёшь спецификацию связи;
3.2. Смотришь в журнале, что система создала: видишь две записи- 1-я во 2-й панели, 2-я - в 3-й пенели;
3.3. Повторяешь эти действия в JS. Думаю, полезно будет замечание 2.
Re: Java скрипт - связь спецификации накладной и плана снабж
Добавлено: 12 фев 2014, 11:35
Serg7907
Спасибо! Учту ваши замечания. По п.3: я выбираю объект "Спецификация таблицы связей" и выбираю для него метод "Создать новую связь" (кроме использования метода, я к сожалению не знаю других способов создания записей в таблице). А у него 4 параметра, и какие значения выбирать, не понятно(((
Создаю вручную спецификацию связи, разница в записях для 2-й и 3-й панели в следующих полях:
TYPENORM: 2 панель - значение 0; 3 панель - 1
TYPEED: 0; 1
TYPEOBJ: 0; 31
COBJECT: 0; ссылка на план
CSPOBJACC:0; ссылка на OBJACC
Re: Java скрипт - связь спецификации накладной и плана снабж
Добавлено: 17 фев 2014, 17:34
Serg7907
Ребят, вот текст скрипта.
MnPlan.setPosition(CurPlan());
var cTmp;
SpMnPlan.toMnPlan(MnPlan.nrecmnplan);
for(SpMnPlan.getFirst(); ResultOfNavigation; SpMnPlan.getNext())
{
cTmp = SpMnPlan.cizd;
KatMc.setPosition(cTmp);
SpSopr.toMC(101, KatMc.nrecmc);
for(SpSopr.getFirst(); ResultOfNavigation; SpSopr.getNext());
{KatSopr.setPosition(SpSopr.csopr);
ObjAcc.InsertObjAcc(44,KatSopr.nreckatsopr,29,MnPlan.nrecmnplan);
ObjAcc.rewrite();
SpObjAcc.CreateSpObjAcc(ObjAcc.nrecobjacc,45, SpSopr.nrecspsopr, toSpSopr, SpMnPl.nrec);// здесь все корректно работает, вытаскивает в среднюю панель МЦ из накладной
SpObjAcc.CreateSpObjAcc(MnPlan.nrecmnplan,31, SpMnPlan.nrec, toSpPlanSnab, SpMnPl.nrec);// не работает, а нижнюю панель не вытаскивает спецификацию из плана
SpObjAcc.rewrite();
}
}
Суть проблемы: в плане снабжения на вкладке "Входящие документы" вытаскивается в верхнюю панель документ, вытаскивается в среднюю панель позиции входящего документа, а в нижнюю панель НЕ вытаскиваются позиции текущего документа (плана снабжения).
Вот неработающая строка из скрипта: SpObjAcc.CreateSpObjAcc(MnPlan.nrecmnplan,31, SpMnPlan.nrec, toSpPlanSnab, SpMnPl.nrec)
CreateSpObjAcc - это метод "Создать новую связь (с указанием заголовка)" для объекта SpObjAcc - Спецификация таблицы связей.
Как вытащить корректно в нижнюю панель спецификацию плана снабжения?
Re: Java скрипт - связь спецификации накладной и плана снабж
Добавлено: 18 фев 2014, 10:52
Zver
SpObjAcc.CreateSpObjAcc(MnPlan.nrecmnplan,31, SpMnPlan.nrec, toSpPlanSnab, SpMnPl.nrec)
Не могли бы Вы привести описание метода SpObjAcc.CreateSpObjAcc? Там, если не изменяет память, 4 а не 5 параметров.
Навскидку, подозрительным кажется параметр 31, возможно стоит использовать константу аналогичную toSpPlanSnab, возможно toMnfZakaz
Строка из файла:
toMnfZakaz = 17; // потребности /пр. заказ /ObjAcct.TypeObj
Re: Java скрипт - связь спецификации накладной и плана снабж
Добавлено: 18 фев 2014, 11:27
zna
Zver писал(а):
SpObjAcc.CreateSpObjAcc(MnPlan.nrecmnplan,31, SpMnPlan.nrec, toSpPlanSnab, SpMnPl.nrec)
Не могли бы Вы привести описание метода SpObjAcc.CreateSpObjAcc? Там, если не изменяет память, 4 а не 5 параметров.
Навскидку, подозрительным кажется параметр 31, возможно стоит использовать константу аналогичную toSpPlanSnab, возможно toMnfZakaz
Строка из файла:
toMnfZakaz = 17; // потребности /пр. заказ /ObjAcct.TypeObj
Для объекта SpObjAcc есть несколько методов: "Создать новую связь" - 4 параметра и "Создать новую связь (с указанием заголовка)"- 5 параметров. Автор выбрал 2-й метод- это правильно. Хотя можно попробовать и "Создать новую связь (используя объекты)" - полагаю, что создаст запись во 2-й панели.
Похоже, чтобы добавить связь в 3-ю, нижнюю панель, надо создать новую запись в SpObjAcc и потом модифицировать её так, чтобы она попала в 3-ю панель. Как модифицировать-см. п.3 в моём предыдущем посте.
Только зачем эти связи по спецификациям, так и не пойму. Мной сделана масса задач на JS, всегда обходился связями по заголовкам.
Re: Java скрипт - связь спецификации накладной и плана снабж
Добавлено: 18 фев 2014, 19:51
Serg7907
Итак, что же получается. Использую метод Создать новую связь (с указанием заголовка) -там 5 параметров.
Когда выполняется скрипт с таким блоком:
ObjAcc.InsertObjAcc(44,KatSopr.nreckatsopr,29,MnPlan.nrecmnplan);
ObjAcc.rewrite();
SpObjAcc.CreateSpObjAcc(ObjAcc.nrecobjacc,45, SpSopr.nrecspsopr, toSpSopr, SpMnPl.nrec);
SpObjAcc.rewrite();
Корректно заполняются верхняя панель (подтягиваем накладную) и средняя панель (спецификация накладной)
http://114.r.photoshare.ru/01141/00ae35 ... e53a66.jpg
Смотрю журнализацию, вижу, что создается запись в ObjAcc и 2 записи в SpObjAcc, модифицируется 1 запись в ObjAcc и 1 запись в SpObjAcc
http://114.r.photoshare.ru/01141/00ae35 ... c76f9f.jpg
Для записи в SpObjAcc создаются такие значения:
http://114.r.photoshare.ru/01141/00ae35 ... 427d29.jpg
Теперь хочу модифицировать вторую строку в SpObjAcc, добавляю в скрипт строку:
SpObjAcc.CreateSpObjAcc(ObjAcc.nrecobjacc,31, toSpPlanSnab,SpMnPlan.nrec, SpMnPl.nrec); запись не модифицируется.
Если создавать вручную эту запись, вот такие значения заполняются для записи в SpObjAcc:
http://114.r.photoshare.ru/01141/00ae35 ... 46aca2.jpg
Самое главное, заполняются поля TYPEOBJ=31 и COBJECT, равное nrec таблицы SPMNPL (спецификация плана). Как модифицировать запись так, чтоб заполнились эти поля. Я так понимаю, когда они заполнятся, запись должна попасть в нижнюю панель.
Моя конструкция SpObjAcc.CreateSpObjAcc(ObjAcc.nrecobjacc,31, toSpPlanSnab,SpMnPlan.nrec, SpMnPl.nrec) запись не модифицирует, хотя вроде все ссылки в конструкции есть.
Re: Java скрипт - связь спецификации накладной и плана снабж
Добавлено: 20 фев 2014, 08:41
zna
Serg7907 писал(а):
...
Теперь хочу модифицировать вторую строку в SpObjAcc, добавляю в скрипт строку:
SpObjAcc.CreateSpObjAcc(ObjAcc.nrecobjacc,31, toSpPlanSnab,SpMnPlan.nrec, SpMnPl.nrec); запись не модифицируется.
...
Этой строкой Вы не модифицируете, а создаёте новую строку. Модификация же делается так: для текущей позиции спецификации связи: SpObjAcc.PoleN := 555; SpObjAcct.rewrite(). Похоже, что надо для связи в 3-й панели делать ссылку на связь во 2-й панели, поищите поле типа SpObjAcc.cSpObjAcc.
Re: Java скрипт - связь спецификации накладной и плана снабж
Добавлено: 20 фев 2014, 12:12
Serg7907
В таблице SpObjAcc создаются 2 строки, одна из них модифицируется - это запись для средней панели (спецификация накладной)
Чтобы модифицировать вторую запись, я так понимаю, нужно воспользоваться конструкцией SpObjAcc.PoleN := 555. Можно ли в двух словах объяснить про эту конструкцию, и как она сможет модифицировать нужные мне поля?
Насчет поля SpObjAcc.cSpObjAcc-действительно ссылка там есть.
Re: Java скрипт - связь спецификации накладной и плана снабж
Добавлено: 20 фев 2014, 14:00
zna
Вы создали связь во 2-й панели. Нашли её nrec. Далее создали ещё одну запись, которую хотите в 3-ю панель поместить. Полагаю, что Вам надо для этого что-то вроде:
Код: Выделить всё
SpObjAcc.cSpObjAcc = nrec;
SpObjAcc.rewrite();
Re: Java скрипт - связь спецификации накладной и плана снабж
Добавлено: 20 фев 2014, 19:42
Serg7907
Спасибо, так сделал, запись модифицировалась. Но по-прежнему, в 3 панель ничего не попало. Я полагаю из-за того, что нужно еще модифицировать поле cobject в таблице SpObjAcc (это ссылка на nrec записи в таблице SPMNPL "Спецификация плана") - сейчас это поле пустое, и поле typeobj в таблице SpObjAcc - поставить значение 31.
Как изменить значение поля typeobj, я знаю - для объекта SpObjAcc есть поле документа "Тип связи", его явно зададим "31".
А вот как заполнить поле cobject - это вопрос. Для объекта SpObjAcc ничего из предложенных полей не нашел. Может Вы подскажите?
Re: Java скрипт - связь спецификации накладной и плана снабж
Добавлено: 21 фев 2014, 10:26
edward_K
чтобы не гадать - getifccurrentfieldname на нижней панели.
Re: Java скрипт - связь спецификации накладной и плана снабж
Добавлено: 21 фев 2014, 12:18
Serg7907
edward_K писал(а):чтобы не гадать - getifccurrentfieldname на нижней панели.
Наверно, не так меня поняли. Есть таблица SPOBJACC, в ней поле cobject, которое мне нужно модифицировать.
А есть объект "Спецификация таблицы связей" на вкладке "Свойства" в настройке алгоритма. И для этого объекта настраиваются поля документа. Так вот, среди них я не нашел такого поля, которое бы было равно значению cobject таблицы SPOBJACC.
Re: Java скрипт - связь спецификации накладной и плана снабж
Добавлено: 21 фев 2014, 12:45
edward_K
я могу вам привести вам вьюху фейса. К сожалению он там встроенный и значение параметров вам так просто не вычислить - тока конфигуратором. Наскока помню в зависимости от режима там подымаются разные bounds. Но искать как называется влом. Лет 5 назад я вроде добавлял vip алгоритмом.
Re: Java скрипт - связь спецификации накладной и плана снабж
Добавлено: 21 фев 2014, 12:56
Serg7907
edward_K писал(а):я могу вам привести вам вьюху фейса. К сожалению он там встроенный и значение параметров вам так просто не вычислить - тока конфигуратором. Наскока помню в зависимости от режима там подымаются разные bounds. Но искать как называется влом. Лет 5 назад я вроде добавлял vip алгоритмом.
Будьте добры ,если можно скиньте на электронку
erd_vit@mail.ru
Re: Java скрипт - связь спецификации накладной и плана снабж
Добавлено: 21 фев 2014, 13:04
zna
Serg7907 писал(а):... Так вот, среди них я не нашел такого поля, которое бы было равно значению cobject таблицы SPOBJACC.
Пробуйте свойства SpObjAcc.Ссылка на позицию спецификации (откуда) или SpObjAcc.Ссылка на позицию спецификации (куда).