|
Запрос с регистратором. | ☑ | ||
---|---|---|---|---|
0
mdv92
09.08.11
✎
20:24
|
Давайте уже теорию, а то опять - та же байда.
Регистр накопления "остатки", мне из него надо вытащить остаток по конкретному документу - регистратору с реквизитами Контрагент, договор, комиссионер и т.д. По идее - должна быть одна строчка по итогам работы запроса, а у меня получается 7, 6 из которых заполнены не полностью. Что я делаю не так?? |
|||
1
Wobland
09.08.11
✎
20:28
|
>По идее - должна быть одна строчка
откуда такая уверенность? показывай запрос уже |
|||
2
Wobland
09.08.11
✎
20:29
|
и что значит остаток по конкретному документу? исходная задача какова?
|
|||
3
mdv92
09.08.11
✎
20:30
|
(1) я уже аналогичную тему заводила, тогда мне помогли, но мысль я опять потеряла!
ЗапросПоРекламе.Текст = "ВЫБРАТЬ | ЯКос_РазмРекламы.ДоговорКомиссионера КАК Договор, //| СтрОплата.Договоры КАК ДоговорКонтр, | ЯКос_РазмРекламы.Издание КАК Номенклатура, //| СтрОплата.Контрагент КАК Контрагент, | ЯКос_РазмРекламы.ВидОперации КАК ВидОперации, | ЯКос_РазмРекламы.СуммаКонечныйОстаток КАК ОстатокС, | ЯКос_РазмРекламы.ВалСуммаКонечныйОстаток КАК ОстатокВ, | ЯКос_РазмРекламы.Период КАК Период, | ЯКос_РазмРекламы.Регистратор КАК Регистратор |ИЗ | РегистрНакопления.ЯКос_РазмРекламы.ОстаткиИОбороты(&НачДата, &ДатаРасчета, Регистратор, , ) КАК ЯКос_РазмРекламы |ГДЕ | ЯКос_РазмРекламы.ДоговорКомиссионера = &ДоговорКомиссионера | И ЯКос_РазмРекламы.ВидОперации = &ВидОперации | И ЯКос_РазмРекламы.Комиссионер = &Комиссионер //| И СтрОплата.Контрагент = &Контрагент //| И СтрОплата.Договоры = &ДоговорКонтр |ИТОГИ | СУММА(ОстатокС), | СУММА(ОстатокВ) |ПО | Контрагент, | Договор, | Номенклатура, | Регистратор"; ВыборкаКонтр = ЗапросПоРекламе.Выполнить().Выгрузить(); |
|||
4
mdv92
09.08.11
✎
20:33
|
Было размещение рекламы (документ такой), он сформировал движение по регистру с видом операции "размещение", потом была оплата, скорее всего - одна, по регистру прошло движение с тем же контрагентом-договором и т.д. с видом операции "оплата", теперь мы заполняем автоматически документ "взаимозачет" - подбираем к каждой оплате размещение.
|
|||
5
Wobland
09.08.11
✎
20:35
|
а почему бы к физической таблице не обратится? ВЫБРАТЬ ВидОперации, ЧтоТоЕщё ИЗ РН.ТвойРегистр ГДЕ Регистратор=&НужнаяСсылка
|
|||
6
Wobland
09.08.11
✎
20:36
|
+(5) я так понимаю, нужна информация из шапки документа
|
|||
7
mdv92
09.08.11
✎
20:41
|
(5) А я не знаю как раз - по какому документу было размещение!
И в прошлый раз - меня как раз на виртуальную таблицу науськивали. В каком случае какую надо брать? |
|||
8
Wobland
09.08.11
✎
20:42
|
(7) в (0) было сказано по конкретному документу...
|
|||
9
mdv92
09.08.11
✎
20:43
|
(6) А еще мне непонятно теоретически - как лучше сделать? Комиссионер у меня в шапке, а контрагенты - в "строчке". Лучше по каждой строчке сделать запрос по конкретному контрагенту, или сделать один запрос по всем, а потом в таблице выбирать данные по нужному контрагенту?
|
|||
10
mdv92
09.08.11
✎
20:44
|
(8) Может, я не точно сформулировала - мне нужно найти именно документ, сделавший движение, т.е. регистратор, а не просто конечный остаток по сумме.
|
|||
11
Wobland
09.08.11
✎
20:45
|
потом была оплата.. эта оплата по тому же регистру движения делает?
задача в чём? для каждого регистратора РазмещениеРекламы найти документ оплаты? что-то ночь у нас, тяжело соображаю |
|||
12
mdv92
09.08.11
✎
20:49
|
(11) Наоборот! Но это не принципиально! В момент запроса я знаю оплату и ищу размещение с тем, чтобы закрыть обороты и по оплате и по размещению, ну и другие телодвижения сделать.
Меня волнует вопрос, почему у меня опять 7 строчек вместо одной?? А если я сделаю только ПО | Регистратор"; , то где я возьму контрагента, договор и прочее? |
|||
13
mdv92
09.08.11
✎
20:51
|
А еще - как вставить в запрос данные из строчки? (если рассчитывать в каждой строчке отдельно)
Я закомментировала те кусочки //| И СтрОплата.Контрагент = &Контрагент потому что - ругается! |
|||
14
hhhh
09.08.11
✎
21:03
|
(13) если ты пишешь ИТОГИ, значит результат у тебя в виде дерева. 5 уровней: Контрагент, договор, номенклатура, регистратор и детальные записи. Как ты такое офигенное дерево из 5 уровней хочешь впихнуть в одну маленькую строчечку? Ничего не получится.
|
|||
15
mdv92
09.08.11
✎
21:05
|
(14) Давай уже без намеков! Что нужно написать вместо итогов?
|
|||
16
mdv92
09.08.11
✎
21:06
|
Мне нужно найти - было ли размещение по конкретному договору-контрагенту-комиссионеру-номенклатуре, и если было - получить сумму по нему.
|
|||
17
hhhh
09.08.11
✎
21:12
|
(16) ну этот запрос будет раз в 20 больше.
|
|||
18
mdv92
09.08.11
✎
21:12
|
Как это??
|
|||
19
AlexNew
09.08.11
✎
21:18
|
После Остаток по регистратору - можно не читать.
|
|||
20
mdv92
09.08.11
✎
21:19
|
(19) Ну пусть не остаток! Пусть - движение, всё равно с остатком по сути совпадает.
|
|||
21
AlexNew
09.08.11
✎
21:20
|
(20) Что с чем совпадает?
|
|||
22
mdv92
09.08.11
✎
21:23
|
Остаток с движением по документу. Либо движение было, тогда остаток ему равен, либо не было, ну и еще вариант, что движение уже закрыто (был и приход и расход) - тогда в выборку по запросу это не попадет. Правильно?
|
|||
23
mdv92
09.08.11
✎
21:24
|
В каком случае нужно обращаться к физической таблице, а в каком - к виртуальной?
|
|||
24
Киборг
09.08.11
✎
21:25
|
(0)
> Регистр накопления "остатки", мне из него надо вытащить остаток по конкретному документу - регистратору... Из РН можно вытащить остатки по набору измерений на дату, а не по регистратору. Наверно задача звучит как-то по-другому?! |
|||
25
mdv92
09.08.11
✎
21:27
|
Мне нужно найти документ, который сделал движение!
|
|||
26
Киборг
09.08.11
✎
21:28
|
это Регистратор в движении
|
|||
27
AlexNew
09.08.11
✎
21:28
|
(25) Движение, зачем ОстаткиИОбороты, мысль сформулируй.
|
|||
28
mdv92
09.08.11
✎
21:31
|
(27) Ну так мне нужен регистратор только если остаток есть!
А если уже всё закрылось - мне и регистратор не нужен! |
|||
29
Киборг
09.08.11
✎
21:33
|
остаток это не движение, поэтому из него и нельзя получить регистратор
|
|||
30
AlexNew
09.08.11
✎
21:35
|
(28) Какой регистратор, последний док-т, к-рый сделал движение по регистру, где остаток остался?
|
|||
31
mdv92
09.08.11
✎
21:46
|
(30) Если я задам контрагента-номен. -договор и т.д. - то я получу либо единственное размещение, либо не получу ничего - размещение с таким набором параметров может быть только одно.
|
|||
32
Киборг
09.08.11
✎
21:51
|
попробуй тогда обороты взять развернутые по регистратору, может там будет то, что тебе надо
|
|||
33
AlexNew
09.08.11
✎
21:54
|
Сделать измерением не? А так Остатки с оборотами левое соединение макс по моменту времени сгруппировать по моментувремени и левое соединение опять же с оборотами.
|
|||
34
mdv92
09.08.11
✎
21:54
|
Так я нашла то, что мне надо! Только у меня строчек 7 вместо одной!
Я, конечно, могу теперь лишние выкинуть, но я хочу понять, как получить запросом сразу то, что нужно. |
|||
35
AlexNew
09.08.11
✎
21:55
|
Сгруппировать не по моменту времени, а твоим измерениям.
|
|||
36
mdv92
09.08.11
✎
21:56
|
(33) Измерением мне кажется делать неправильно. Мне ведь его тогда тоже придется "закрывать", в общем, масло масляное.
Про "левое соединение" - мне вообще темный лес, к тому же - зачем оно? Мне кажется, нужно "покрасивше" написать то что есть и всё! |
|||
37
mdv92
09.08.11
✎
21:56
|
(35) Ну как написать-то?
|
|||
38
AlexNew
09.08.11
✎
22:08
|
ВЫБРАТЬ
Обороты.Регистратор ИЗ ( Выбрать макс(Обороты.Регистратор.МоментВремени) КАК МоментВремени ИЗ ТвойРегитр.Остатки() ЛЕВОЕ СОЕДИНЕНИЕ ТвойРегистр.Обороты(,,Регистратор) как Обороты ПО всем измерениям) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ ТвойРегистр.Обороты(,,Регистратор) как Обороты ПО Обороты.Регистратор.МоментВремени = ВложенныйЗапрос.МоментВремени Так и напиши, смысл ясен? |
|||
39
mdv92
09.08.11
✎
22:14
|
(38) Спасибо!
Не, смысл совсем не ясен. |
|||
40
AlexNew
09.08.11
✎
22:17
|
Сгруппировать забыл во вложенном запросе, но смысл ясен. Выбираешь максимальные регистраторы (момент времени), и дальше их получаешь.
|
|||
41
mdv92
09.08.11
✎
22:26
|
"ПО всем измерениям" - так и писать? Я ведь в запросах ну ничего не понимаю!
Мне кажется, что если я задам запрос на получение остатков со всеми нужными мне параметрами, да еще и добавлю группировку по регистратору - я как раз и получу ссылку на нужный документ! |
|||
42
Dethmont
09.08.11
✎
22:55
|
Молодец...
Так и пиши: "Хочу все и сразу!!!" Запрос тебе даст все что ты хочешь, правда... И конечно же сделай группировку по регистратору, а то вдруг не до даст зарос))) |
|||
43
AlexNew
09.08.11
✎
23:00
|
(42) Не надо там группировку по регистратору. По всем измерениям, какие у тебя в регистре. Но лучше бы пересмотреть его струкиуру.
|
|||
44
mdv92
10.08.11
✎
13:26
|
(43) Как пересмотреть его структуру? Пока я валю туда всё, что мне нужно, хотя особой необходимости нет. У меня там - комиссионер, договор комиссионера, контрагент, договор контрагента, хотя, наверное, можно было бы обойтись и только договорами, номенклатура, которая вообще на всякий случай, пусть будет, еще тип операции - "размещение", комиссия", оплата", "оплата комиссии", "оплата без размещения" - по всем типам мне придется делать приход и расход, чтобы закрыть оборот, правильно?
Так вместо "по всем измерениям" - написать ПО Контрагент, договор, и т.д.? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |