|
v7: Как использовать метод получить | ☑ | ||
---|---|---|---|---|
0
Adept
19.12.14
✎
13:16
|
Народ, не пинайте сильно сам давно на 7 ке не писал.
Вобщем есть запрос ТекстЗапросаСГ = "//{{ЗАПРОС(Сформировать) |Период с ДатаС по ДатаПо; |Товар = Регистр.СрокиГодности.Товар; |Склад = Регистр.СрокиГодности.Склад; |СрокГод = Регистр.СрокиГодности.СрокГод; |ДатаПроизводства = Регистр.СрокиГодности.ДатаПроизводства; |ОстатокТовара = Регистр.СрокиГодности.ОстатокТовара; |Функция ОстатокТовараКонОст = КонОст(ОстатокТовара); |Группировка Склад; |Группировка Товар; |"//}}ЗАПРОС Надо обход результатов по конкретному складу и товару делаю так: Если ЗапросСГ.Получить(Склад,Товар) = 1 Тогда Пока ЗапросСГ.Группировка(2) = 1 Цикл //обработка, сюда не заходит КонецЦикла; КонецЕсли; Как правильно использовать этот метод |
|||
1
lavalit
19.12.14
✎
13:18
|
используй конструктор запросов. там оно все сделает.. потом допилишь если чего не хватает
|
|||
2
Adept
19.12.14
✎
13:21
|
(1) Запрос формирует стандартный обход по группировкам
|
|||
3
Мигало
19.12.14
✎
13:24
|
Если ЗапросСГ.Получить(Склад,) = 1 Тогда // Тут получаем конкретное значение склада
Пока ЗапросСГ.Группировка() = 1 Цикл // дальше бежим по группировкам (указание группировки обламывает выборку //обработка, сюда не заходит КонецЦикла; КонецЕсли; |
|||
4
Duke1C
19.12.14
✎
13:27
|
(2) ну для начала объясни, чем стандартный обход группировок не устраивает. Если нужны итоги только по конкретному складу, то накладывай условие в самом запросе
|
|||
5
Adept
19.12.14
✎
13:31
|
(4) Если накладывать условия в запросе это получиться запрос в цикле
ЗапросСГ.Получить(Склад,Товар) - Склад,Товар это элементы из выборки другого запроса |
|||
6
antoneus
19.12.14
✎
13:34
|
(5) с чего вдруг? условие в.
|
|||
7
Adept
19.12.14
✎
13:38
|
(6) Ну а с В по результатам запроса дополнительный поиск не придеться делать.
Есть регистр остатков в нем все остатки Есть регистр остатков по срокам в нем остатки только с сроками и в разрезе сроков при обходе первого, надо фильтровать результат по второму, и если такой результат есть, его надо обработать |
|||
8
Adept
19.12.14
✎
13:39
|
+(7)
*(6) Ну а с В по результатам запроса дополнительный поиск не придеться делать? |
|||
9
Мигало
19.12.14
✎
13:43
|
(8) Позиционироваться через .Получить() все равно придется, условием В ты только ограничиваешь выборку в запросе
|
|||
10
Adept
19.12.14
✎
14:01
|
(9) Почему то в
ЗапросСГ.Группировка() = 1 попадают другие номенклатуры, не только те которые в отборе ЗапросСГ.Получить(Склад,Товар) |
|||
11
Мигало
19.12.14
✎
14:18
|
(10) Если ты исполняешь ЗапросСГ.Получить(Склад,Товар) и группировок в запросе всего 2, то ЗапросСГ.Группировка() после .Получить() вызывать не нужно - запись и так спозиционированна.
|
|||
12
Adept
19.12.14
✎
14:51
|
(11) А если их несколько?
|
|||
13
Adept
19.12.14
✎
14:53
|
+(12) Всмысле записей с одинаковыми полями Склад и товар, но с разными сроками годности?
|
|||
14
DCKiller
19.12.14
✎
14:55
|
(13) Тогда делай еще группировку по сроку годности
|
|||
15
Adept
19.12.14
✎
14:55
|
(14) И потом
Пока ЗапросСГ.Группировка() = 1 Цикл или Пока ЗапросСГ.Группировка(3) = 1 Цикл ? |
|||
16
Мигало
19.12.14
✎
14:57
|
Пока ЗапросСГ.Группировка() = 1 Цикл
|
|||
17
vladko
19.12.14
✎
16:10
|
Подитожим:
ТекстЗапросаСГ = "//{{ЗАПРОС(Сформировать) |Период с ДатаС по ДатаПо; |Товар = Регистр.СрокиГодности.Товар; |Склад = Регистр.СрокиГодности.Склад; |СрокГод = Регистр.СрокиГодности.СрокГод; |ДатаПроизводства = Регистр.СрокиГодности.ДатаПроизводства; |ОстатокТовара = Регистр.СрокиГодности.ОстатокТовара; |Функция ОстатокТовараКонОст = КонОст(ОстатокТовара); |Группировка Склад; |Группировка Товар; |Группировка СрокГод; |"//}}ЗАПРОС ..... ЗапросСГ.ВНачалоВыборки(); Если ЗапросСГ.Получить(Склад,Товар) = 1 Тогда Пока ЗапросСГ.Группировка("ЗапросСГ") = 1 Цикл ........... КонецЦикла; КонецЕсли; Не забудь перед методом .Получить использовать .ВНачалоВыборки, т.к. .Получить работает только вниз от текущей позиции в запросе. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |