powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / 1с MS AS Excel Остаток
45 сообщений из 45, показаны все 2 страниц
1с MS AS Excel Остаток
    #33129973
Var79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поискал по форому, почитал, но все же создал новую ветку.

хранится информация о движении товаров примерно в таком формате:

дата, товар, приход/расход (0/1), количество, сумма,

Вопросы
1) как получить остатки товаров на дату (нарастающий итог по товару).
2) поле "приход/расход (0/1)" должно быть в мерах или в измерениях?

на форуме есть формула :

SUM(PeriodsToDate([Дата Физ].Levels(0),[Дата Физ].CurrentMember),Measures.Приход - Measures.Расход)

но я незнаю как в моем случае создать этот Measures.Приход и Measures.Расход

потому как приход по строке это
приход/расход (0/1)=0, количество=20

а расход по строке это
приход/расход (0/1)=1, количество=20

можно наверное во вьюхе сделать такие поля, но SQL плохо знаю, вьюхи и хранимые процедуры я не писал
Хочется оставить все как есть
и все считать в AS
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33129978
Var79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, хочется обойтись только первичной таблицей движений, бех таблицы остатков, так наверно места менше будет занимать :)
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33130058
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Var79

можно наверное во вьюхе сделать такие поля, но SQL плохо знаю, вьюхи и хранимые процедуры я не писал
Хочется оставить все как есть
и все считать в AS

На самом деле это без разницы, где делать, только все равно вам без знания SQL не обойтись, только если прямо в AS сделаете при определении мер, то сопровождать такое решение тяжелее будет, чем вьюхи.
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33130062
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Var79Да, хочется обойтись только первичной таблицей движений, бех таблицы остатков, так наверно места менше будет занимать :)

Все зависит от того для каких целей вы строите AS решение и от порядка величины ваших данных.

Чем выше требования к детализации данных (например остатки на произвольный день), чем больше записей в таблице движений, чем меньше моксимально допустимое время выполнения стандартных отчетов (не более n секунд), тем вам труднее будет обходится без таблица остатков (по году, поквартальных, помесячных, по неделе)
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33130065
Var79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Буду учится, когда то писал под MySQL что то знаю :-), но нада время на это.
Рекомендуется все же на SQLe сделать колонки?
какого плана должна быть таблица, чтото вроде этого?:
тов1 0 15
тов2 0 10
тов1 4 0
тов2 6 0

а как в AS в моем случае сделать остатки?
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33130578
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вычисляйте пока так:
Код: plaintext
1.
2.
3.
sum(Ascendants([Time].CurrentMember),
   (sum([Time].FirstSibling :[Time].CurrentMember,
           [Measures].[ПриходРасход])) - [Measures].[ПриходРасход]) + 
  [Measures].[ПриходРасход]
только [Measures].[ПриходРасход] замените на
Код: plaintext
((Measures.Количество,[ПриходРасход].[ 0 ])-(Measures.Количество,[ПриходРасход].[ 1 ]))
будут проблемы с производительностью - приходите ещё
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33131537
Var79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Biryukovвычисляйте пока так:
Код: plaintext
1.
2.
3.
sum(Ascendants([Time].CurrentMember),
   (sum([Time].FirstSibling :[Time].CurrentMember,
           [Measures].[ПриходРасход])) - [Measures].[ПриходРасход]) + 
  [Measures].[ПриходРасход]
только [Measures].[ПриходРасход] замените на
Код: plaintext
((Measures.Количество,[ПриходРасход].[ 0 ])-(Measures.Количество,[ПриходРасход].[ 1 ]))
будут проблемы с производительностью - приходите ещё

2 Dmitry Biryukov Спасибо ОГРОМНОЕ заработало!
вроде нармально работает

но всеже хотелось бы услышать способы оптимизации :)

подтормаживает если товар раскрывать до элементов но там несколько тысяч елементов на нижнем уровне, может так и должно быть

Вопрос:
если в Excel по горизантали Склады, по вертикали Товары, а там где поля страниц "Время" и если во "Время" поставить галочку несколько элементов и выбрать 26 27 и 28 февраля (что бы видеть продажи за эти дни) то остаток по группе товаров в моем случае будет 285,998 , откуда берется этот остаток?
А если выбрать 28 февраля то будет правильный остаток в моем случае 272,77 почему так? как с этим боротся? :)



Интересует хорошая (бумажная) литература по ОЛАП на русском языке ссылки в инете нашел но хотелось бы услышать мнение от Живого человека, кому какая литература на русском языке Очень понравилась по рекоминдуйте пожалуста :)
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33131561
Var79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я вроде понял откуда 285,998 - это остаток на самую последнюю дату в кубе, а как с этим боротся?
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33131565
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Var79]но всеже хотелось бы услышать способы оптимизации :)

подтормаживает если товар раскрывать до элементов но там несколько тысяч елементов на нижнем уровне, может так и должно быть[quot]
сказали же - таблица остатков
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33131604
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Var79если в Excel по горизантали Склады, по вертикали Товары, а там где поля страниц "Время" и если во "Время" поставить галочку несколько элементов и выбрать 26 27 и 28 февраля (что бы видеть продажи за эти дни) то остаток по группе товаров в моем случае будет 285,998 , откуда берется этот остаток?
А если выбрать 28 февраля то будет правильный остаток в моем случае 272,77 почему так? как с этим боротся? :)
а никак...
обсуждали уже
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33131668
Var79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfire Var79Да, хочется обойтись только первичной таблицей движений, бех таблицы остатков, так наверно места менше будет занимать :)

Все зависит от того для каких целей вы строите AS решение и от порядка величины ваших данных.

Чем выше требования к детализации данных (например остатки на произвольный день), чем больше записей в таблице движений, чем меньше моксимально допустимое время выполнения стандартных отчетов (не более n секунд), тем вам труднее будет обходится без таблица остатков (по году, поквартальных, помесячных, по неделе)

"Все зависит от того для каких целей вы строите AS решение и от порядка величины ваших данных." - даже незнаю что ответить... по максимуму наверно пока тока смотрю что к чему

в таблице движений будет на ближайшие 2а года не более 5млн записей, товаров сейчас 42000, болше 55000 врядли будет, реально использующееся товары 35000 элементов.
думаю 10 сек допустимо для такого отчета где показаны продажи закупки наценка и остаток, в разреде до дней и до элементов товаров (но чаще до групп)

пока немогу нечего сказать однозначно нужно эксперементировать
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33131683
Var79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Biryukov Var79если в Excel по горизантали Склады, по вертикали Товары, а там где поля страниц "Время" и если во "Время" поставить галочку несколько элементов и выбрать 26 27 и 28 февраля (что бы видеть продажи за эти дни) то остаток по группе товаров в моем случае будет 285,998 , откуда берется этот остаток?
А если выбрать 28 февраля то будет правильный остаток в моем случае 272,77 почему так? как с этим боротся? :)
а никак...
обсуждали уже

А что делать клиента другого использовать вместо Excelя2к?
или дело в MS AS 2000?
а какой хороший недорогой (или даже бесплатный) ОЛАП инструмент (сервер и/или клиент) ?
хотя бесплатных наверно нет :)
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33131783
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если периоды смежные, то можно так сделать: http://spaces.msn.com/members/cwebbbi/Blog/cns!1pi7ETChsJ1un_2s41jm9Iyg!113.entry

если нет - подождите юкона (или ставьте бету). там обещают поддержку мультиселектов. хотя тогда и клиент нужен, который будет знать об этой фиче

если нужно срочно - придёт Юрий и покажет как это всё сделать мышкой за пару минут :-)
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33132149
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
думаю 10 сек допустимо для такого отчета где показаны продажи закупки наценка и остаток, в разреде до дней и до элементов товаров

сделаете, расскажете.

А на засыпку
Создайте такой CM, который широко используется для оценки эффективности склада.

Оборачиваемость = Расход/Количкество/СреднийТоварныйЗапас

отсортируйте по нем все товары на день Х, если за 5 секунд ответит, то жить можно.
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33132203
Var79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfire думаю 10 сек допустимо для такого отчета где показаны продажи закупки наценка и остаток, в разреде до дней и до элементов товаров

сделаете, расскажете.

А на засыпку
Создайте такой CM, который широко используется для оценки эффективности склада.

Оборачиваемость = Расход/Количкество/СреднийТоварныйЗапас

отсортируйте по нем все товары на день Х, если за 5 секунд ответит, то жить можно.

"Оборачиваемость = Расход/Количкество/СреднийТоварныйЗапас "
непонятно что тут есть "Количество" и чем оно отличается от Расхода :( а СреднийТоварныйЗапас как считать вообще? а если были дни где небыло товара на остатке, тут по моему моих знаний еще маловата будет.
может кто подскажет как написать эту формулу?
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33132218
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Var79 backfire думаю 10 сек допустимо для такого отчета где показаны продажи закупки наценка и остаток, в разреде до дней и до элементов товаров

сделаете, расскажете.

А на засыпку
Создайте такой CM, который широко используется для оценки эффективности склада.

Оборачиваемость = Расход/Количкество/СреднийТоварныйЗапас

отсортируйте по нем все товары на день Х, если за 5 секунд ответит, то жить можно.

"Оборачиваемость = Расход/Количкество/СреднийТоварныйЗапас "
непонятно что тут есть "Количество" и чем оно отличается от Расхода :( а СреднийТоварныйЗапас как считать вообще? а если были дни где небыло товара на остатке, тут по моему моих знаний еще маловата будет.
может кто подскажет как написать эту формулу?

Прошу прощения за опечатку. Должно было быть.

Оборачиваемость = Расход/КоличествоДнейВПериодеВремени/СреднийТоварныйЗапас
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33132897
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry Biryukovподождите юкона (или ставьте бету). там обещают поддержку мультиселектов
Я думаю что для такого calculated member, и в Юконе мултиселект не будет работать, т.к. он хочет взять Time.CurrentMember, а если по времени будет выбрано несколько периодов, то как определить какой из них CurrentMember - так что в этом случае будет выдаваться ошибка.

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33134044
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mosha Dmitry Biryukovподождите юкона (или ставьте бету). там обещают поддержку мультиселектов
Я думаю что для такого calculated member, и в Юконе мултиселект не будет работать, т.к. он хочет взять Time.CurrentMember, а если по времени будет выбрано несколько периодов, то как определить какой из них CurrentMember - так что в этом случае будет выдаваться ошибка.

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights

Спасибо за ушат холодной воды на наши головы, чтобы мы не раслаблялись в предвкушениях манны небесной - Юкона.

Вопрос: как определить в MDX

(<Dimension>.CurrentMember is CalculetedMember)
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33159775
Var79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(([Measures].[Обороты],[Measures].[Debkred].[0])-([Measures].[Обороты],[Measures].[Debkred].[1]))
- где тут ошибка? пишет "[Measures].[Debkred].[0]" in a name-binding function
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33159795
Var79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин, зделаю тут заметку для себя....

1 Измерение "ПрихРасх" это [Debkred]
2 СМ ПриходРасход это (([Measures].[Обороты],[ПрихРасх].[0])-([Measures].[Обороты],[ПрихРасх].[1]))
3 СМ Остаток это sum(Ascendants([Time].CurrentMember),
(sum([Time].FirstSibling :[Time].CurrentMember,
[Measures].[ПриходРасход])) - [Measures].[ПриходРасход]) +
[Measures].[ПриходРасход]
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33208013
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ха, интересно судя по всему вы пытаетесь на основе таблицы движений какогото регистра сделать куб и оттудаже вычислять остаток на любую дату причем расчитывать его (остаток) с самого начала приходов и расходов, а не проще ли былобы использовать таблицу остатков данного регистра ведь там храняться остатки скажем так на конец каждого месяца и уже расчет вести от них. я думаю профи в MDX подскажут как в этом случае получить остаток на любую дату. счас попробую сам ради эксперимента MDX запрос состряпать
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33208042
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валекха, интересно судя по всему вы пытаетесь на основе таблицы движений какогото регистра сделать куб и оттудаже вычислять остаток на любую дату причем расчитывать его (остаток) с самого начала приходов и расходов, а не проще ли былобы использовать таблицу остатков данного регистра ведь там храняться остатки скажем так на конец каждого месяца и уже расчет вести от них. я думаю профи в MDX подскажут как в этом случае получить остаток на любую дату. счас попробую сам ради эксперимента MDX запрос состряпать

Хоть я и с 1С не работаю, но 1С не уникальна и я использую в виртуальном "кубе остатков" два физических куба: куб движений и куб помесячных (понедельных) остатков.
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33208409
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто интересно почему автор пошел таким путем заведомо ведущим к потере производительности когда у него считай есть в наличии остатки гораздо ближе чем высчитывать их с самого начала. блин чет туплю с запросом вроде все просто взять кон.остатки по данному месяцу + расход - приход и пролучили нач.остатки на требуемый период. какието косяки то уровень не может в мембер сконвертировать то наоборот, все ранво разгребем
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33211085
Stepan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Валекха, интересно судя по всему вы пытаетесь на основе таблицы движений какогото регистра сделать куб и оттудаже вычислять остаток на любую дату причем расчитывать его (остаток) с самого начала приходов и расходов, а не проще ли былобы использовать таблицу остатков данного регистра ведь там храняться остатки скажем так на конец каждого месяца и уже расчет вести от них. я думаю профи в MDX подскажут как в этом случае получить остаток на любую дату. счас попробую сам ради эксперимента MDX запрос состряпать
Дык, я тоже тут списАл и считаю остатки от начала времен. Если можно, подробнее, как таблицу остатков пристегнуть? Я щас попробую на таблице остатков кубик сваять, ток там же уже ГОТОВЫЕ агрегаты, и кубу, по идее, делать нечего... нет, не представляю, как это пристегнуть к кубу движений. Поделитесь, если получится!
...
Рейтинг: 0 / 0
1с MS AS Excel Остаток
    #33212047
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ок. Давай по пожробней разгребем для 1с7.7 конфа ТиС возьмем регистр остатков к примеру у меня это таблици RG99 - сам регистр остатки храняться помесячно и RA99 - таблица движений регистра остатков. Сделаем на просмотрах:

1. вюха для RG99 нам нужны будут след поля период остатков, ID товара, ID склада и остаток. период остатков мы сразу сконвертируем т.к. в регистре остатки храняться на конец месяца это есть начальные остатки след. месяца что мы и проделываем конструкцией CONVERT вот и сама вьюха:
CREATE VIEW dbo.VIEW_DWH_RG99
AS
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

2. вюха для RA99 нам нужны будут след поля период остатков (хотя оно и не нужно будет это так для других целей), дата движения, документ, ID товара, ID склада, приход если дебеткредит=0 и расход если дебеткредит=1. период остатков мы сразу сконвертируем, дату движения тоже вот и сама вьюха:
CREATE VIEW dbo.VIEW_DWH_RA99
AS
SELECT CONVERT(smalldatetime, CONVERT(varchar(10), CONVERT(datetime, '01.' + cast(month(CONVERT(datetime, CONVERT(varchar(8),
dbo.ra99.date_time_iddoc, 104), 104)) AS varchar(10)) + '.' + cast(year(CONVERT(datetime, CONVERT(varchar(8), dbo.ra99.date_time_iddoc, 104), 104))
AS varchar(10)), 104), 104), 104) AS PERIOD_OSTATKOV, CONVERT(smalldatetime, CONVERT(datetime, CONVERT(varchar(8),
dbo.ra99.date_time_iddoc, 104), 104), 104) AS DATA_DVIJENIA, dbo.RA99.DATE_TIME_IDDOC, dbo.SC33.id AS TovarID, dbo.SC31.id AS SkladID,
CASE WHEN dbo.ra99.debkred = 0 THEN dbo.RA99.SP102 ELSE 0 END AS PRIHOD,
CASE WHEN dbo.ra99.debkred = 1 THEN dbo.RA99.SP102 ELSE 0 END AS RASHOD
FROM dbo._1SJOURN INNER JOIN
dbo.RA99 ON dbo._1SJOURN.IDDOC = dbo.RA99.IDDOC INNER JOIN
dbo.SC31 ON dbo.RA99.SP100 = dbo.SC31.ID INNER JOIN
dbo.SC33 ON dbo.RA99.SP101 = dbo.SC33.ID
WHERE _1sjourn.closed = 1
GROUP BY dbo.RA99.DATE_TIME_IDDOC, dbo.ra99.debkred, dbo.RA99.SP102, dbo.SC33.id, dbo.SC31.id

3. еще нам нужна будет вьюха временной оси (период типа) скажем так, мы должны в нее собрать все даты по которым были остатки и движения а вот и она сама:

CREATE VIEW dbo.VIEW_DWH_VREMA_RGRA_99
AS
SELECT CONVERT(smalldatetime, dbo.VIEW_DWH_RA99.PERIOD_OSTATKOV, 104) AS PERIOD
FROM dbo.VIEW_DWH_RA99
UNION
SELECT CONVERT(smalldatetime, dbo.VIEW_DWH_Rg99.PERIOD_OSTATKOV, 104) AS PERIOD
FROM dbo.VIEW_DWH_RG99
UNION
SELECT CONVERT(smalldatetime, dbo.VIEW_DWH_RA99.DATA_DVIJENIA, 104) AS PERIOD
FROM dbo.VIEW_DWH_RA99

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


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