Имя: Пароль:
1C
1С v8
Помогите с Запросом
0 prog-Igor
 
18.11.14
13:36
Суть:В заказе поставщика нужно видеть всю сумму касс.ордер. проведенных,

Запрос.Текст="ВЫБРАТЬ
                 |    ЗаказПоставщику.Контрагент.Ссылка КАК КонтрагентСсылка,
                 |    СУММА(ЕСТЬNULL(РасходныйКассовыйОрдер.СуммаДокумента, 0)) КАК СуммаДокумента
                 |ИЗ
                 |    Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер
                 |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику КАК ЗаказПоставщику
                 |        ПО РасходныйКассовыйОрдер.Контрагент.Ссылка = ЗаказПоставщику.Контрагент.Ссылка
                 |            И РасходныйКассовыйОрдер.Проведен = ЗаказПоставщику.Проведен
                 |ГДЕ
                 |    ЗаказПоставщику.Контрагент.Ссылка = &Контрагент
                 |    И РасходныйКассовыйОрдер.Проведен
                 |
                 |СГРУППИРОВАТЬ ПО
                 |    ЗаказПоставщику.Контрагент.Ссылка";    
    Запрос.УстановитьПараметр("Контрагент",Контрагент);
    Запрос.УстановитьПараметр("Проведен",Истина);
    Выборка=Запрос.Выполнить().Выбрать();            
по запросу то данные правильные показывает в заказе, но если сам заказ провести тогда при следующим заказе показывает сумму в 2 раза больше, почему, ведь сам заказ не должен влиять на сумму!?
1 prog-Igor
 
18.11.14
13:40
нужно видеть общую сумму проведенный ордеров по контрагенту в заказе не в зависимости заказ проведен или нет
2 Cube
 
18.11.14
13:42
(0) Связь у тебя по контрагенту потому что. Эсли на этого котрагента сделать 10 заказов и один РКО, то запрос выдаст сумму = сумма РКО * 10.
3 spero
 
18.11.14
13:43
(0) В следующем заказе контрагент какой?
4 prog-Igor
 
18.11.14
13:44
(3) тот же
5 Cube
 
18.11.14
13:44
(0) И что за условие связи такое корявое?

РасходныйКассовыйОрдер.Контрагент.Ссылка = ЗаказПоставщику.Контрагент.Ссылка

надо так:

РасходныйКассовыйОрдер.Контрагент.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка = ЗаказПоставщику.Контрагент.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка

только хардкор!
6 Cube
 
18.11.14
13:44
(0) "РасходныйКассовыйОрдер.Проведен = ЗаказПоставщику.Проведен"

А это ваще пять баллов!)))
7 sapphire
 
18.11.14
13:45
(0) Бред какой-то
8 DrShust
 
18.11.14
13:45
(6) :))
9 sapphire
 
18.11.14
13:46
(0) "В заказе поставщика нужно видеть всю сумму касс.ордер. проведенных"

Ничего не смущает?
10 DrShust
 
18.11.14
13:46
(0) И вроде левое соединение не проканает, если условие наложено в том числе на правую таблицу.
11 sapphire
 
18.11.14
13:46
Почему не сумму оплат?
12 sapphire
 
18.11.14
13:47
(10) Ессно
13 sapphire
 
18.11.14
13:47
(10) Ону уже вырождается в INNER JOIN из-за условия:
ЗаказПоставщику.Контрагент.Ссылка = &Контрагент
14 prog-Igor
 
18.11.14
13:49
хорошо народ я понял что не правильно
15 prog-Igor
 
18.11.14
13:50
тогда дайте совет как правильно
16 sapphire
 
18.11.14
13:51
(15) Сначала надо понять что нужно.
- вывести взаиморасчеты с контрагентом (Сумму)
- вывести оплаты через кассу котрагенту
17 prog-Igor
 
18.11.14
13:53
вывести оплаты через кассу котрагенту
18 sapphire
 
18.11.14
13:54
(17) А зачем вот так вот все прямо сразу, или по конкретному заказу?
19 sapphire
 
18.11.14
13:55
(17) Так РКО, наверное, делает определенные движения по регистрам накопления. По каким?
20 prog-Igor
 
18.11.14
13:55
вывести оплаты через кассу по конктретному котрагенту в заказе
21 User_Agronom
 
18.11.14
13:57
(0)>> Запрос.УстановитьПараметр("Проведен",Истина);

А где этот параметр в тексте запроса? Может эту строку просто удалить?
22 sapphire
 
18.11.14
13:57
(20) И что это даст?
Предположим, год назад мы у него брали и платили колбасу, предположим, 15 килограмм в... 5 лет
покажет сумму 15 000.
Что это даст-то?
23 sapphire
 
18.11.14
13:57
(21) Какая разница.
24 sapphire
 
18.11.14
13:59
(20) Вы уже ответили на собственный вопрос.
И так, текст запроса никак не зависит от самого заказа, а только от контрагента.
Ваша задача получить сумму оплат от контрагента за весь период БД.
25 sapphire
 
18.11.14
13:59
+(24) А если платили б/н?
26 DrShust
 
18.11.14
14:01
(19) 100% движения должны быть по какому-то регистру. Например, Взаиморасчёты.
27 prog-Igor
 
18.11.14
14:02
(25)к примеру: будет расходный кассовый ордер на 3000 на конкр. контрагента, и поступление товара от него на 1000, вот в заказе нужно видеть эту разницу -2000!
28 sapphire
 
18.11.14
14:09
(27) значит, Вы в (20) ошиблись и Вам нужно по вопросу в (16) сделать другой выбор, верно?
29 prog-Igor
 
18.11.14
14:15
получается что да
30 sapphire
 
18.11.14
14:16
(29) Так что же именно нужно вывести?
31 prog-Igor
 
18.11.14
14:18
общую сумму долга контрагента
32 prog-Igor
 
18.11.14
14:23
думаю что нужно получить с регистров накопления сумму долга контрагента
33 vicof
 
18.11.14
14:24
ВЫБРАТЬ * ИЗ РегистрНакопления.Взаиморасчеты.СрезПоследних(&Дата, Контрагент = &Контрагент)
34 sapphire
 
18.11.14
14:42
(33) Ну вот, взял всё и опошлил :)
35 sapphire
 
18.11.14
14:43
+(34) Меня особенно радует сочетание:
РегистрНакопления.Взаиморасчеты.СрезПоследних
36 prog-Igor
 
18.11.14
14:47
скорее всего регистр сведений...срезПоследних
37 sapphire
 
18.11.14
14:50
(36) Скорее всего такого регистра сведений как "Взаиморасчеты" нет :)
А вот накопления с таким именем встречается.
38 sapphire
 
18.11.14
14:51
(36) Остается подумать над тем, что глумливый социум имел ввиду под(33)  :)))
39 vicof
 
18.11.14
14:51
(35) Остатки имел ввиду. Болею, не соображаю уже :)
40 sapphire
 
18.11.14
14:53
(39) Ты знал, да?! :))))
41 vicof
 
18.11.14
14:54
(40) Знал. Верил. Ждал.
42 prog-Igor
 
18.11.14
15:01
в УТ 8.3 регистр накопления.взаиморасчетов нет, есть регистр накопления.расчетыСПоставщиками
43 vicof
 
18.11.14
15:03
(42) больше скажу, УТ 8.3 вообще в природе нет
44 sapphire
 
18.11.14
15:05
(42) Таки может Вы подумаете, что именно глядеть надо?
Вроде инфы вполне себе достаточно.
45 prog-Igor
 
18.11.14
15:05
ок
46 prog-Igor
 
18.11.14
15:06
УТ ред.3.0
47 sapphire
 
18.11.14
15:13
(46) на ИТС консоль запросов есть.
48 vicof
 
18.11.14
15:15
(46) УТ 3.0 - еще лучше :))
49 sapphire
 
18.11.14
15:17
(48) :)))
50 sapphire
 
18.11.14
15:18
(48) Давай угадаем :)
ВЫБРАТЬ Сумма ИЗ РегистрНакопления.Взаиморасчеты.Остатки(&Дата, Контрагент = &Контрагент)
51 sapphire
 
18.11.14
15:19
ВЫБРАТЬ Сумма ИЗ РегистрНакопления.расчетыСПоставщиками.Остатки(&Дата, Контрагент = &Контрагент)
52 prog-Igor
 
18.11.14
15:21
интересные вы люди, любите показать что вы всех умнее,что вы лучше знаете, ведь я обратился подсказать,думаю что вы взрослые люди а ведете себя как дети! что не так сказал на счет УТ?
53 vicof
 
18.11.14
15:23
(52) Если ты не в состоянии отличить конфигурацию от платформы, о каких запросах может идти речь?
54 prog-Igor
 
18.11.14
15:30
я в нормальном состоянии, и указал УТ 3.0 а вот точнее будет
конфигурация:Управление торговлей для *******, редакция 3.0
Разработка конфигурации: "*******", 2005-2014 (3.0.8.1)
55 prog-Igor
 
18.11.14
15:31
ты ведь сам написал регистр накоплений.срезПоследних, зачем мне писать что я не в состоянии....
56 sapphire
 
18.11.14
15:33
(52) Интересный Вы человек, мы интересные люди, пытались понять, что именно Вам вывести необходимо, т.к. по опыту нашему усомнились в правильности постановки задачи.
Поскольку, Вашего cf-ника у нас нет, вот мы и гадаем, какой же именно регистр (да, явно, регистр накопления) Вам нужен.
57 sapphire
 
18.11.14
15:33
(55) Так ведь ниже написал, что болеет человек, не сообразил :)
58 prog-Igor
 
18.11.14
15:36
(56)хорошо,спасибо за подсказу
59 prog-Igor
 
18.11.14
15:37
почему бы так сразу не написать, и не обсуждать правда?
60 sapphire
 
18.11.14
15:37
(55) Возьмите консоль запросов, посмотрите какие регистры затрагивает РКО.
выберите нужный.
Посмотрите как именно называется поле в запросе, например:

ВЫБРАТЬ * ИЗ РегистрНакопления.расчетыСПоставщиками.Остатки(&Дата, Контрагент = &Контрагент)

может поле будет звучать как СуммаОстаток
61 sapphire
 
18.11.14
15:38
(59) Что сразу написать? Код?
Нужно что бы Вы сами додумались, иначе смысла помогать нет.
62 prog-Igor
 
18.11.14
15:41
нет не код, достаточно было как (60), спасибо,понял что сначала не то что надо делал, тема закрыта!
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.