|
Запрос в цикле. | ☑ | ||
---|---|---|---|---|
0
goleaff2006
06.09.13
✎
06:30
|
Есть запрос который получает список документов,контрагентов и договор.
Далее в зависимости от вида договора необходимо получать данные из разных регистров на дату документа.Как можно без цикла по провывать составить запрос. |
|||
1
skunk
06.09.13
✎
06:34
|
джоинами
|
|||
2
goleaff2006
06.09.13
✎
06:36
|
а как даты то привязывать?
|
|||
3
Ненавижу 1С
гуру
06.09.13
✎
06:41
|
(2) надо себя заставить
|
|||
4
SeraFim
06.09.13
✎
06:42
|
||||
5
echo77
06.09.13
✎
06:42
|
Используй таблицу остаткииобороты
|
|||
6
goleaff2006
06.09.13
✎
06:44
|
(5)в том то и дело что нужно не из остатков и оборотов получать.
|
|||
7
Ненавижу 1С
гуру
06.09.13
✎
06:44
|
(6) мы должны догадаться?
|
|||
8
goleaff2006
06.09.13
✎
06:45
|
Основной запрос
ВЫБРАТЬ ЗаявкаНаРасходованиеСредств.Ссылка КАК РасшифровкаДокумент, ЗаявкаНаРасходованиеСредств.Организация КАК Организация, ВЫБОР КОГДА ЗаявкаНаРасходованиеСредств.Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) ТОГДА ЗаявкаНаРасходованиеСредств.Получатель ИНАЧЕ ЗаявкаНаРасходованиеСредств.Контрагент КОНЕЦ КАК Контрагент, ЗаявкаНаРасходованиеСредств.БанковскийСчетКасса КАК БанковскийСчетКасса, ЗаявкаНаРасходованиеСредств.СтатьяОборотов КАК СтатьяОборотов, ЗаявкаНаРасходованиеСредств.ЦФО КАК ЦФО, ЗаявкаНаРасходованиеСредств.Ответственный КАК Ответственный, ЗаявкаНаРасходованиеСредств.СуммаДокумента КАК СуммаДокумента, ВЫРАЗИТЬ(ЗаявкаНаРасходованиеСредств.Описание КАК СТРОКА(100)) КАК Описание, ВЫБОР КОГДА ЗаявкаНаРасходованиеСредств.Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) ТОГДА НЕОПРЕДЕЛЕНО ИНАЧЕ ЗаявкаНаРасходованиеСредствРасшифровкаПлатежа.ДоговорКонтрагента КОНЕЦ КАК ДоговорКонтрагента, ВЫРАЗИТЬ(ЗаявкаНаРасходованиеСредств.Комментарий КАК СТРОКА(100)) КАК Комментарий, ЗаявкаНаРасходованиеСредств.Дата КАК Дата, ЗаявкаНаРасходованиеСредств.ДатаРасхода ИЗ Документ.ЗаявкаНаРасходованиеСредств.РасшифровкаПлатежа КАК ЗаявкаНаРасходованиеСредствРасшифровкаПлатежа ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаРасходованиеСредств КАК ЗаявкаНаРасходованиеСредств ПО ЗаявкаНаРасходованиеСредствРасшифровкаПлатежа.Ссылка = ЗаявкаНаРасходованиеСредств.Ссылка ГДЕ ЗаявкаНаРасходованиеСредств.Проведен {ГДЕ ЗаявкаНаРасходованиеСредств.Организация.*, ЗаявкаНаРасходованиеСредств.Ответственный, ЗаявкаНаРасходованиеСредств.ФормаОплаты, ЗаявкаНаРасходованиеСредств.БанковскийСчетКасса.*, ЗаявкаНаРасходованиеСредств.Дата, ЗаявкаНаРасходованиеСредств.ДатаРасхода, ЗаявкаНаРасходованиеСредств.СуммаДокумента КАК СуммаЗаявки} СГРУППИРОВАТЬ ПО ЗаявкаНаРасходованиеСредств.Ссылка, ЗаявкаНаРасходованиеСредств.Организация, ЗаявкаНаРасходованиеСредств.БанковскийСчетКасса, ЗаявкаНаРасходованиеСредств.СтатьяОборотов, ЗаявкаНаРасходованиеСредств.ЦФО, ЗаявкаНаРасходованиеСредств.Ответственный, ЗаявкаНаРасходованиеСредств.СуммаДокумента, ВЫРАЗИТЬ(ЗаявкаНаРасходованиеСредств.Описание КАК СТРОКА(100)), ВЫРАЗИТЬ(ЗаявкаНаРасходованиеСредств.Комментарий КАК СТРОКА(100)), ВЫБОР КОГДА ЗаявкаНаРасходованиеСредств.Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) ТОГДА ЗаявкаНаРасходованиеСредств.Получатель ИНАЧЕ ЗаявкаНаРасходованиеСредств.Контрагент КОНЕЦ, ЗаявкаНаРасходованиеСредств.Дата, ЗаявкаНаРасходованиеСредств.ДатаРасхода, ВЫБОР КОГДА ЗаявкаНаРасходованиеСредств.Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) ТОГДА НЕОПРЕДЕЛЕНО ИНАЧЕ ЗаявкаНаРасходованиеСредствРасшифровкаПлатежа.ДоговорКонтрагента КОНЕЦ УПОРЯДОЧИТЬ ПО Организация, Дата |
|||
9
goleaff2006
06.09.13
✎
06:46
|
получение данных из регистра для одного из видов договора, для другого совсем другой запрос
ВЫБРАТЬ ВТ_Подокументам.Организация, ВТ_Подокументам.ФизЛицо, СУММА(ВЫБОР КОГДА ВТ_Подокументам.СуммаВзаиморасчетов <= 0 ТОГДА ВТ_Подокументам.СуммаВзаиморасчетов ИНАЧЕ 0 КОНЕЦ) КАК КЗ, СУММА(ВЫБОР КОГДА ВТ_Подокументам.СуммаВзаиморасчетов >= 0 ТОГДА ВТ_Подокументам.СуммаВзаиморасчетов ИНАЧЕ 0 КОНЕЦ) КАК ДЗ ИЗ (ВЫБРАТЬ ВзаиморасчетыСПодотчетнымиЛицами.Регистратор КАК Регистратор, ВзаиморасчетыСПодотчетнымиЛицами.Организация КАК Организация, ВзаиморасчетыСПодотчетнымиЛицами.ФизЛицо КАК ФизЛицо, СУММА(ВЫБОР КОГДА ВзаиморасчетыСПодотчетнымиЛицами.ВидДвижения = &ВидДвижения ТОГДА -ВзаиморасчетыСПодотчетнымиЛицами.СуммаВзаиморасчетов ИНАЧЕ ВзаиморасчетыСПодотчетнымиЛицами.СуммаВзаиморасчетов КОНЕЦ) КАК СуммаВзаиморасчетов ИЗ РегистрНакопления.ВзаиморасчетыСПодотчетнымиЛицами КАК ВзаиморасчетыСПодотчетнымиЛицами ГДЕ ВзаиморасчетыСПодотчетнымиЛицами.Организация = &Организация И ВзаиморасчетыСПодотчетнымиЛицами.ФизЛицо = &ФизЛицо И ВзаиморасчетыСПодотчетнымиЛицами.Период МЕЖДУ &ПериодНач И &ПериодКон СГРУППИРОВАТЬ ПО ВзаиморасчетыСПодотчетнымиЛицами.Регистратор, ВзаиморасчетыСПодотчетнымиЛицами.Организация, ВзаиморасчетыСПодотчетнымиЛицами.ФизЛицо) КАК ВТ_Подокументам СГРУППИРОВАТЬ ПО ВТ_Подокументам.ФизЛицо, ВТ_Подокументам.Организация |
|||
10
goleaff2006
06.09.13
✎
06:47
|
И как же без цикла?
|
|||
11
saaken
06.09.13
✎
08:35
|
сделай объединение с условием по типу договора
|
|||
12
goleaff2006
06.09.13
✎
08:41
|
какое объединение,может соединение? а как же мне параметр ПериодКон заполнять который для каждой записи из первго запроса будет свой?
|
|||
13
saaken
06.09.13
✎
08:49
|
можно тело запроса формировать в цикле
|
|||
14
goleaff2006
06.09.13
✎
09:53
|
(13)читаем название темы=)
|
|||
15
Sabbath
06.09.13
✎
10:05
|
(2) Возможно, метод туповат и прямолинеен, но выскажу идею. В теории можно получить даты документов, обойти их в цикле, собирая подзапросы и устанавливая параметры в цикле. К примеру
ТекстЗАпроса = "..." Номер = 1; Пока ВыборкаПоДатам.Слудующий() Цикл ТекстЗапроса = ТекстЗапроса + "ОБЪЕДИНИТЬ... некий подапрос...&Дата" + Номер Запрос.УстановитьПараметр("Дата" + Номер, ВыборкаПоДатам.Дата); КонецЦикла Ну и дальше либо в таблицу загнать, либо сразу вставить в запрос. Не знаю, как будет на большом объеме данных работать, с небольшим будет все ок. (0) А если в зависимости от реквизитов договора нужно присоединять разное, так это просто условие (ВЫБОР УОГДА) в соединении надо. |
|||
16
Sabbath
06.09.13
✎
10:06
|
+(15) вместо метода Слудующий() рекомендую Следующий() таки))
|
|||
17
Sabbath
06.09.13
✎
10:15
|
Сосбтвенно (15) отвечает на (12) и разворачивает (13)
|
|||
18
Sabbath
06.09.13
✎
10:17
|
+(15) Забыл
Номер = Номер + 1; А в подзапросе, естественно, после + Номер, может быть дальше текст запроса |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |