![]() |
![]() |
![]() |
|
v7: Запрос | ☑ | ||
---|---|---|---|---|
0
Sasha_uu
27.07.11
✎
04:21
|
Запрос
"Период с Дата1 по Дата2; |Фирма = Регистр.Покупатели.Фирма; |УпрАналитика = Регистр.Покупатели.Фирма.УпрАналитика; |ЮрЛицо = Регистр.Покупатели.Фирма.ЮрЛицо; |Контрагент = Регистр.Покупатели.Договор.Владелец; |СвойствоКонтр = Регистр.Покупатели.Договор.Владелец.ОсновноеСвойство.ЗначениеСвойства; |Договор = Регистр.Покупатели.Договор; |КодОперации = Регистр.Покупатели.КодОперации; |СтавкаНП = Регистр.Покупатели.СтавкаНП; |ВидДолга = Регистр.Покупатели.ВидДолга; |КредДокумент = Регистр.Покупатели.КредДокумент; |Проект = Регистр.Покупатели.ТекущийДокумент.Проект; |ТекДокумент = Регистр.Покупатели.ТекущийДокумент; |СуммаВ = Регистр.Покупатели.СуммаВал; |РозничнаяПродажа = Регистр.Покупатели.РозничнаяПродажа; |Сумма = Регистр.Покупатели.СуммаРуб; |Функция НачОст = НачОст(Сумма); |Функция Приход = Приход(Сумма); |Функция Расход = Расход(Сумма); |Функция КонОст = КонОст(Сумма); |Функция НачОстВ = НачОст(СуммаВ); |Функция ПриходВ = Приход(СуммаВ); |Функция РасходВ = Расход(СуммаВ); |Функция КонОстВ = КонОст(СуммаВ); |Функция ВозвратОтПокупателя = Расход(Сумма)Когда (КодОперации = глКО.ВозвратОтПокупателя); |Функция ВозвратПоставщику = Приход(Сумма)Когда (КодОперации = глКО.ВозвратПоставщику); |Функция ВозвратОтПокупателяВ = Расход(СуммаВ)Когда( КодОперации = глКО.ВозвратОтПокупателя); |Функция ВозвратПоставщикуВ = Приход(СуммаВ)Когда (КодОперации = глКО.ВозвратПоставщику); |Условие (Контрагент в гСпКлиентов); |Группировка Контрагент; |Условие ((КодОперации <> глКО.ЗачтенАвансПоставщику) И (КодОперации <> глКО.ЗачтенАвансПоставщикуВал)); |Условие (КодОперации <> глКО.ЗачтенАвансПокупателя); |Условие (КодОперации <> глКО.СторнированАванс); |Условие (КодОперации <> глКО.ЗачтенВозвратПокупателя); |Условие (КодОперации <> глКО.ЗачтенВозвратПоставщику); |Условие (КодОперации <> глКО.СторнированВозврат);"; Запрос выполняется. Далее мне нужно перебрать список значений в котором находятся контрагенты и получить нач долг и кон долг на каждый документ а также сальдо на начало и окончания периода формирования отчета по каждому контрагенту. |
|||
1
nicxxx
27.07.11
✎
04:28
|
че спросить то хотел?
|
|||
2
Sasha_uu
27.07.11
✎
04:29
|
Как мне методом Запрос.Получить(ВыбКонтрагент) сначало получить общее сальдо потом получить сальдо в разрезе документов
|
|||
3
zak555
27.07.11
✎
04:36
|
нет остатков в разрезе документов
|
|||
4
Sasha_uu
27.07.11
✎
04:41
|
почему в ведомости по контрагентам, такие данные есть?
|
|||
5
miki
27.07.11
✎
04:43
|
Терминами лучше пользоваться к месту. Сальдо - это к бухитогам, для регистров - остаток. Остатков по реквизитам регистра в лоб получить нельзя. Тебе надо добавить группировку по документам. Когда начнешь обходить выборку запроса во внешнем цикле (группировка по контрагенту) получишь своё общее сальдо, во внутреннем цикле(по документам) - получишь _движения_. Если надо "сальдо" и по ним - только арифметика.
(4)Там тоже арифметика. Берется остаток на начало и пошло-поехало +/-. |
|||
6
Sasha_uu
27.07.11
✎
04:55
|
Как мне получить сначало конкретного контрагента из запроса (контриков получаю из списка значений).
|
|||
7
Sasha_uu
27.07.11
✎
04:57
|
+(6) т.е. Если в запрос добавлю группировку по текущим документам. То метод Запрос.Получить(выбКонтр,?) не сработает
|
|||
8
miki
27.07.11
✎
04:57
|
(6)Запрос.Контрагент
(3)Хотя, если он про КредДокумент, то это измерение в ТиСе... |
|||
9
miki
27.07.11
✎
05:00
|
(7) Читай (5). Не надо ничего изобретать. Ты уже наложил фильтр на список:
|Условие (Контрагент в гСпКлиентов); Цикл по первой группировке даст тебе всех контров из твоего списка по очереди. Тебе по какому документу "сальдо"? По КредДокумент ил по тому, который двигает регистр? |
|||
10
Sasha_uu
27.07.11
✎
05:01
|
(8) я не про кредДокумент а про |Группировка Документ
|
|||
11
Sasha_uu
27.07.11
✎
05:05
|
(9) если у контрагента не было движений, втом числе сальдо нулевое. Как тогда перебор запроса сработает?
|
|||
12
Rie
27.07.11
✎
05:08
|
(10) Какое-такое сальдо может быть по Группировка Документ?
(11) Есть специальное слово Все в запросе. |
|||
13
miki
27.07.11
✎
05:09
|
(10)ещё раз:
две группировки - два цикла. Во внешнем, по контрам (Пока Запрос.Группировка(1) или если так хочется Пока Запрос.Группировка("Котрагент")) ты получаешь сводные цифры по "всему" контрагенту, во внутреннем, по докам видишь движения каждого документа. Т. е. если во внешнем ты увидел приход по котрагенту за период 100, то во внутреннем увидишь какие кие доки и по сколько внесли свои цифры в эти 100. Также и с расходом. Остатки - арифметикой. (11) внешний цикл отработает, если остатки были не нулевые. Может и с нулевыми заставить отработать группировку, возможно, через "Все", хз, не помню. |
|||
14
Sasha_uu
27.07.11
✎
05:22
|
(13) ясно
Как мне спозиционироваться на конкретном контрагенте когда буду переберать запрос? Для Счетчик=1 По СпКонтр.РазмерСписка() Цикл ТекКонтр=СпКонтр.ПолучитьЗначение(Счетчик); Запрос.Получить(ТекКонтр); пока запрос.группировка(1)=1 цикл пока запрос.группировка(2)=1 цикл конеццикла; конеццикла; КонецЦикла; Или как делается??? |
|||
15
Rie
27.07.11
✎
05:25
|
(14) А зачем позиционироваться на конкретном контрагенте?
Двигаясь циклом по группировке контрагент - на каждом шаге цикла получишь конкретного контрагента. Если нужны какие-то хитрые манипуляции - можно выгрузить запрос в таблицу значений и там творить всё, что душе угодно. |
|||
16
Sasha_uu
27.07.11
✎
05:28
|
(15) т.е. переберать весь запрос столько раз сколько значений в списке значений?
|
|||
17
miki
27.07.11
✎
05:29
|
(14)либо через .Получить(), либо через .Групировка()
Убери в своём коде всё до "пока запрос.группировка(1)=1 цикл". Как вошёл в цикл - все данные по контрагенту будут доступны через Запрос.<Переменная_запроса>. Получил, что надо по контру в общеи - идешь во внутренний цикл и имеешь детализацию по докам. |
|||
18
Rie
27.07.11
✎
05:30
|
(16) _Один_ раз перебрать запрос.
На каждом шаге цикла по контрагентам - будет значение из списка значений. |
|||
19
miki
27.07.11
✎
05:31
|
(16)У тебя цикл отработает сам столько раз, сколько надо. Или по всем из списка, или по всем из цикла, имеющими сальдо или движения.
|
|||
20
miki
27.07.11
✎
05:32
|
*
<...> по всем из _списка_, имеющими<...> |
|||
21
viktor_vv
27.07.11
✎
08:34
|
(14) Добавляешь группировку Документ (предопределенную) или ТекДокумент.
Запрос.Получить(ТекКонтр,); пока запрос.группировка("ТекДокумент")=1 цикл конеццикла; СП "После выполнения метода Получить может осуществляться дальнейший обход выборки вызовами метода Группировка." |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |