Сжатие проводок Управления Запасами

Автор Сообщение
Удалён
Гость

Добавлено: 20.07.2005 13:23 Заголовок сообщения: Сжатие проводок Управления Запасами
Появилась необходимость сжатия проводок файла запасов прошлых годов. Пробовали запускать спец. функцию: работает долго и результат не совсем устраивает( не вижу проводки типа 00). Пробовал ли кто-нибудь проводить сжатие? И какими методами: скалой или сами писали программу?
Poteev
Старший форумщик

Зарегистрирован: 20.09.2004
Сообщения: 24
Откуда: Санкт-Петербург

Добавлено: 20.07.2005 15:11 Заголовок сообщения:
AAV, это по твоей части вопрос. Но общее правило такое: любое сжатие предусматривает потерю части информации.
Скальская функция работает, только надо быть готовым, что уйдет часть аналитики по складским движениям.
aav
Администратор
Администратор

Зарегистрирован: 14.09.2004
Сообщения: 1081
Откуда: Санкт-Петербург

Добавлено: 20.07.2005 16:15 Заголовок сообщения: Re: Сжатие проводок Управления Запасами

wal писал(а):
Появилась необходимость сжатия проводок файла запасов прошлых годов. Пробовали запускать спец. функцию: работает долго и результат не совсем устраивает( не вижу проводки типа 00). Пробовал ли кто-нибудь проводить сжатие? И какими методами: скалой или сами писали программу?


Вообще довольно глюкавая утилита. Первое: ни в коем случае нельзя сжимать по складам (если это не поправили, я рапортил концептуальную багу лет 5 назад), она тогда подставляет вместо склада ——, т.е. запасы становятся вне складов. Второе, если сжимать по типам проводок, то проводок типа 00, по-моему и не создается, все вступительное сальдо будет обозначено проводками типа 01.
А, вообще, какова задача? Что нужно получить? До какого уровня сжать и по каким параметрам? А самое главное, какая у Вас модель оценки запасов: FIFO, LIFO, средневзвешенная? Если пытаться сделать сжатие внешними средствами, это очень существенный вопрос. Кроме того, очень существенный вопрос, на какую дату Вы собираетесь сжать проводки, я имею в виду 2 разных сценария:
1. на 31.07.2005 все останавливаем, сжимаем и далее продолжаем работу
2. сжимаем на 31.12.2004 не останавливая работу

Poteev писал(а):
…общее правило такое: любое сжатие предусматривает потерю части информации.
Скальская функция работает, только надо быть готовым, что уйдет часть аналитики по складским движениям.


Можно пойти таким путем, например:
Перетаскиваем базу или таблицу в тестовую инсталляцию Скалы или тестовую компанию. Делаем дополнительную копию таблицы. Запоминаем последнее значение поля SC07022. Сжимаем. Все, что было в исходной таблице, где SC07022<=запомненного значения удаляем, взамен добавляем то, что получилось в результате сжатия. А если будут нужны подробные отчеты, то взамен сжатых строк используем данные из той таблицы, копию которой мы сделали. Если речь идет о внешнем отчете, тогда все просто, если нужно смотреть из Скалы, тогда для этих целей можно использовать отдельную компанию.

Удалён
Гость

Добавлено: 21.07.2005 07:54 Заголовок сообщения:
Задача стоит такая:иметь помесячное сальдо по номенклатуре по складам.У нас ведется учет по номенклатурным ценам и сжатие предполагается провести за прошлые года.
Я проводила тестирование этой спецфункции на учебной Скале. И вот какие появились вопросы. Во-первых, после сжатия 00 проводки действительно не создается, получаем проводки только типов 01 и 03(это если указываем сжатие проводок по закупкам).Во-вторых, по номенклатурам, по которым баланс в данном месяце равен нулю — некоторые отображались с количеством 0, а некоторые стирались и проводок по ним не оставалось в данном промежутке времени.Почему это так остается вопросом.
И по времени — сжатие проводок за год заняло около двух суток.
aav
Администратор
Администратор

Зарегистрирован: 14.09.2004
Сообщения: 1081
Откуда: Санкт-Петербург

Добавлено: 21.07.2005 08:39 Заголовок сообщения: Уточнения

wal писал(а):
Задача стоит такая:иметь помесячное сальдо по номенклатуре по складам.У нас ведется учет по номенклатурным ценам и сжатие предполагается провести за прошлые года.

Что подразумевается под номенклатурной ценой? В параметрах модуля «Управление Запасами» модель оценки запасов какая? Или это несущественный вопрос?

wal писал(а):
Я проводила тестирование этой спецфункции на учебной Скале. И вот какие появились вопросы. Во-первых, после сжатия 00 проводки действительно не создается, получаем проводки только типов 01 и 03(это если указываем сжатие проводок по закупкам).

Я не совсем понял: нам надо получить одну проводку за месяц по каждому запасу или отдельные типы проводок? Т.е. требуется ли видеть, что за месяц количество запаса уменьшилось на 3 единицы (свернутые обороты) или, что был приход 100 единиц и расход 103 единиц (развернутые обороты)? Я пока понял задачу так: Вам надо печатать остатки на конец (или начало) месяца и видеть правильное сальдо (с кратностью в месяц), так? Тогда отдельные типы проводок нам не важны.

wal писал(а):
Во-вторых, по номенклатурам, по которым баланс в данном месяце равен нулю — некоторые отображались с количеством 0, а некоторые стирались и проводок по ним не оставалось в данном промежутке времени.Почему это так остается вопросом.

А как Вы смотрите? С помощью «Отчета на конец периода»? Он, в частности, может не показывать позиции, для которых не было ни одной проводки по заданному складу.
И нужны ли проводки по тем запасам, по которым за месяц не было оборота? Или я плохо понял задачу?

wal писал(а):
И по времени — сжатие проводок за год заняло около двух суток.

Так это же Скала! Laughing Она же все делает курсорами, переборами и т.д.

Удалён
Гость

Добавлено: 21.07.2005 13:08 Заголовок сообщения:
Модельоценки запасов 3- Нормативная стоимость.
Получить в итоге нужно одну проводку за месяц.(Я указывала типы проводок в связи с тем, что вызывает вопрос почему ,например, при наличии только прихода по номенклатуре в месяце, в итоге получаешь свернутую проводку совсем не с типом 00)
По поводу отражения номенклатур с нулевым балансом.Все результаты я смотрела непосредственно в базе.Дело не в том,хочу ли я увидеть эти номенклатуры или нет, а в том, почему часть из них осталась, а часть стерта.В чем тогда между ними разница?
И больше всего интересует, делал ли кто-нибудь это не скальскими методами.
aav
Администратор
Администратор

Зарегистрирован: 14.09.2004
Сообщения: 1081
Откуда: Санкт-Петербург

Добавлено: 21.07.2005 13:51 Заголовок сообщения: Лучший способ — компромиссный

wal писал(а):
По поводу отражения номенклатур с нулевым балансом.Все результаты я смотрела непосредственно в базе.Дело не в том,хочу ли я увидеть эти номенклатуры или нет, а в том, почему часть из них осталась, а часть стерта.В чем тогда между ними разница?

Какой тип имеют проводки с нулевым количеством?

wal писал(а):
И больше всего интересует, делал ли кто-нибудь это не скальскими методами.

Разумеется, однако самый разумный способ — комбинированный. Один из самых простых способов сжатия — это импорт приходов (и/или расходов, зависит от знака изменения количества за месяц) в чистую компанию помесячно, а потом уже в эту таблицу добавить все несжатые проводки. Занимает многократно меньшее количество времени. С моделью оценки запасов «нормативная стоимость» Вам даже не нужно подсчитывать по таблице проводок среднюю стоимость, важно только обсудить с бухгалтерами, как они хотят видеть себестоимость запасов (в сжатых проводках): по исторической на тот момент нормативной цене или по нормативной на конец периода сжатия. Все зависит от Ваших процедур изменения нормативной цены, так, например, в некоторых компаниях производится ежемесячная переоценка отстатков запасов на складе (при изменении нормативной цены)

Удалён
Гость

Добавлено: 22.07.2005 07:01 Заголовок сообщения:
По поставленным вопросам:
Проводки с нулевым количеством имеют тип 3.
Мы как раз относимся к тем компаниям, в которых проводится ежемесячно переоценка остатков запасов на складе.
По поводу комбинированного способа, хотелось бы уточнить:
1. Разворачиваем таблицу с проводками на учебной скале.
2. Убираем проводки за период который не хотим сжимать.
3. Запускаем на учебной спецфункцию по сжатию.
4. Дописываем не сжатые проводки.
5. Делаем резервную копию и разворачиваем ее на рабочей скале.
А как при этом быть с файлом партий? При сжатии в нем происходят изменения?
aav
Администратор
Администратор

Зарегистрирован: 14.09.2004
Сообщения: 1081
Откуда: Санкт-Петербург

Добавлено: 22.07.2005 14:16 Заголовок сообщения: Отлично!

wal писал(а):
По поставленным вопросам:
Проводки с нулевым количеством имеют тип 3.
Мы как раз относимся к тем компаниям, в которых проводится ежемесячно переоценка остатков запасов на складе.


Замечательно! Проводки типа 03 и не должны иметь количества, а проводка типа 01 с нулевым количеством не имеет смысла, потому и «убирается»

wal писал(а):
По поводу комбинированного способа, хотелось бы уточнить:
1. Разворачиваем таблицу с проводками на учебной скале.
2. Убираем проводки за период который не хотим сжимать.
3. Запускаем на учебной спецфункцию по сжатию.
4. Дописываем не сжатые проводки.
5. Делаем резервную копию и разворачиваем ее на рабочей скале.
А как при этом быть с файлом партий? При сжатии в нем происходят изменения?

Насколько я знаю, сжатие затрагивает только SC07 таблицу, но я не уверен, в этом надо обязательно убедиться, проделав небольшой тест. В принципе, Вы можете убрать из SC33 таблицы все записи, где флаг Empty Batch установлен в единицу.
Можно так, как Вы предлагаете, а можно иначе:
1. На учебной Скале делаем таблицу проводок, таблицу партий пустыми. Запускаем спецфункцию «Проверка файла позиций запасов»
2. Делаем импорт полученных запасов, затем импорт выданных запасов за один месяц, далее повторяем процедуру для следующего месяца и так далее — для всех месяцев.
3. Сжатие не запускаем.
далее, как описано Вами. Как альтернативный вариант — удаляем в живой Скале (разумеется сначала делаем резервную копию Wink ) проводки, которые Вы хотели сжать, взамен записываем результаты импорта.
Также обязательно надо выполнить спецфункцию «Проверка проводок по запасам», при условии, что Вы создаете проводки Главной книги модуля «Управление Запасами»
Посчитать обороты за месяц можно с помощью примерно такого запроса:

Код:
SELECT
SC07003 as StockCode,
Sum([SC07004]) AS Qty,
[totalValue] = sum(case SC07001
when ’00’ then SC07005*SC07004
when ’01’ then SC07005*SC07004
when ’02’ then SC07005*SC07004
when ’03’ then SC07005
when ’04’ then SC07005*SC07004
when ’05’ then SC07005
when ’06’ then SC07005
when ’07’ then -SC07005
when ’08’ then SC07005
when ’09’ then SC07005*SC07004
when ’10’ then SC07005
end),
SC07009 as Warehouse,
[totalValueCC] = sum(case SC07001
when ’00’ then SC07028*SC07004
when ’01’ then SC07028*SC07004
when ’02’ then SC07028*SC07004
when ’03’ then SC07028
when ’04’ then SC07028*SC07004
when ’05’ then SC07028
when ’06’ then SC07028
when ’07’ then -SC07028
when ’08’ then SC07028
when ’09’ then SC07028*SC07004
when ’10’ then SC07028
end), month(SC07002) as TransactionMonth, year(SC07002) as TransactionYear
FRM dbo.SC070100
GROUP BY SC07003, SC07009, month(SC07002), year(SC07002)
HAVING ((Sum([SC07004])<>0) or ((Sum([SC07004])=0) and (Sum(case SC07001
when ’00’ then SC07005*SC07004
when ’01’ then SC07005*SC07004
when ’02’ then SC07005*SC07004
when ’03’ then SC07005
when ’04’ then SC07005*SC07004
when ’05’ then SC07005
when ’06’ then SC07005
when ’07’ then -SC07005
when ’08’ then SC07005
when ’09’ then SC07005*SC07004
when ’10’ then SC07005
end)<>0)) or ((Sum([SC07004])=0) and (sum(case SC07001
when ’00’ then SC07028*SC07004
when ’01’ then SC07028*SC07004
when ’02’ then SC07028*SC07004
when ’03’ then SC07028
when ’04’ then SC07028*SC07004
when ’05’ then SC07028
when ’06’ then SC07028
when ’07’ then -SC07028
when ’08’ then SC07028
when ’09’ then SC07028*SC07004
when ’10’ then SC07028
end)<>0)))
ORDER BY year(SC07002), month(SC07002), SC07003, SC07009


Ну, полученные суммы поделите на количества самостоятельно, ладно? Wink Возможная засада может состоять в том случае, если за месяц не было количественного движения запасов, но была переоценка, проводки подобного рода не импортятся «впрямую».
Подведем итоги: однозначного ответа на вопрос, «как правильнее?», не существует. Как меня учили в The Open University правильный тот, который Вы считаете правильным, задача относится к разряду мягких…
Успехов!!!

Удалён
Гость

Добавлено: 23.08.2005 14:24 Заголовок сообщения: Re: Отлично!

aav писал(а):
Посчитать обороты за месяц можно с помощью примерно такого запроса:

Код:
SELECT
SC07003 as StockCode,
Sum([SC07004]) AS Qty,
[totalValue] = sum(case SC07001
when ’00’ then SC07005*SC07004
when ’01’ then SC07005*SC07004
when ’02’ then SC07005*SC07004
when ’03’ then SC07005
when ’04’ then SC07005*SC07004
when ’05’ then SC07005
when ’06’ then SC07005
when ’07’ then -SC07005
when ’08’ then SC07005
when ’09’ then SC07005*SC07004
when ’10’ then SC07005
end),
SC07009 as Warehouse,
[totalValueCC] = sum(case SC07001
when ’00’ then SC07028*SC07004
when ’01’ then SC07028*SC07004
when ’02’ then SC07028*SC07004
when ’03’ then SC07028
when ’04’ then SC07028*SC07004
when ’05’ then SC07028
when ’06’ then SC07028
when ’07’ then -SC07028
when ’08’ then SC07028
when ’09’ then SC07028*SC07004
when ’10’ then SC07028
end), month(SC07002) as TransactionMonth, year(SC07002) as TransactionYear
FRM dbo.SC070100
GROUP BY SC07003, SC07009, month(SC07002), year(SC07002)
HAVING ((Sum([SC07004])<>0) or ((Sum([SC07004])=0) and (Sum(case SC07001
when ’00’ then SC07005*SC07004
when ’01’ then SC07005*SC07004
when ’02’ then SC07005*SC07004
when ’03’ then SC07005
when ’04’ then SC07005*SC07004
when ’05’ then SC07005
when ’06’ then SC07005
when ’07’ then -SC07005
when ’08’ then SC07005
when ’09’ then SC07005*SC07004
when ’10’ then SC07005
end)<>0)) or ((Sum([SC07004])=0) and (sum(case SC07001
when ’00’ then SC07028*SC07004
when ’01’ then SC07028*SC07004
when ’02’ then SC07028*SC07004
when ’03’ then SC07028
when ’04’ then SC07028*SC07004
when ’05’ then SC07028
when ’06’ then SC07028
when ’07’ then -SC07028
when ’08’ then SC07028
when ’09’ then SC07028*SC07004
when ’10’ then SC07028
end)<>0)))
ORDER BY year(SC07002), month(SC07002), SC07003, SC07009

Предлагаю немного усовершенствовать запрос, создав табличку
SignSC07 из двух столбцов:

Код:
SC07001           SignQty   
    00                 0
    01                 0
    02                 0
    03                 1
    04                 0
    05                 1
    06                 1
    07                -1
    08                 1
    09                 0
    10                 1


после чего можно заменить case на выражение SC07005*(SC07004+SignQty), и запрос примет вид:

Код:
SELECT
SC07003 as StockCode,
Sum([SC07004]) AS Qty,
[totalValue] = sum(SC07005*(SC07004+SignQty)),
SC07009 as Warehouse,
[totalValueCC] = sum(SC07028*(SC07004+SignQty)),
month(SC07002) as TransactionMonth, year(SC07002) as TransactionYear
FRM dbo.SC070100  inner join dbo.SignSC07 on           
            SC070100.SC07001=SignSC07.SC07001
GROUP BY SC07003, SC07009, month(SC07002), year(SC07002)
HAVING Sum([SC07004])<>0
      or Sum([SC07004])=0 and Sum(SC07005*(SC07004+SignQty))<>0
      or Sum([SC07004])=0 and sum(SC07028*(SC07004+SignQty))<>0
ORDER BY year(SC07002), month(SC07002), SC07003, SC07009

Пустячок, а приятно Smile

aav
Администратор
Администратор

Зарегистрирован: 14.09.2004
Сообщения: 1081
Откуда: Санкт-Петербург

Добавлено: 24.08.2005 07:39 Заголовок сообщения: Re: Отлично!

Надежда писал(а):
Предлагаю немного усовершенствовать запрос, создав табличку…

Пустячок, а приятно Smile

Можно. Smile А можно и простенькую функцию написать, тогда и дополнительную таблицу создавать не придется Wink