|
v8: Хелп( забаньте меня в следующий раз за такое название ) Ø (Волшебник 17.07.2012 13:27) | ☑ | ||
---|---|---|---|---|
0
SherifSP
17.07.12
✎
12:40
|
Есть запрос
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Долги.Контрагент, | СУММА(ВЫБОР | КОГДА Долги.ДнейПросрочки < 0 | ТОГДА Долги.СуммаВзаиморасчетовОстаток | ИНАЧЕ 0 | КОНЕЦ) КАК СуммаПросрочки, | МИНИМУМ(Долги.ДатаОплаты) КАК ДатаОплаты |ИЗ | (ВЫБРАТЬ | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.Контрагент КАК Контрагент, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом КАК ДокументРасчетов, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты КАК ДатаОплаты, | РАЗНОСТЬДАТ(&ДатаИтогов, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты, ДЕНЬ) + Константы.ДопустимыеДниПросрочки КАК ДнейПросрочки, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетовОстаток | ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(, ) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки | ЛЕВОЕ СОЕДИНЕНИЕ Константы КАК Константы | ПО (1 = 1)) КАК Долги |ГДЕ | Долги.СуммаВзаиморасчетовОстаток > 0 | |СГРУППИРОВАТЬ ПО | Долги.Контрагент"; И менеджер временныхТаблиц МенеджерВременныхТаблиц = Неопределено; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | НС.Контрагент, | НС.ТорговаяТочка |ПОМЕСТИТЬ Клиенты |ИЗ | &СписокКлиентов КАК НС"; Запрос.УстановитьПараметр("СписокКлиентов",СписокКлиентов); Запрос.Выполнить(); МенеджерВременныхТаблиц = Запрос.МенеджерВременныхТаблиц; Как поместить менеджер в первый запрос, чтобы запрос искал только по контрагентам, которые выбрал менеджер временных таблиц |
|||
1
SherifSP
17.07.12
✎
12:42
|
В этот кусок нужно поместить врем табл
|
|||
2
SherifSP
17.07.12
✎
12:43
|
|ИЗ
| (ВЫБРАТЬ | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.Контрагент КАК Контрагент, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом КАК ДокументРасчетов, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты КАК ДатаОплаты, | РАЗНОСТЬДАТ(&ДатаИтогов, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты, ДЕНЬ) + Константы.ДопустимыеДниПросрочки КАК ДнейПросрочки, |
|||
3
andrewks
17.07.12
✎
12:43
|
ветки нужно называть осмысленно
|
|||
4
alkov
17.07.12
✎
12:47
|
3-я ветка с этим запросом уже
|
|||
5
SherifSP
17.07.12
✎
12:52
|
Хз правильно или нет
|ИЗ | (ВЫБРАТЬ | МенеджерВременныхТаблиц.Контрагент КАК Контрагент, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом КАК ДокументРасчетов, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты КАК ДатаОплаты, | РАЗНОСТЬДАТ(&ДатаИтогов, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты, ДЕНЬ) + Константы.ДопустимыеДниПросрочки КАК ДнейПросрочки, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетовОстаток | ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(, ) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки | ЛЕВОЕ СОЕДИНЕНИЕ Константы КАК Константы | ПО (1 = 1) | ЛЕВОЕ СОЕДИНЕНИЕ МенеджерВременныхТаблиц КАК МенеджерВременныхТаблиц | ПО ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.Контрагент = МенеджерВременныхТаблиц.Контрагент) КАК Долги |
|||
6
SherifSP
17.07.12
✎
12:56
|
Ругается на временную таблицу
|
|||
7
Рэйв
17.07.12
✎
12:59
|
ты помещаешь результат в таблицу клиенты.
Она после выполнения висит у тебя в запросе. Работай с ней как с обычной таблицей, в чем трабла то? |
|||
8
SherifSP
17.07.12
✎
13:02
|
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = мМенеджерВременныхТаблиц; Запрос.Текст = "ВЫБРАТЬ | СУММА(ВЫБОР | КОГДА Долги.ДнейПросрочки < 0 | ТОГДА Долги.СуммаВзаиморасчетовОстаток | ИНАЧЕ 0 | КОНЕЦ) КАК СуммаПросрочки, | МИНИМУМ(Долги.ДатаОплаты) КАК ДатаОплаты, | Долги.Контрагент |ИЗ | (ВЫБРАТЬ | МенеджерВременныхТаблиц.Контрагент КАК Контрагент, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом КАК ДокументРасчетов, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты КАК ДатаОплаты, | РАЗНОСТЬДАТ(&ДатаИтогов, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты, ДЕНЬ) + Константы.ДопустимыеДниПросрочки КАК ДнейПросрочки, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетовОстаток | ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(, ) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки | ЛЕВОЕ СОЕДИНЕНИЕ Константы КАК Константы | ПО (1 = 1) | ЛЕВОЕ СОЕДИНЕНИЕ МенеджерВременныхТаблиц КАК МенеджерВременныхТаблиц | ПО ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.Контрагент = МенеджерВременныхТаблиц.Контрагент) КАК Долги |ГДЕ | Долги.СуммаВзаиморасчетовОстаток > 0 | |СГРУППИРОВАТЬ ПО | Долги.Контрагент"; Запрос.УстановитьПараметр("МенеджерВременныхТаблиц", мМенеджерВременныхТаблиц); Запрос.УстановитьПараметр("ДатаИтогов", КонецДня(ДатаПросрочки)); мДанныеДолгДата = Запрос.Выполнить().Выгрузить(); МенеджерВременныхТаблиц = Неопределено; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | НС.Контрагент, | НС.ТорговаяТочка |ПОМЕСТИТЬ Клиенты |ИЗ | &СписокКлиентов КАК НС"; Запрос.УстановитьПараметр("СписокКлиентов",СписокКлиентов); Запрос.Выполнить(); мМенеджерВременныхТаблиц = Запрос.МенеджерВременныхТаблиц; |
|||
9
Рэйв
17.07.12
✎
13:06
|
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ | НС.Контрагент, | НС.ТорговаяТочка |ПОМЕСТИТЬ Клиенты |ИЗ | &СписокКлиентов КАК НС"; Запрос.УстановитьПараметр("СписокКлиентов",СписокКлиентов); Запрос.Выполнить(); перенеси вверх, до выполнения основного запроса и не создавай два раза объект. |
|||
10
Рэйв
17.07.12
✎
13:07
|
а вообще все можно выполнить в одном тексте просто разделив два запроса через ";"
|
|||
11
SherifSP
17.07.12
✎
13:09
|
Мне первый запрос возвращает всех контрагентов в базе, это очень долго
|
|||
12
SherifSP
17.07.12
✎
13:09
|
Сейчас кину для чего я менеджер использую
|
|||
13
Рэйв
17.07.12
✎
13:10
|
ты совсем не слушаешь что тебе говорят.
|
|||
14
SherifSP
17.07.12
✎
13:12
|
Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
НС = СписокКлиентов.Добавить(); НС.Контрагент = ОформлениеСтроки.ДанныеСтроки.Контрагент; НС.ТорговаяТочка = ОформлениеСтроки.ДанныеСтроки.ТорговаяТочка; Если ОформлениеСтроки.ДанныеСтроки.Ссылка.Форма2 Тогда ОформлениеСтроки.ЦветФона = ЦветаСтиля.ЦветФормы2; КонецЕсли; СтруктураОтбора.Заказ = ОформлениеСтроки.ДанныеСтроки.Ссылка; СтатусРазблокировки = Ложь; ОтпускРазблокирован = РегистрыСведений.РазблокировкаЗаказов.СрезПоследних(,СтруктураОтбора); Если ОтпускРазблокирован.Количество() > 0 Тогда СтрокаТаблицы = ОтпускРазблокирован[0]; СтатусРазблокировки = СтрокаТаблицы.ОтгрузкаРазрешена; КонецЕсли; Ячейка = ОформлениеСтроки.Ячейки.Разблокирован; Если СтатусРазблокировки Тогда Ячейка.ОтображатьКартинку = Истина; Ячейка.Картинка = БиблиотекаКартинок.ПроверитьПолучателейЭлектронныхПисем; Иначе Ячейка.ОтображатьКартинку = Ложь; КонецЕсли; Ячейка = ОформлениеСтроки.Ячейки.Блокировка; Ячейка.Значение = ОформлениеСтроки.ДанныеСтроки.Контрагент.БлокировкаОтпускаПродукции; СрокДействия = ОформлениеСтроки.Ячейки.ТорговаяТочка.Значение.ЛицензияАлкогольСрокДействия; Если ЗначениеЗаполнено(СрокДействия) Тогда ОформлениеСтроки.Ячейки.ЛицензияАлкогольСрокДействия.Значение = СрокДействия; Если СрокДействия < ТекущаяДата() Тогда ОформлениеСтроки.Ячейки.ЛицензияАлкогольСрокДействия.ЦветТекста = Новый Цвет(255,0,0); КонецЕсли; КонецЕсли; КонецЦикла; МенеджерВременныхТаблиц = Неопределено; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | НС.Контрагент, | НС.ТорговаяТочка |ПОМЕСТИТЬ Клиенты |ИЗ | &СписокКлиентов КАК НС"; Запрос.УстановитьПараметр("СписокКлиентов",СписокКлиентов); Запрос.Выполнить(); мМенеджерВременныхТаблиц = Запрос.МенеджерВременныхТаблиц; В цикле я перебираю строки таблицы значения, там только один контрагент, Вот хочу этот менеджер поместить в главный запрос, чтобы он не выбирал всех контрагентов, а именно тех контрагентов, которые в менеджере |
|||
15
Lama12
17.07.12
✎
13:12
|
Может название темы смените?
|
|||
16
Рэйв
17.07.12
✎
13:12
|
и вообще зачем тебе ВТ? у тебя и так есть список готовый контрагентов в ТЗ.
Сделай из него нормальный массив из список значений и закинь в условие в запрос. |
|||
17
Рэйв
17.07.12
✎
13:13
|
из=или
|
|||
18
SherifSP
17.07.12
✎
13:14
|
(16)Запрос это отдельная процедура, к которой я обращаюсь при открытии и не только
|
|||
19
Рэйв
17.07.12
✎
13:18
|
>>Вот хочу этот менеджер поместить в главный запрос, чтобы он не выбирал всех контрагентов, а именно тех контрагентов, которые в менеджере
Да легко Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | НС.Контрагент, | НС.ТорговаяТочка |ПОМЕСТИТЬ Клиенты |ИЗ | &СписокКлиентов КАК НС |; |Выбрать * Из Клиенты"; |
|||
20
Рэйв
17.07.12
✎
13:22
|
+ а если из взаиморасчетов, то все еще проще
Запрос.УстановитьПараметр("спКликеты",СписокКлиентов.ВыгрузитьКолонку("Клиент")); и потом в запросе .... |ИЗ |РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(&Дата,Контрагент в (спКлиенты) ) |
|||
21
pessok
17.07.12
✎
13:23
|
+(19)
ГДЕ Клиенты.Ссылка В &НужныйСписок Запрос.УстановитьПараметр("НужныйСписок", НС.ВыгрузитьКолонку("Контрагент")) |
|||
22
Рэйв
17.07.12
✎
13:24
|
(21)Да у него в ВТ как раз нужный список как я понял.
|
|||
23
Рэйв
17.07.12
✎
13:24
|
+(20)
в (спКлиенты) = в (&спКлиенты) |
|||
24
SherifSP
17.07.12
✎
13:24
|
(19)не так ты понял запрос который самый первый в (0) должен выбирать контрагентов с менеджера временных таблиц, то есть со второго запроса. Но чтобы он выбрал нужно МенеджерВременныхТаблиц = Неопределено;
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | НС.Контрагент, | НС.ТорговаяТочка |ПОМЕСТИТЬ Клиенты |ИЗ | &СписокКлиентов КАК НС"; Запрос.УстановитьПараметр("СписокКлиентов",СписокКлиентов); Запрос.Выполнить(); мМенеджерВременныхТаблиц = Запрос.МенеджерВременныхТаблиц; Вставить в Есть запрос Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Долги.Контрагент, | СУММА(ВЫБОР | КОГДА Долги.ДнейПросрочки < 0 | ТОГДА Долги.СуммаВзаиморасчетовОстаток | ИНАЧЕ 0 | КОНЕЦ) КАК СуммаПросрочки, | МИНИМУМ(Долги.ДатаОплаты) КАК ДатаОплаты |ИЗ | (ВЫБРАТЬ | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.Контрагент КАК Контрагент, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом КАК ДокументРасчетов, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты КАК ДатаОплаты, | РАЗНОСТЬДАТ(&ДатаИтогов, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты, ДЕНЬ) + Константы.ДопустимыеДниПросрочки КАК ДнейПросрочки, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетовОстаток | ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(, ) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки | ЛЕВОЕ СОЕДИНЕНИЕ Константы КАК Константы | ПО (1 = 1)) КАК Долги |ГДЕ | Долги.СуммаВзаиморасчетовОстаток > 0 | |СГРУППИРОВАТЬ ПО | Долги.Контрагент"; |
|||
25
pessok
17.07.12
✎
13:24
|
а, ну тогда тупо в пакете внутреннее соединение, да и все
|
|||
26
pessok
17.07.12
✎
13:25
|
шота с константами по 1 = 1 я уже сегодня видел запрос...
|
|||
27
Рэйв
17.07.12
✎
13:25
|
(24)Это ты помоему нифига не понимаешь как работает менеджер временных таблиц. Так что почитай и просвятись сначала.
|
|||
28
SherifSP
17.07.12
✎
13:25
|
А именно где то в эту область
|ИЗ | (ВЫБРАТЬ | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.Контрагент КАК Контрагент, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом КАК ДокументРасчетов, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты КАК ДатаОплаты, | РАЗНОСТЬДАТ(&ДатаИтогов, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты, ДЕНЬ) + Константы.ДопустимыеДниПросрочки КАК ДнейПросрочки, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетовОстаток | ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(, ) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки | ЛЕВОЕ СОЕДИНЕНИЕ Константы КАК Константы | ПО (1 = 1)) КАК Долги |
|||
29
SherifSP
17.07.12
✎
13:26
|
(25) Вот как это сделать?
|
|||
30
Kashemir
17.07.12
✎
13:26
|
Чем это вы тут занимаетесь ?
Буффер = Новый МенеджерВременныхТаблиц; Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Буффер ; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | НС.Контрагент, | НС.ТорговаяТочка |ПОМЕСТИТЬ Клиенты |ИЗ | &СписокКлиентов КАК НС"; Запрос.УстановитьПараметр("СписокКлиентов",СписокКлиентов); Запрос.Выполнить(); Запрос2 = Новый Запрос; Запрос2.МенеджерВременныхТаблиц = Буффер; Запрос2.Текст = "ВЫБРАТЬ | Клиенты.Контрагент, | Клиенты.ТорговаяТочка |ИЗ | Клиенты КАК Клиенты"; Запрос2.Выполнить(); |
|||
31
Рэйв
17.07.12
✎
13:26
|
Считаю дальнейшую дискуссию контрпродуктивной:-)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |