Имя: Пароль:
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), спасибо,понял что сначала не то что надо делал, тема закрыта!
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший