powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / 1с MS AS Excel Остаток
20 сообщений из 45, страница 2 из 2
1с MS AS Excel Остаток
    #33212091
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
далее делаем два куба физических (КубОстатков и КубДвиженийОстатков) на основе соответствующих вьюх и виртуальный куб (КубОстатковИДвиженийОстатков) соответственно из двух данных.
я не беду останавливаться на том как источник данных сделать и т.п. мелочи.
1. сделаем шаровые измерения которые учавствут у нас в обоих кубах и по которым мы будем связывать кубы:
1.1. Период на основе вьюхи dbo.VIEW_DWH_VREMA_RGRA_99 тут просто тип зададим что это временное измерение в иерархией год,месяц,день. создали отпроцессим его
1.2. Номенклатура возьмем сразу источником таблицу SC33 (это тут у меня номенклатура храниться) это у нас Parent-Child измерение зададим столбец кто парент и столбец кто чилд
1.3. Склад возьмем сразу источником таблицу SC31 (склады у мене тута) это просто плоское измерение без всяких иерархий
2. общие измерения сделали делаем кубы:
2.1. КубОстатков сделаем как на рисунке:
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33212099
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2.2. КубДвиженийОстатков сделаем тоже как на рисунке
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33212131
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
замечаем что в КубДвиженийОстатков мы Дату движения (DATA_DVIJENIA) связали с периодом (PERIOD).
2.3. ну и делаем вируальный КубОстатковИДвиженийОстатков визардом он очень выстренько создаеться, но тут другая засада если приходы и расходы суммируються как нам и надо, то с остатком (наследие куба остаков) не все так просто. короче будем писать вычисление остатков на любую дату, мы селаем немного проще вычислим НачОстаток на дату котоый считаеться как сумма остатка на начало месяца а потом сумма всех приходов минус сумма всех расходов до данной даты в месяце, ладно короче СМ для НачОстаток=([Период].CurrentMember.FirstSibling,[Measures].[Ostatok])+sum([Период].CurrentMember.FirstSibling:[Период].CurrentMember,[Measures].[Prihod]-[Measures].[Rashod])-([Measures].[Prihod]-[Measures].[Rashod])
можно еще и КонОстаток=([Период].CurrentMember.FirstSibling,[Measures].[Ostatok])+sum([Период].CurrentMember.FirstSibling:[Период].CurrentMember,[Measures].[Prihod]-[Measures].[Rashod])
можно еще и приходы и расходы сделать как СМ, вычислим еще и средне дневной остаток СрДнОстаток=Avg(Descendants([Период],[Период].[Day]),([Measures].[НачОстаток]+[Measures].[КонОстаток])/2)
т.к. мы все наши меры сделали СМ, то можно виртуральные Prihod, Rashod и Ostatok отключить Visible=False
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33212156
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну вот мы получили КубОстатковИДвиженийОстатков
с измерениями: Период, Номенклатура, Склад
с мерами: НачОстаток, Приход, Расход, Коностаток, СрДнОстаток

и пользуясь своим любимым клиентом www.msolapvb.narod.ru можем любоваться полученными результатами 8-).

Народ если у кого есть пояснения или дополнения или исправления прошу постить будем народ после сюды отправлять. типа FAQ сделаем
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33212728
Сергей84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно.
Только вы забыли уточнить, что поле date_time_iddoc в таблице движений регистра появляется после установки галочки - "быстрая обработка движений".
Еще не совсем понял ваши мохинации с convert? Зачем так усложнять себе жизнь? Не судьба сделать left(date_time_iddoc,8) в результате строка типа '20010101' и так MSSQL воспринимается как дата, после чего можно получить и месяц и год :)
Так же в RG хранятся не остатки на начло месяца, а остатки на ТА :) (если я не понял вас - поправьте меня), для высичления Остатка на дату можно воспользоваться такой вот конструкцией:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
select 
		SP101 ID, SUM(CASE WHEN SP100='     1   ' THEN KOL END) OST, SUM(CASE WHEN SP100='     2   ' THEN KOL END) TRN
	 from
		(SELECT 
			SP100, SP101,SP102 KOL
		FROM 
			RG99  (NOLOCK) INNER JOIN @TOVAR TOVAR ON RG99.SP101=TOVAR.ID
		WHERE
			PERIOD=@ДатаНачалаПредыдущегоМесяца
		UNION ALL
		SELECT 
			SP100, SP101,SP102*( 1 -DEBKRED* 2 ) KOL
		FROM 
			RA99 (NOLOCK) INNER JOIN _1SJOURN (NOLOCK) ON RA99.IDDOC=_1SJOURN.IDDOC
				      INNER JOIN @TOVAR TOVAR ON RA99.SP101=TOVAR.ID
		WHERE
			DATE_TIME_IDDOC BETWEEN convert(nvarchar, @ДатаНачалаМесяца,  112 ) AND convert(nvarchar, GetDate(),  112 ) 
		) S 
	 group by SP101
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33212825
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спс за поправки, мои манипуляции с convert Это точно махинации спс за уточнение
а насчет регистров, вот документация:

Остаточный регистр

Реализуется с помощью двух таблиц: RGxxx и RAxxx.

Первая таблица содержит значения функции НачОст на начало каждого периода указанного в меню системы "Операции - Управление оперативными итогами" в секции "Периодичность сохранение остатков". Значение данной функции может хранится на начало каждой пятидневки, десятидневки, на начало каждых пятнадцати дней, на начало каждого месяца. Для каждого регистра данная опция действует одинаково, таким образом нет возможности установить разную периодичность для разных регистров.

Замечу, что кроме функции НачОст можно также получить и функцию КонОст, так как остаток на начало текущего периода является остатком на конец предыдущего. Если вам нужно получить остаток на начало какого-то периода, то для поля PERIOD вы должны указать значение начала предыдущего периода (то есть НачОст(01.01.2002) ~ PERIOD = 20020112).
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33212875
Сергей84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эт я читал :)
Только там написано так, что можно подумать, что если сейчас 02.01.2005, то таблица RG хранти дынные только на 01.01.2005, а вот нет :) прикол в том, что она хранит на ТА, т.е. учитывая 02.01.2005.
Если посмотреть в profiler-е, то функция СводныйОстатко() - обрабатывается как select SUM(XXX) from RGxxx where <усливие>, а НачОст считатется вот так select SUM(XXX) from RGxxx where PERIOD = НачПредыдущегоМесяца <усливие>
ЗЫ я долго тормозил по этому поводу, когда наткнулся на то, что мои предположения о том что хранится в RG неверны :)
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33213239
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
8-)
ладно сделаем по другому
если в конфигураторе стоит детализация по месяцу то и осттки там будут храниться на начало кажого месяца, запрос

select *
from rg99

выбирает
PERIOD SP3603 SP101 SP100 SP102
2004-08-01 00:00:00.000 0 4 1 10000.00000
2004-09-01 00:00:00.000 0 4 1 10000.00000
2004-10-01 00:00:00.000 0 4 1 10000.00000
2004-11-01 00:00:00.000 0 4 1 10000.00000
2004-12-01 00:00:00.000 0 4 1 10000.00000
2005-01-01 00:00:00.000 0 4 1 10003.00000
2005-02-01 00:00:00.000 0 4 1 9995.00000
2005-03-01 00:00:00.000 0 4 1 9995.00000
2005-04-01 00:00:00.000 0 4 1 9995.00000
2005-05-01 00:00:00.000 0 4 1 9995.00000
2005-06-01 00:00:00.000 0 4 1 9995.00000
2005-06-01 00:00:00.000 0 5 1 2.00000
2005-07-01 00:00:00.000 0 4 1 9995.00000
2005-07-01 00:00:00.000 0 5 1 2.00000
2005-08-01 00:00:00.000 0 4 1 9995.00000
2005-08-01 00:00:00.000 0 5 1 2.00000

где PERIOD это дата остаков, SP3603 -фирма, SP101 -номенклатура, SP100 -склад, SP102 -остаток

точка актуальности у меня стоит на 07.08.2005
какой релиз платформы у вас? т.к. я получил то что и ожидал
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33213409
Сергей84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня релиз 25...
все поля один в один, как у вас :)
ну вот мои данные (для чистоты эксперимента отобрал такие товары которые двигались в период НачМесяца и ТА) :
вот этос и данные по нему
Код: plaintext
1.
2.
select PERIOD, SP3603, SP101, SP100, SUM(SP102) from RG99
where period = '20050801' and SP100 = '     1   ' and SP101 in ('   CG010 ','   XRT10 ','   5LW   ') 
group by PERIOD, SP3603, SP101, SP100
он показал вот такие данные
Код: plaintext
1.
2.
3.
4.
              PERIOD               SP3603      SP100   SP101  SP102
 2005 - 08 - 01   00 : 00 : 00 . 000 	      0    	   5LW   	      1    	 7 . 00000 
 2005 - 08 - 01   00 : 00 : 00 . 000 	      0    	   CG010 	      1    	. 00000 
 2005 - 08 - 01   00 : 00 : 00 . 000 	      0    	   XRT10 	      1    	 13 . 00000 
а запрос
Код: plaintext
1.
2.
select PERIOD, SP3603, SP101, SP100, SUM(SP102) from RG99
where period = '20050701' and SP100 = '     1   ' and SP101 in ('   CG010 ','   XRT10 ','   5LW   ') 
group by PERIOD, SP3603, SP101, SP100
возвращает
Код: plaintext
1.
2.
3.
4.
5.
 
   ЗУКШЩВ                        SP3603      SP100   SP101  SP102
 2005 - 07 - 01   00 : 00 : 00 . 000 	      0    	   5LW   	      1    	 45 . 00000 
 2005 - 07 - 01   00 : 00 : 00 . 000 	      0    	   CG010 	      1    	 4 . 00000 
 2005 - 07 - 01   00 : 00 : 00 . 000 	      0    	   XRT10 	      1    	 47 . 00000 	
По просту первый по логике это НачОст и второй НачОст на предыдущий месяц, если же между ними и могут быть расхождения, то только незначительные, но как мы видим это не так, теперь возмем 3-й запрос
Код: plaintext
1.
2.
select SP3603, SP100, SP101, SUM(SP102*( 1 -DEBKRED* 2 )) from ra99 inner join _1SJOURN on ra99.IDDOC = _1SJOURN.IDDOC 
where date_time_iddoc > '20050801' and SP101 in ('   CG010 ','   XRT10 ','   5LW   ') and SP100 = '     1   '
group by  SP3603, SP100, SP101
этот запрос отображает движения документов с 01.08.2005 по ТА, получаем:
Код: plaintext
1.
2.
3.
4.
 SP3603     SP100    SP101     SP102
      0    	      1    	   5LW   	- 38 . 00000 
      0    	      1    	   CG010 	- 4 . 00000 
      0    	      1    	   XRT10 	- 34 . 00000 
теперь считаем
Код: plaintext
1.
2.
3.
 7 . 00000  -  45 . 00000  =  - 38 . 00000 
. 00000  -  4 . 00000  = - 4 . 00000 
 13 . 00000  -  47 . 00000  = - 34 . 00000 
ВЕРНО!!! :)
Следовательно данные, у которых период = 01.07.05 хранят на самом деле остаток на конец 7-го или начало 8-го месяца, а данные с периодом 01.08.05 отображают состояние остатков на ТА :)
А наткнулся я на это, когда написал миграцию на тригерах остатков и у меня полезли минуса :)
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33213424
Сергей84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот запрос функции КонОст на конец 01.07.2005
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select SP3603, SP101, SP100, SUM(OST) from
(
	select SP3603, SP101, SP100, SP102 OST from RG99
	where period = '20050601' and SP100 = '     1   ' and SP101 in ('   CG010 ','   XRT10 ','   5LW   ') 
	UNION all
	select SP3603, SP101, SP100, SP102*( 1 -DEBKRED* 2 ) OST from ra99 inner join _1SJOURN on ra99.iddoc=_1SJOURN.IDDOC
	where SP100 = '     1   ' and SP101 in ('   CG010 ','   XRT10 ','   5LW   ') and date_time_iddoc between '20050701' and '20050801'
) s
group by SP3603, SP101, SP100
а это его результаты:
Код: plaintext
1.
2.
3.
4.
SP3603   SP101  SP100  SP102
      0    	   CG010 	      1    	 4 . 00000 
      0    	   5LW   	      1    	 45 . 00000 
      0    	   XRT10 	      1    	 47 . 00000 
но как видно он равен запросу только по RG99, где PERIOD = '20050701'
ЗЫ... Следовательно RG хранит данные по тек месяцу на ТА, а на прошедшие мес. на его конец :)
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33213546
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ха говорим об одном и томже самое что интересное, для этого я в просмотре

SELECT CONVERT(smalldatetime, DATEADD([Month], 1, dbo.RG99.PERIOD), 104) AS PERIOD_OSTATKOV, dbo.SC33.ID AS TovarID, dbo.SC31.ID AS SkladID,
dbo.RG99.SP102 AS OSTATOK
FROM dbo.RG99 INNER JOIN
dbo.SC33 ON dbo.RG99.SP101 = dbo.SC33.ID INNER JOIN
dbo.SC31 ON dbo.RG99.SP100 = dbo.SC31.ID
GROUP BY dbo.RG99.PERIOD, dbo.SC33.ID, dbo.SC31.ID, dbo.RG99.SP102

период сдвигаю на месяц вперед, чтобы получить настоящие нормальные остатки на начало месяца, а ТА получаеться у меня уже в след. месяце, в тоже время остатки на любую дату в любом месяце и даже в текущем вычисляються MDX выражением НачОстаток=([Период].CurrentMember.FirstSibling,[Measures].[Ostatok])+sum([Период].CurrentMember.FirstSibling:[Период].CurrentMember,[Measures].[Prihod]-[Measures].[Rashod])-([Measures].[Prihod]-[Measures].[Rashod])
где беруться сотатки на первое число текщего месяца потом суммируються обороты от первого числа до текущего времени (но в этом случае у нас проссумируються и обороты данного дня) поэтому на начало дня мы отнимем обороты дня, можно былобы взять [Период].PrevMember но тогда остаток на первое число непарльно считаеться
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33213565
Сергей84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь на основе этого куба можно посчитать спрос на товар, расход в день и спрогнозировать спрос :) Если сюда добавить еще сопоставление товаров, то и на сопутствующие товары можно это тоже расчитать и таким образом планировать рынок :) Хе-хе, долго у меня такой отчет просят :) Теперь осталось это все как то разгрести....
А вы в каких целях используюте этот куб?
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33213603
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот все что ты Сергей сказал то и делаем, счас переходим на новое хранилище, в старом небыло детализации до товара и много других вкусностей и просто постоянно на форуме народ просит как остатки посчитать как среднее посчитать как использовать таблицы остатков и движений, решил собраться и написать как и что сделать.

и вот еще забыл одну весчь: иногда нам требуеться смотреть сводные данные в сравнении с каким либо прошлим периодом ну к примеру года сравнивать друг с другом по месяцам вот как на рисунке
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33213616
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для этого достаточно сделать два виртуальных измерения на основе Периода: одно это Год которое содержит года и Месяц содержит месяца.
эти измерения процессим запихиваем в наши кубы и физические и виртуальные, поэтапно процессим все что меняли, ну и получаем такую простую но очень полезную аналитику.
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33213644
Сергей84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оч... полезная штука, надо бы у себя что-нибудь забабахать :)
Анализ месяцев друг с другом у меня есть, но тока через ТЗ, а это сам понимаешь гемор еще тот и несколько часов расчета если приличный период задать
Надо бы кубик, который бы отображал остатки на день каждого товара, чтоб можно было выяснить почему товар не продовался, потому что его не было или просто не было спроса, конечно идеальный вариант еще и по времени это все развести :) Тогда не кислый кубик получится...
Так же нужны наверное раскладка по брендам в разрезе вида товара, который делится на подвиды и применения в разных условиях :)
А какие еще у вас есть разработки? Оч. интересно, давно хочется сделать номальную аналитику, но как то не получается все, т.к. с кубами не сталкивался, надо изучать, а времени как всегда никто не дает
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33213682
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну мы разработали кучу всяких показателей, что порой сами забываем что учавствует в их расчетах, но в основном показатели берем из анализа хозяйственной деятельности, немного изменяем под оперативный учет, ну что у нас есть такого это: потребности в оборотных средствах, коэффициенты ликвидности, оборачиваемости, эффективности, расчеты плановых показателей (остатков оборотных средств, продаж) и т.д.
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33213687
Сергей84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а примеры можно? :)
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33213708
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну вот к примеру
КоэффициентОборачиваемостиОстатков=([Measures].[Остаток зак сум]*1.5)/[Measures].[Прод розн сум]
ПотребностьВОборотныхСредствах=[Measures].[СрДнОстЗакСумм]/[Measures].[Прод розн сум]
ПрибыльНа1рубльОстаков=[Measures].[Прибыль]/[Measures].[СрДнОстЗакСумм]

интересно почему в КоэффициентОборачиваемостиОстатков остаток на 1,5 умножаеться, надо будет у экономистов узнать
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33374275
Olf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Olf
Гость
Валекну вот к примеру
КоэффициентОборачиваемостиОстатков=([Measures].[Остаток зак сум]*1.5)/[Measures].[Прод розн сум]
ПотребностьВОборотныхСредствах=[Measures].[СрДнОстЗакСумм]/[Measures].[Прод розн сум]
ПрибыльНа1рубльОстаков=[Measures].[Прибыль]/[Measures].[СрДнОстЗакСумм]

интересно почему в КоэффициентОборачиваемостиОстатков остаток на 1,5 умножаеться, надо будет у экономистов узнать

Привет!
А можно узнать что здесь есть
Остаток зак сум
Прод розн сум - это чистые продажи?
СрДнОстЗакСумм
Прибыль - это наценка я так понимаю?
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33374333
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Olf Валекну вот к примеру
КоэффициентОборачиваемостиОстатков=([Measures].[Остаток зак сум]*1.5)/[Measures].[Прод розн сум]
ПотребностьВОборотныхСредствах=[Measures].[СрДнОстЗакСумм]/[Measures].[Прод розн сум]
ПрибыльНа1рубльОстаков=[Measures].[Прибыль]/[Measures].[СрДнОстЗакСумм]

интересно почему в КоэффициентОборачиваемостиОстатков остаток на 1,5 умножаеться, надо будет у экономистов узнать

Привет!
А можно узнать что здесь есть
Остаток зак сум
Прод розн сум - это чистые продажи?
СрДнОстЗакСумм
Прибыль - это наценка я так понимаю?

как написано так и читать
Остаток зак сум - остаток товара в закупочных ценах, Прод розн сум - продано товара в розничных ценах, СрДнОстЗакСумм - Средне дневные остатки в закупочных суммах, Прибыль - прибыль (разница м/у продано в розн. суммах и зак. суммах)
...
Рейтинг: 0 / 0
20 сообщений из 45, страница 2 из 2
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / 1с MS AS Excel Остаток
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]