Выгрузка остатков из автоматизации Инфоаптека — различия между версиями

Материал из wiki.standart-n.ru
Перейти к: навигация, поиск
(Новая страница: «== Скрипт выгрузки из автоматизации торговли Инфоаптека == Подключить базу в IBExpert и выпол…»)
 
(Скрипт выгрузки из автоматизации торговли Инфоаптека)
Строка 1: Строка 1:
 
== Скрипт выгрузки из автоматизации торговли Инфоаптека ==
 
== Скрипт выгрузки из автоматизации торговли Инфоаптека ==
 
Подключить базу в IBExpert и выполнить в SQL редакторе:
 
Подключить базу в IBExpert и выполнить в SQL редакторе:
select 'delete from doc_detail where doc_id=-1; ' from rdb$database
+
<nowiki>
union all
+
select 'delete from doc_detail where doc_id=-1; ' from rdb$database
select 'delete from doc_detail_active where doc_id=-1; ' from rdb$database
+
union all
union all
+
select 'delete from doc_detail_active where doc_id=-1; ' from rdb$database
select 'delete from doc_detail_deleted where doc_id=-1;' from rdb$database
+
union all
union all
+
select 'delete from doc_detail_deleted where doc_id=-1;' from rdb$database
select 'delete from prices; ' from rdb$database
+
union all
union all
+
select 'delete from prices; ' from rdb$database
select 'delete from parts where doc_id=-1;' from rdb$database
+
union all
union all
+
select 'delete from parts where doc_id=-1;' from rdb$database
select 'delete from docs where id in (-1);' from rdb$database
+
union all
union all
+
select 'delete from docs where id in (-1);' from rdb$database
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
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
select '
+
union all
insert into doc_detail_active (doc_id,sname,scountry,sizg,bcode_izg,quant,price,price_o,seria,godendo,barcode1) values (-1,'''||
+
select '
coalesce(replace(m.med_name,'''','"'),'') ||''','''||
+
insert into doc_detail_active (doc_id,sname,scountry,sizg,bcode_izg,quant,price,price_o,seria,godendo,barcode1) values (-1,'''||
coalesce(replace(c.country_name,'''','"'),'')||''','''||
+
coalesce(replace(replace(m.med_name,'"',''),'''',''),'') ||''','''||
coalesce(replace(v.vendor_name,'''','"'),'')||''','''||
+
coalesce(replace(replace(c.country_name,'"',''),'''',''),'')||''','''||
coalesce(m.vendorbarcode,'')||''','||
+
coalesce(replace(replace(v.vendor_name,'"',''),'''',''),'')||''',(select res_bcode from utpr_getchecksum_ean13('''||
cast(st.QTTY*1.0000/i.divisor as numeric(15,3))||','||
+
coalesce(m.vendorbarcode,'')||''','''')),'||
i.RPRICE||','||
+
cast(st.QTTY*1.0000/i.divisor as numeric(15,3))||','||
i.SPRICE||','''||
+
i.RPRICE||','||
coalesce(i.SERIA,'')||''','''||
+
i.SPRICE||','''||
coalesce(CAST(i.VALID_DATE AS DATE),'01.01.2000')||''','||
+
coalesce(i.SERIA,'')||''','''||
st.iid||');'
+
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
+
from stock st, items i, medicine m
left join country c on v.country_id=c.country_id
+
left join vendor_v v on m.vendor_id=v.vendor_id
where st.IID=i.IID and st.med_id=m.med_id and st.QTTY>0
+
left join country c on v.country_id=c.country_id
union all
+
where st.IID=i.IID and st.med_id=m.med_id and st.QTTY>0
select 'commit work; ' from rdb$database
+
union all
union all
+
select 'commit work; ' from rdb$database
select '--execute procedure PR_DOC_COMMIT(-1,0);' from rdb$database
+
union all
 +
select '--execute procedure PR_DOC_COMMIT(-1,0);' from rdb$database
 +
 
 +
</nowiki>
  
 
В результате выполнения получится готовый скрипт на insert, который нужно скопировать в буфер через Экспортировать данные - выбрав пункт копировать в буфер.
 
В результате выполнения получится готовый скрипт на insert, который нужно скопировать в буфер через Экспортировать данные - выбрав пункт копировать в буфер.

Версия 14:41, 15 декабря 2021

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

Подключить базу в 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(replace(m.med_name,'"',''),'''',''),'') ||''','''|| coalesce(replace(replace(c.country_name,'"',''),'''',''),'')||''','''|| coalesce(replace(replace(v.vendor_name,'"',''),'''',''),'')||''',(select res_bcode from utpr_getchecksum_ean13('''|| 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);