|
v7: Помогите с запросом | ☑ | ||
---|---|---|---|---|
0
bestuzhev
25.04.13
✎
11:24
|
Код:
Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Взаиморасчеты) |ПЕРИОД С ДатаНач по ДатаКон; |Контрагент =Регистр.Взаиморасчеты.Клиент; |Фирма =Регистр.Взаиморасчеты.ТекущийДокумент.Фирма; |СуммаБазовая =Регистр.Взаиморасчеты.СуммаБазовая; |Группировка Контрагент; |Условие (Фирма в ВыбФирма);"; Если Запрос.Выполнить(ТекстЗапроса) <> 0 Тогда Пока Запрос.Группировка("Контрагент") = 1 Цикл Сообщить(Запрос.Контрагент); Сообщить(Запрос.СуммаБазовая); Сообщить(Запрос.Фирма); Сообщить("___________________________"); КонецЦикла; КонецЕсли; Нужно получить остатки по взаиморасчетам с контрагентами по организации которая в переменной ВыбФирма. В регистре нет измерения фирма. |
|||
1
Chum
25.04.13
✎
11:25
|
группировка Фирма
|
|||
2
bestuzhev
25.04.13
✎
11:28
|
(1)
"//{{ЗАПРОС(Взаиморасчеты) |ПЕРИОД С ДатаНач по ДатаКон; |Контрагент =Регистр.Взаиморасчеты.Клиент; |Фирма =Регистр.Взаиморасчеты.ТекущийДокумент.Фирма; |СуммаБазовая =Регистр.Взаиморасчеты.СуммаБазовая; |Группировка Фирма; |Условие (Фирма в ВыбФирма);"; Вот так? |
|||
3
bestuzhev
25.04.13
✎
11:35
|
Я так понял т.к. нет среди измерений Фирмы придется выбирать с документами с начала ведения учета а потом все группировать? Только вот придумать не могу как.
|
|||
4
pofigos
25.04.13
✎
11:49
|
(0) Меня спасало на начальных этапах |Фирма =Регистр.Взаиморасчеты.ТекущийДокумент.ВидДокумента.Фирма;
Где ВидДокумента меняешь на ВидДокумента. заданного в конфигураторе. Либо, если движение по регистру делает несколько документов, перечисляешь их через запятую. Но со временем понял, что прямой запрос намного удобнее... |
|||
5
bestuzhev
25.04.13
✎
11:51
|
(4) Как через запятую? Пример приведи плиз.
|
|||
6
pofigos
25.04.13
✎
11:53
|
(4)Фирма=Регистр.Взаиморасчеты.ТекущийДокумент.ВидДокумента.Фирма,Регистр.Взаиморасчеты.ТекущийДокумент.ВидДокумента2.Фирма,Регистр.Взаиморасчеты.ТекущийДокумент.ВидДокумента3.Фирма;
|
|||
7
bestuzhev
25.04.13
✎
11:54
|
(4) Мне в принципе один раз надо сделать, переношу данные из 7ки (самописной) в 8ку типовую.
|
|||
8
bestuzhev
25.04.13
✎
11:57
|
(6) Слушай а можешь помочь с таким вариантом, может фигню скажу просто не до конца понимаю 7ку.
Я в цикле буду перебирать все организации, потом мне нужно по каждой организации получить остатки по взаиморасчетам на дату. Беду с отсутствием Фирмы в регистре я уже описал, мне хоть в таблицу значений впихнуть все документы по выбранной фирме которые движения по регистру делают а там я уже сверну как мне надо. |
|||
9
dk
25.04.13
✎
12:05
|
1. не хватает функций приход / расход
2. фирму можно и потом вытащить - уже при обходе результатов запроса 3. период надо выбирать от начала времен и потом сверить итоговые цифры в разрезе контрагента |
|||
10
Builder
25.04.13
✎
12:06
|
Что то мне подсказывает что если Фирма - общий реквизит документов, то такой вариант должен прокатить.
Фирма =Регистр.Взаиморасчеты.ТекущийДокумент.Фирма; Если в цикле - то смысла нет отборы делать, сделай группировку Группировка Фирма; Группировка Контрагент; |
|||
11
pofigos
25.04.13
✎
12:08
|
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "//{{ЗАПРОС(Взаиморасчеты) |ПЕРИОД С ДатаНач по ДатаКон; |Контрагент = Регистр.Взаиморасчеты.Клиент; |Фирма = Регистр.Взаиморасчеты.ТекущийДокумент.Фирма (Тут через запятую перечисли путь к реквизиту фирма для каждого документа регистра); |СуммаБазовая = Регистр.Взаиморасчеты.СуммаБазовая; |Функция(СуммаБазоваяСумма) = Сумма(СуммаБазовая); |Группировка Контрагент; |Условие (Фирма в ВыбФирма);"; Если ВыбФирма.ЭтоГруппа() = 1 ТЕкстЗапроса = ТекстЗапроса + "Условие (Фирма в ВыбФирма) |;"; Иначе Условие (Фирма в ВыбФирма) |;"; КонецЕсли; Если Запрос.Выполнить(ТекстЗапроса) <> 0 Тогда Пока Запрос.Группировка("Контрагент") = 1 Цикл Сообщить(Запрос.Контрагент); Сообщить(Запрос.СуммаБазовая); Сообщить(Запрос.Фирма); Сообщить("___________________________"); КонецЦикла; КонецЕсли; А после этого бы уже сворачивал. в Итоге должна быть таблица с 3 колонками..... Как-то так. |
|||
12
pofigos
25.04.13
✎
12:09
|
(10) Согласен, но конфу то не видно. поэтому предложен такой вариант.
|
|||
13
pofigos
25.04.13
✎
12:10
|
(9) условие с самого текста запроса убрать и на ее место дописать группировку по фирме. Недосмотрел )
|
|||
14
alex74
25.04.13
✎
12:11
|
остатки так не получишь, только обороты
|
|||
15
Builder
25.04.13
✎
12:13
|
Если ВыбФирма.ЭтоГруппа() = 1
ТЕкстЗапроса = ТекстЗапроса + "Условие (Фирма в ВыбФирма) |;"; Иначе Условие (Фирма в ВыбФирма) |;"; КонецЕсли; Это к чему тут вообще ? |
|||
16
dk
25.04.13
✎
12:14
|
(11) Функция Сумма для оборотного регистра, тебе приход и расход нужны
(14) остатки и есть оборот за все время |
|||
17
Builder
25.04.13
✎
12:16
|
(16) Гениально. А если выбрать не за все время - что получишь?
|
|||
18
alex74
25.04.13
✎
12:17
|
(16) нуну, успехов
|
|||
19
pofigos
25.04.13
✎
12:17
|
(15) К тому, что показан пример вхождения элемента справочника фирмы (если это конечно справочник). Весь код не писал.
Если группа, то условие ТЕкстЗапроса = ТекстЗапроса + "Условие (Фирма в ВыбФирма) Если просто элемент, то : ТЕкстЗапроса = ТекстЗапроса + "Условие (Фирма = ВыбФирма) |
|||
20
alex74
25.04.13
✎
12:19
|
(19) попробуй применить "Условие (Фирма в ВыбФирма)" для элемента, удивишься
|
|||
21
КонецЦикла
25.04.13
✎
12:19
|
В регистре есть КредДокумент?
Какая структура регистра? |
|||
22
dk
25.04.13
✎
12:20
|
(17) а чего ты тут советуешь по запросу-то? думаешь остатки получишь по документам? )))
(18) если других вариантов нет, то можно остатки и через обороты получить, для одноразовой процедуры сойдет |
|||
23
pofigos
25.04.13
✎
12:20
|
(20) спасибо, при первой возможности попробую. Думаю, что удивлюсь. :)
|
|||
24
Builder
25.04.13
✎
13:19
|
(22) В данном случае не зная структуры регистра вообще можно только догадываться что же там получится и что хочет ТС.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |