[ОТВЕТИТЬ]
10.01.2008 09:16
Mihon
 
Уважаемые спецы!
Не писал ти кто-нибудь скриптик, кладущий документ (например ПН) в очередь почтовика? Не могли бы поделиться?
Честно говоря, сам бы попробовал написать, но тестировать негде, боюсь рабочую базу запороть.
заранее благодарен
10.01.2008 09:41
Mtirt
 
Приблизительно так... Судя по самой табличке smpostqueue. Не тестировала...

Код:
insert into supermag.smpostqueue(enqtime,enqseq,target,objtype,
objid,paramint,paramstr,transflags,virtpack,commentary) 
select  sysdate,rownum,null,doctype, docid , null, null, 
0,null, null from supermag.smdocuments 
where doctype=:VDoctype and docid=:VDocid
10.01.2008 10:10
Mihon
 
Пасиба...
Значит, в качестве
(enqtime,enqseq,target,objtype,objid,paramint,paramstr,transflags,virtpack,commentary)
подставляем
sysdate,rownum,null,doctype, docid , null, null, 0,null, null

А что за параметр enqseq = rownum и откуда его взять?
10.01.2008 10:33
Mtirt
 
Еще момент. target надо задать... Это id в таблице smpostlocations для той базы, куда ты хочешь послать документ.
Если стоит null - то отправишь всем.

rownum - номер строки в запросе. Если в запросе один документ, то всегда будет равняться 1. Если ты в запрос положишь несколько документов, то будет увеличиваться на 1 по каждому документу.
29.01.2008 14:30
Mihon
 
Небольшая проблемка, по-поводу target...
В дочерних базах в табличке smpostlocations есть только 1 строка (сам магазин), получается для отправки в центр непонятно какое значение для параметра target указать...
Предполагаю, что null, тогда в центр уйдет?
Но тогда непонятно откуда данные о "центре" возьмутся...
Подскажите, пожалуйста, заранее благодарен...
29.01.2008 15:01
Mtirt
 
Подожди. В дочерних базах эта одна строка как раз Центр. Просто видимо название вы ей дали - Магазин. :)

Там старшая база? Пути все в ЦО?
Я бы указала 1.
29.01.2008 15:15
Mihon
 
Код:
begin
insert into supermag.smpostqueue(enqtime,enqseq,target,objtype,
objid,paramint,paramstr,transflags,virtpack,commentary)
select  sysdate,rownum,null,doctype, docid , null, null, 
0,null, null from supermag.smdocuments 
where doctype=WI and docid='68ПН004436';
commit;
end;
/
Создал накладную в ДБ, запустил этот скрипт, реакции никакой. :(((
в чем может быть проблема?
29.01.2008 15:20
Mihon
 
В smpostlocations в доч. базе одна запись:
ID - 0, title - имя базы магазина, outdir, indir - пути к папкам соотв. магазина на сервере ЦО, притом outdir - это входящие для ЦО получаются, ну это понятно.
Может ее (id=0) и прописать?
29.01.2008 15:47
Mtirt
 
Еще вопрос. Версия См2000 какая? Просто в 1.25.1 поменялась структура таблицы SMPOSTQUEUE. Для неё вместо rownum рекомендую написать SMPOSTQUEUESEQ.Next. Недавно сами нарвались на проблемы с нумерацией... :(
29.01.2008 16:01
Mihon
 
1.024.6 SP5
А если я (как написал выше) null поставил, все равно должно было сработать...
Но почему-то не прошло
29.01.2008 16:04
Mtirt
 
Журнал отправки включен?
В интерфейсе почтового модуля этот объект в состав какого-либо пакета включается? Есть сообщение об ошибке?
29.01.2008 16:21
Mihon
 
В почтовике пакет даже не появился, такое впечатление что на команду система никак не отреагировала...
Через SQL Plus запускаю, пишет:
Код:
SQL> @doc_to_post.sql
Ввод усечен до 1 символов
where doctype='WI' and docid='68ПН004436';
                       *
ошибка в строке 6:
ORA-06550: Строка 6, столбец 24:
PLS-00201: идентификатор 'DOCID' должен быть объявлен
ORA-06550: Строка 2, столбец 1:
PL/SQL: SQL Statement ignored
29.01.2008 16:22
Mihon
 
Сейчас попробую к названияп таблиц и полей supermag дописать...
29.01.2008 16:27
Mihon
 
Код:
SQL> @doc_to_post.sql
Ввод усечен до 1 символов
where supermag.smdocuments.doctype='WI' and supermag.smdocuments.docid='68ПН004436';
                                                                 *
ошибка в строке 6:
ORA-06550: Строка 6, столбец 66:
PLS-00389: имя таблицы, представления или псевдонима "SUPERMAG.SMDOCUMENTS.DOCID" недопустимо в
этом контексте
ORA-06550: Строка 2, столбец 1:
PL/SQL: SQL Statement ignored
Не выходит! :(((((((
29.01.2008 16:30
Mihon
 
Ох, елки-палки!)))))))))))))))
там же не docid, a id))))))
29.01.2008 16:33
Mtirt
 
Угу. Я тоже самое увидела :)
29.01.2008 16:37
Mihon
 
Ну что,
Код:
Процедура PL/SQL успешно завершена.
Однако в почтовике как было пусто, так и осталось, пока не поставил target=0.
Когда targe=null было, почтовику абсолютно без разницы было)))))
Так что, все получилось!!!
Код:
Код:
begin
insert into supermag.smpostqueue(enqtime,enqseq,target,objtype,
objid,paramint,paramstr,transflags,virtpack,commentary)
select  sysdate,rownum,0,doctype, id , null, null, 
0,null, null from supermag.smdocuments 
where supermag.smdocuments.doctype='WI' and supermag.smdocuments.id='68¦=004436';
commit;
end;
/
30.01.2008 12:53
akonev
 
Цитата:
Mihon Однако в почтовике как было пусто, так и осталось, пока не поставил target=0.
Когда targe=null было, почтовику абсолютно без разницы было)))))
логично, в общем-то. что слать - сказали, а куда - не сказали. :)
30.01.2008 16:43
Mihon
 
2 Andrew_Konev
Цитата:
Mtirt Еще момент. target надо задать... Это id в таблице smpostlocations для той базы, куда ты хочешь послать документ.
Если стоит null - то отправишь всем.
...
Ориентировался по наставлению)))
30.01.2008 17:32
akonev
 
а это оказалось интереснее, чем казалось на первый взгляд.
действительно, null - это всем. точнее, всем подчиненным базам.
и сам супермаг, кстати, именно null втыкает.
30.01.2008 17:38
Mtirt
 
Понятно. В отличие от автора топика не пыталась рассылать автоматом из подчиненной базы в старшую, поэтому была уверена, что null - это просто всем. Будем знать.
31.01.2008 09:45
Mihon
 
)))))))гы))))))))
Всем спасибо!
Опции темы


Часовой пояс GMT +3, время: 09:31.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.