Выгрузка остатков из автоматизации Инфоаптека

Материал из wiki.standart-n.ru
Перейти к: навигация, поиск

Скрипт выгрузки из автоматизации торговли Инфоаптека

Подключить базу в IBExpert и выполнить в SQL редакторе:

select 'delete from doc_detail where doc_id=-1; ' from rdb$database
union all
select 'delete from doc_detail_active where doc_id=-1; ' from rdb$database
union all
select 'delete from doc_detail_deleted where doc_id=-1;' from rdb$database
union all
select 'delete from prices; ' from rdb$database
union all
select 'delete from parts where doc_id=-1;' from rdb$database
union all
select 'delete from docs where id in (-1);' from rdb$database
union all
select 'insert into docs (VNUM,ID,PARENT_ID,DOC_TYPE,STATUS,AGENT_ID,AUDIT_ID) values (1,-1,0,20,0,0,0);' from rdb$database
union all
select '
insert into doc_detail_active (doc_id,sname,scountry,sizg,bcode_izg,quant,price,price_o,seria,godendo,barcode1) values (-1,||
coalesce(replace(m.med_name,'','"'),) ||,||
coalesce(replace(c.country_name,'','"'),)||,||
coalesce(replace(v.vendor_name,'','"'),)||,||
coalesce(m.vendorbarcode,)||','||
cast(st.QTTY*1.0000/i.divisor as numeric(15,3))||','||
i.RPRICE||','||
i.SPRICE||',||
coalesce(i.SERIA,)||,||
coalesce(CAST(i.VALID_DATE AS DATE),'01.01.2000')||,'||
st.iid||');'

from stock st, items i, medicine m
left join vendor_v v on m.vendor_id=v.vendor_id
left join country c on v.country_id=c.country_id
where st.IID=i.IID and st.med_id=m.med_id and st.QTTY>0
union all
select 'commit work; ' from rdb$database
union all
select '--execute procedure PR_DOC_COMMIT(-1,0);' from rdb$database

В результате выполнения получится готовый скрипт на insert, который нужно скопировать в буфер через Экспортировать данные - выбрав пункт копировать в буфер. Открываем нашу чистую базу, открываем редактор скриптов, вставляем из буфера текст полученный из запроса выгрузки и выполняем, если все хорошо скрипт выполнится без ошибок Далее заходим в Инфоаптеку с ролью товароведа и проверяем остатки у нас в менеджере (Журнал документов - активные) и в отчете в Инфоаптеке - Товарные запасы. Если расхождения не значительные проводим документ выполнив комментированный блок:

execute procedure PR_DOC_COMMIT(-1,0);