![]() |
![]() |
![]() |
|
Новая тема о старом (Об остатках на каждый день). Полувопрос с полурешением | ☑ | ||
---|---|---|---|---|
0
Rozumaka
19.05.11
✎
21:20
|
Думаю, многие помнят вот эту тему, многие даже ссылаются в форуме на эту тему ставя её в пример:
v8: Остатки на каждый день Мне также задали подобную задачу. Я её не смог решить в ОДНОМ запросе (Собственно говоря - а реально-ли её решить, получив в результате ОДНУ таблицу, которая-бы решала эту задачу полностью?) Решил я проверить, правильно-ли работает этот запрос, и понял (ИМХО) - что нет: Скажем так, наполовину нет, т.к. поставленную задачу он НЕ РЕШАЕТ (ИМХО)... Решает только остатки на каждый день, и то, достаточно туманным методом. Тут скриншот того, как как должно-быть (слева) и как есть (справа)? и заодно прикрепил регистр, откуда это всё берётся, для ясности. http://s59.radikal.ru/i166/1105/f8/bc4418860df2.jpg Итак - пол задачи решено. Мы нашли сумму по товару за выбранный период Ну а меня больше интересует - ну а как теперь правильно найти Итог количества товара по каждому дню? Что-бы в результате получить. Какой алгоритм лучше всего строить дальше? |
|||
1
acsent
19.05.11
✎
21:27
|
можно и запросе но нахуа
|
|||
2
Rozumaka
19.05.11
✎
21:33
|
Мне задали задачу такую, подобную той, что в старой теме, только нужно получить СРЕДНЕЕ по строкам и итоги по колонкам.
Товар 01.05 02.05 3.05 04.05 СРЕДНЕЕ товар1 2 2 0 0 1 товар2 3 3 3 0 2,25 товар3 0 5 3 0 2 Итого 5 10 6 0 Направьте на путь истинный - как нужно действовать? Запросом можно получить готовую таблицу? Или нужно результаты нескольких запросов соединять? Как решить? |
|||
3
Eugeneer
19.05.11
✎
21:37
|
элементарная задача. бери и делай.
|
|||
4
Immortal
19.05.11
✎
21:39
|
(3)+1
|
|||
5
Rozumaka
19.05.11
✎
21:44
|
если это элементарно - покажите ответ, пожалуйста. Дайте запрос
|
|||
6
acsent
19.05.11
✎
21:44
|
Сжалюсь, 1000р
|
|||
7
Rozumaka
19.05.11
✎
21:56
|
Хорошо, я получил таблицу такого вида
Товар 01.05 02.05 3.05 04.05 товар1 2 2 0 0 товар2 3 3 3 0 товар3 0 5 3 0 Итого 5 10 6 0 Далее - :( |
|||
8
Immortal
19.05.11
✎
22:01
|
в чем проблема? ИТОГИ СРЕДНЕЕ(Чего то там с остатком) ПО Номенклатура
|
|||
9
Rozumaka
19.05.11
✎
22:04
|
Так?
ВЫБРАТЬ | ВремТабл.Номенклатура КАК Номенклатура, | ВремТабл.Период КАК Период, | ВремТабл.ОстатокКоличества КАК СреднийОстаток |ИЗ | ВремТабл КАК ВремТабл | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Товары.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Период, , ) КАК ТоварыОстаткиИОбороты | ПО ВремТабл.Номенклатура = ТоварыОстаткиИОбороты.Номенклатура |ИТОГИ | СРЕДНЕЕ(СреднийОстаток) |ПО | Номенклатура |
|||
10
Immortal
19.05.11
✎
22:05
|
(9)я как то не уловил, откуда это выдрано, но текст по итогам - да, такой
|
|||
11
Kaidend
19.05.11
✎
22:05
|
Одним запросом такую таблицу, конечно, не получить, да и нет обычно такой необходимости.
Обычно для подобных отчетов получают иерархическую выборку и с помощью механизмов обхода выборки уже выводят ее в форме кросс-таблицы. |
|||
12
IronDemon
19.05.11
✎
22:08
|
Поделить в итогах сумму товара на количество дней.
|
|||
13
Rozumaka
19.05.11
✎
22:08
|
(11) ВОТ ВОТ - я именно этого и хочу добиться... Я могу ОТДЕЛЬНО получить и СРЕДНЕЕ по Строкам (по товару) и Итоги(СУММУ) по дням...
|
|||
14
Rozumaka
19.05.11
✎
22:10
|
Всё понятно - я хотел добится от Вас товарищи, ответа на вопрос - не как построить запрос, а можно-ли вообще одним запросом получить такую таблицу...
Мне понятно - я могу одним запросом получить - Товар 01.05 02.05 3.05 04.05 товар1 2 2 0 0 товар2 3 3 3 0 товар3 0 5 3 0 Итого 5 10 6 0 А другим запросом получить вот это |
|||
15
IronDemon
19.05.11
✎
22:11
|
(13) Два поля заведи
|
|||
16
IronDemon
19.05.11
✎
22:12
|
ВЫБРАТЬ
| ВремТабл.Номенклатура КАК Номенклатура, | ВремТабл.Период КАК Период, | ВремТабл.ОстатокКоличества КАК СуммаОстаток | ВремТабл.ОстатокКоличества КАК СреднийОстаток |ИЗ | ВремТабл КАК ВремТабл | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Товары.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Период, , ) КАК ТоварыОстаткиИОбороты | ПО ВремТабл.Номенклатура = ТоварыОстаткиИОбороты.Номенклатура |ИТОГИ | Сумма(СуммаОстаток), | СРЕДНЕЕ(СреднийОстаток) |ПО | Номенклатура |
|||
17
Kaidend
19.05.11
✎
22:15
|
(14) Вы даже эту таблицу одним запросом получить не сможете. Колонками у вас будут Номенклатура, Период и Средний Остаток, а не 01.05, 02.05, 03.05, 04.05 и т.д.
|
|||
18
Rozumaka
19.05.11
✎
22:25
|
(14)Я понял, что я не смогу получить количество колонок на неизвестное количество дней в периоде....
Всё, что я хочу узнать (меня сам запрос не интересует меня интересует правильность подхода к решению задачи), и начинает проясняться, так это 1. В первом запросе я могу получить ИТОГИ (сумму товаров) на каждый день за все товары, которые у меня в регистре (колонки в задаче) 2. Во втором запросе я могу получить среднее количество остатков конкретного товара за период (строки в задаче) и уже механизмами (НЕ ЗАПРОСОМ) языка 1С можно построить печатную форму (из результатов двух предидущих запросов), что-бы на выходе получить такую таблицу, как в задаче... У меня правильный ход мыслей? |
|||
19
Kaidend
19.05.11
✎
22:50
|
(18) Нужно конкретную задачу рассматривать, но я в общем не вижу сложностей с тем, чтобы в одном запросе получить всю нужную информацию для последующего вывода данных в кросс-таблицу.
|
|||
20
Kaidend
19.05.11
✎
22:52
|
Конкретную задачу - это с описанием структуры метаданных и описанием данных, которые необходимо получить. А то у вас там какая-то ВремТабл фигурирует в запросе, не понятно что из себя представляющая, хотя, по идее, из одного регистра можно все получить с разбивкой по периодам.
|
|||
21
Kaidend
19.05.11
✎
22:54
|
А уж если вспомнить про вложенные и пакетные запросы, то вообще почти все можно получить в рамках одного запроса. Если посмотреть типовые, то там так зачастую и делается - одним огромным запросом извлекаются данные и тупо помещаются в табличную часть или регистр или еще куда-нибудь.
|
|||
22
Rozumaka
19.05.11
✎
22:57
|
(19)Задача
Есть регистр накопления остатки товаров на складах, необходимо получить остатки по номенклатуре на конец дня по каждому дню за указанный период. Итог по товару средний остаток за период, Итоги по дням общий остаток по товарам. Задачу необходимо сделать на языке запросов 1С 8.х Итог задачи следующая табличка: Товар 01.05 02.05 3.05 04.05 СРЕДНЕЕ товар1 2 2 0 0 1 товар2 3 3 3 0 2,25 товар3 0 5 3 0 2 Итого 5 10 6 0 |
|||
23
Rozumaka
19.05.11
✎
23:01
|
Результатом Одного Запроса (пусть даже вложенные и пакетные) - но Одного запроса - может быть несколько таблиц?
|
|||
24
milan
19.05.11
✎
23:53
|
Можно получить все, другое дело каков будет текст зароса ;)
31 жоинов для формирования колонок. Только таблица будет всегда товар+31 колонка с остатками по датам + Среднее. Либо текст запроса формировать динамически. |
|||
25
Immortal
19.05.11
✎
23:54
|
(23)да
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |