|
Как несколько результатов запроса объединить в одну таблицу? | ☑ | ||
---|---|---|---|---|
0
PCcomCat
14.08.13
✎
15:00
|
Доброго времени, уважаемые!
Возникла задачка: необходимо на каждый день из периода "от ДатаНачала по ДатаОкончания" послучить срез последних по регистру сведений. Но при этом все результаты запроса очень хочется впихнуть в одну ТаблицуЗначений, чтобы затем свернуть. Крышу сносит, наверное поэтому возникла одна мысль: тупо перебором строк каждого результата запроса запихивать все в общую ТаблицуЗначений. Но я считаю, что это будет писанина на коленках. Да и чутье подсказывает, что существует более лояльный вариант по времени выполнения. Подскажите, если конечно такое возможно, как можно по-нормальному такое сотворить? На вопрос "зачем?" сразу дам ответ "Надо! Хотелка клиента видеть, что было в выбранном периоде, а на конечную дату периода чего-то уже может не быть!". Заранее благодарю. |
|||
1
acsent
14.08.13
✎
15:01
|
сразу одним запросом получай
|
|||
2
zak555
14.08.13
✎
15:01
|
свернуть ? просуммировать ресурсы ?
|
|||
3
PCcomCat
14.08.13
✎
15:01
|
(1) Ну туплю, не могу сообразить: КАК? Подскажи, плиз!
|
|||
4
PCcomCat
14.08.13
✎
15:02
|
(2)Убрать одинаковые записи.
|
|||
5
1Сергей
14.08.13
✎
15:02
|
ВЫБРАТЬ ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КАК Период
ИЗ (ВЫБРАТЬ 0 КАК a ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК aa ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК b ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК bb ПО (ИСТИНА) ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК c ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК cc ПО (ИСТИНА) ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК d ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК dd ПО (ИСТИНА) ГДЕ aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) |
|||
6
1Сергей
14.08.13
✎
15:02
|
+ соединить это с твоим запросом
|
|||
7
PCcomCat
14.08.13
✎
15:03
|
(6) Это стёб? не пятница же!
|
|||
8
1Сергей
14.08.13
✎
15:04
|
(7) это не стёб
|
|||
9
PCcomCat
14.08.13
✎
15:07
|
(8) А-а-а! Похоже начинаю понимать. Пойду жевать.
Спасибо! |
|||
10
zak555
14.08.13
✎
15:08
|
(4) зачем тогда на каждый день месяца ?
|
|||
11
PCcomCat
14.08.13
✎
15:13
|
(10) Ну с учетом (5) можно взять тогда РАЗНЫЕ
|
|||
12
PCcomCat
14.08.13
✎
15:17
|
(10) Система скидок/наценок имеет период действия от до. Одна скидка/наценка может действовать во всем выбранном периоде, другая закончиться где-то посередине, третья начаться где-то посередине, а четвертая может и начаться, и закончиться где-то посередине. А показать нужно всё. Как по-другому?
|
|||
13
PCcomCat
14.08.13
✎
15:19
|
+(12)Начало действия = НачалоДня, конец действия = КонецДня
|
|||
14
Zamestas
14.08.13
✎
16:06
|
(0) Развернуть срез последних в запрос, добавить группировку НАЧАЛОПЕРИОДА(Регистр.Период,День)
|
|||
15
PCcomCat
14.08.13
✎
16:09
|
(14)А можно маленький примерчик?
|
|||
16
zak555
14.08.13
✎
16:10
|
(12) так тебе нужна тогда просто выборка за период
|
|||
17
PCcomCat
14.08.13
✎
16:10
|
(12)В смысле выборка за период?
|
|||
18
Zamestas
14.08.13
✎
16:14
|
(15) Сам с собой регистр соединяешь по
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ МАКСИМУМ(Регистр.Период) |
|||
19
acsent
14.08.13
✎
16:15
|
Для начала пойми что такое срез последних
|
|||
20
Zamestas
14.08.13
✎
16:22
|
(19) Срез последних испортил 1С'ников окончательно.
|
|||
21
PCcomCat
14.08.13
✎
16:31
|
(19) Что это и для чего его едят я прекрасно понимаю.
|
|||
22
PCcomCat
14.08.13
✎
16:33
|
Короче тему закрываю. Увсё!
Может и через ж.пу, но РАБОТАЕТ! Кому интересно (можно какашками закидать) - текст: Запрос.Текст = " |ВЫБРАТЬ | 0 КАК Цифра |ПОМЕСТИТЬ ТабЦифр | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 1 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 2 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 3 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 4 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 5 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 6 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 7 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 8 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 9 |; | | //////////////////////////////////////////////////////////////////////////////// | |ВЫБРАТЬ | ДОБАВИТЬКДАТЕ(&ДатаНачала, ДЕНЬ, ТабЦифр1.Цифра + 10 * ТабЦифр2.Цифра + 100 * ТабЦифр3.Цифра + 1000 * ТабЦифр4.Цифра) КАК День |ПОМЕСТИТЬ ТабДней |ИЗ | ТабЦифр КАК ТабЦифр1, | ТабЦифр КАК ТабЦифр2, | ТабЦифр КАК ТабЦифр3, | ТабЦифр КАК ТабЦифр4 |ГДЕ | ДОБАВИТЬКДАТЕ(&ДатаНачала, ДЕНЬ, ТабЦифр1.Цифра + 10 * ТабЦифр2.Цифра + 100 * ТабЦифр3.Цифра + 1000 * ТабЦифр4.Цифра) <= &ДатаОкончания | |ИНДЕКСИРОВАТЬ ПО | День |; | | //////////////////////////////////////////////////////////////////////////////// | |ВЫБРАТЬ | ТабДней.День |ИЗ | ТабДней КАК ТабДней |; | | //////////////////////////////////////////////////////////////////////////////// | |ВЫБРАТЬ РАЗЛИЧНЫЕ | РС_ХранилищеШаблоновСкидокНаценокСрезПоследних.ДатаНачалаДействия, | РС_ХранилищеШаблоновСкидокНаценокСрезПоследних.ДатаОкончанияДействия, | РС_ХранилищеШаблоновСкидокНаценокСрезПоследних.Организация, | РС_ХранилищеШаблоновСкидокНаценокСрезПоследних.ТипСистемы, | РС_ХранилищеШаблоновСкидокНаценокСрезПоследних.ТипЦенДокумента, | РС_ХранилищеШаблоновСкидокНаценокСрезПоследних.ТипЦен, | РС_ХранилищеШаблоновСкидокНаценокСрезПоследних.Контрагент, | РС_ХранилищеШаблоновСкидокНаценокСрезПоследних.НоменклатурнаяГруппа, | РС_ХранилищеШаблоновСкидокНаценокСрезПоследних.Номенклатура, | РС_ХранилищеШаблоновСкидокНаценокСрезПоследних.ЗапретСкидки, | РС_ХранилищеШаблоновСкидокНаценокСрезПоследних.ЗапретНаценки, | РС_ХранилищеШаблоновСкидокНаценокСрезПоследних.ПроцентСкидкиНаценки |ИЗ | РегистрСведений.РС_ХранилищеШаблоновСкидокНаценок КАК РС_ХранилищеШаблоновСкидокНаценокСрезПоследних | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТабДней КАК ТабДней | ПО РС_ХранилищеШаблоновСкидокНаценокСрезПоследних.Период <= ТабДней.день | И РС_ХранилищеШаблоновСкидокНаценокСрезПоследних.ДатаНачалаДействия <= ТабДней.день | И (РС_ХранилищеШаблоновСкидокНаценокСрезПоследних.ДатаОкончанияДействия = ДАТАВРЕМЯ(1,1,1) | ИЛИ РС_ХранилищеШаблоновСкидокНаценокСрезПоследних.ДатаОкончанияДействия >= ТабДней.день)"; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |