1.При «смене учетной политики», система при закрытии периода израсходует весь остаток товара. Чтобы этим же днем его оприходовать. Это позволит в будущем отказаться от всех «хвостов» документов. И принять во внимание, только один. Вот именно в качестве поставщика для всех товаров и будет использоваться «партнер по умолчанию». В качестве партнера можно указать как «свою» организацию, так и создать фиктивную.
Процесс закрытия периода обратимый, поэтому, если результаты его не устроят – период можно открыть, и вернуть «как было». Я же всегда всем рекомендую проделать эту операцию на резервном сервере. Чтобы оценить не только результат, но и время которое понадобится для закрытия. Если время закрытия окажется слишком большим, период придется закрывать частями. Т.е. (пример) вначале до 2011 года, потом до 2012 и так далее..
2.Запуск процедуры закрытия периода на складе.
Закрытие периода возможно только для старшей базы данных. Текущая база считается старшей, если в администраторе почтового модуля в ее настройках отсутствует почтовый ящик типа «старшая база».
Процедура закрытия запускается из административного модуля, вкладка «Аналитика - Периоды», кнопка «Закрыть период». Процедура может быть прервана и продолжена после прерывания.
Пользователю нужно указать дату закрытия, под которой понимается дата, начиная с которой документы остаются в открытом периоде. Например, если в качестве даты закрытия будет выбрано 1 апреля, то в закрытом периоде окажутся документы с датами, меньшими или равными 31 марта.
Период не может быть закрыт, если в нем находятся документы движения товара в статусе «розовая галка» («Принят на складе», «Отправлен», «Отпущен со склада» и т.п.). Либо переведите эти документы в статус «Черновик», либо оприходуйте их.
3.Любой учет ведется с соблюдением принципа полноты и непрерывности. Это принцип обеспечен только в центральной базе данных. Именно там и ведётся расчет товародвижения и себестоимости, поскольку только там имеются все документы товародвижения. В подчиненных базах имеется лишь фрагмент данных, относящихся к определенным местам хранения.
Расчет себестоимости и товародвижения следует выполнят лишь в центральной базе. В подчиненных базах это можно делать, техническая возможность имеется, но полученные результаты в этих базах ничтожны с точки зрения ведения учета.
Таким образом, сама задача сличения результатов учета (себестоимость) является бессмысленной. Разработчик системы таких возможностей никогда не обещал.
Вот еще есть обсуждение проблемы нашего клиента с аналитиком, может будет полезно: Вопрос по себестоимости товара, после закрытия периода.txt
Обязательно сделать копию БД, без копии и гарантии ее работоспособности, скрипты не запускать, дальше не читать!
---------------------------------------------------------------------------------------
1. Таблица SMPOSTOUTLOG содержит историю почтовых отправлений. Если история не нужна, таблицу можно очистить.
2. Таблица SMTIMESPANSALE - таблица итогов продаж за интервал времени для кассовых документов. Таблица используется в отчетах "Почасовая статистика ...". Для совсем давних времен эта таблица, смысла не имеет. Можно очистить ее скриптом:
declare
vBeforeDate date := to_date('01.01.2012','DD.MM.YYYY');
begin
loop
delete from SMTIMESPANSALE t
where exists (select 1 from SMDocuments d
where d.DocType=t.DocType
and d.ID=t.DocID
and D.Createdat<vBeforeDate)
and ROWNUM < 100000;
exit when SQL%ROWCOUNT = 0;
commit;
end loop;
end;
/
3. Таблица SSEVENTLOG - журнал различных событий. Автоматически чистится заданием "Сборка мусора". Сейчас там остаются данные за последние 3 года. Можно оставить записи только за последние 12 месяцев:
declare
vOldTime date := add_months( trunc(sysdate), -12 );
begin
delete from SSEventLog L where L.EventTime < vOldTime;
commit;
end;
/
4. Таблица SMPRICEHISTORY - история изменения цен. Если эта информация за все прошлые годы не интересна, можно ее удалить:
declare
vBeforeDate date := to_date('01.01.2012','DD.MM.YYYY');
begin
delete from SMPRICEHISTORY where EventTime < vBeforeDate;
commit;
end;
/
5. По п. 3-6 Нужно иметь в виду следующее, что:
Даты в скриптах (vBeforeDate, vOldTime) можно выставить самостоятельно, исходя из собственных соображений.
Удаление записей в таблицах не приведет к уменьшению физического размера (занимаемого размера) таблиц, но сократит объем данных и как следствие повысит быстродействие.
6. В БД присутствуют документы не оказывающие влияние на товародвижение, на начало 2016 года (использовался запрос):
select count(*), D.DocType from supermag.SMDocuments D
where D.CreatedAt < to_date('01.01.2016','DD.MM.YYYY')
and D.DocType in ('LA','FA','OR','OC',
'SO','BI','SR','ME',
'IL','RL','AC','AB','AD',
'SL','PL',
'CI','PW','PF',
'RD','BA') group by D.DocType;
Ранее (в 2006 году) уже применялся скрипт, с помощью которого удалялись документы по 2012 год. Скрипт во вложении, его можно использовать повторно, установив дату удаления исходя из собственных соображений.
7. Т.к. п.3-8 внесли существенные изменения в состав данных, в обязательном порядке через административный модуль необходимо собрать статистику (выполнить задание «Полный сбор статистики»).
--
еще скрипты:
declare
vBeforeDate date := to_date('01.01.2012','DD.MM.YYYY');
vCount integer;
begin
delete from supermag.TTDocList;
insert into supermag.TTDocList(DocType,ID)
select D.DocType, D.ID from supermag.SMDocuments D
where D.CreatedAt < vBeforeDate
and D.DocType in ('LA','FA','OR','OC',
'SO','BI','SR','ME',
'IL','RL','AC','AB','AD',
'SL','PL',
'CI','PW','PF',
'RD','BA');
commit;
Documents.SetMassiveLoad(true);
loop
vCount := 0;
for vRec in (select T.DocType, T.ID
from supermag.SMDocuments D, supermag.TTDocList T
where T.DocType = D.DocType
and T.ID = D.ID
and rownum <= 100000)
loop
vCount := 1;
delete from supermag.SMDocuments where DocType=vRec.DocType and ID=vRec.ID;
delete from supermag.SMCommonBases where BaseDocType=vRec.DocType and BaseID=vRec.ID;
delete from supermag.SMDocLog where DocType=vRec.DocType and ID=vRec.ID;
delete from supermag.TTDocList where DocType = vRec.DocType and ID=vRec.ID;
end loop;
commit;
exit when vCount=0;
end loop;
Documents.SetMassiveLoad(false);
end;
/
-------------------------------
Просто посмотреть сколько...
select D.DocType, D.ID, D.CreatedAt from supermag.SMDocuments D
where D.CreatedAt < to_date('01.01.2015','DD.MM.YYYY')
and D.DocType in ('LA','FA','OR','OC',
'SO','BI','SR','ME',
'IL','RL','AC','AB','AD',
'SL','PL',
'CI','PW','PF',
'RD','BA');
--------------------------------
select count(*) from supermag.SMDocuments D
where D.CreatedAt < to_date('01.01.2015','DD.MM.YYYY')
and D.DocType in ('LA','FA','OR','OC',
'SO','BI','SR','ME',
'IL','RL','AC','AB','AD',
'SL','PL',
'CI','PW','PF',
'RD','BA');