Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Вопрос по запросу 77 (http://forums.kuban.ru/f1040/vopros_po_zaprosu_77_a-2133005.html)

Wanderer27 30.01.2012 12:34

Вопрос по запросу 77
 
Есть запрос в ТИС
|Долг =Регистр.Покупатели.СуммаРуб,Регистр.Поставщики.СуммаРуб;
|Док = Регистр.Покупатели.КредДокумент,Регистр.Поставщики.КредДокумент;

|Функция ДолгНачОст = НачОст(Долг);
|Функция ДолгПриходОбщ = Приход(Долг) ;
|Функция ДолгРасходОбщ = Расход(Долг) ;
|Функция ДолгКонОст = КонОст(Долг);
|Группировка Контрагент без групп;
|Группировка Док;

Как сделать чтобы в зхапрос попадали записи у котjрых Конечный остаток >0?
если делаю так |Условие (Запрос.ДолгКонОст>0);
ТО выдает чушь...
Спасибо!

Buzz 30.01.2012 12:54

|Условие (ДолгКонОст>0);

Wanderer27 30.01.2012 12:58

2-вопрос до конца мой прочли?
если делаю так |Условие (Запрос.ДолгКонОст>0);
ТО выдает чушь...
Если делать так |Условие (ДолгКонОст>0);
ТО переменная ДолгКонОст ему не знакома

Buzz 30.01.2012 13:02

3- Если делать так |Условие (ДолгКонОст>0);
ТО переменная ДолгКонОст ему не знакома
Нет в 1

Wanderer27 30.01.2012 13:07

4. и что что нет? Я написал пример запроса. И написал, что если пишу к запросу условие |Условие (Запрос.ДолгКонОст>0);
То он выводит чушь.
я не понимаю вашего совета..

Buzz 30.01.2012 13:11

Полный текст запроса надо показывать.

victuan 30.01.2012 13:19

Ёпрст, явись!

Wanderer27 30.01.2012 13:19

зачем полный..есть ф-ции..что нужны...вот этого достаточно....
но решения я пока еще не увидел..:(

Buzz 30.01.2012 13:23

Где условие хоть написано? И напиши подробно на что ругается.

Wanderer27 30.01.2012 13:31

Долг =Регистр.Покупатели.СуммаРуб,Регистр.Поставщики.Су ммаРуб;
|Док = Регистр.Покупатели.КредДокумент,Регистр.Поставщики .КредДокумент;

|Функция ДолгНачОст = НачОст(Долг);
|Функция ДолгПриходОбщ = Приход(Долг) ;
|Функция ДолгРасходОбщ = Расход(Долг) ;
|Функция ДолгКонОст = КонОст(Долг);
|Группировка Контрагент без групп;
|Группировка Док;
|Условие (Запрос.ДолгКонОст>0);
ТО выдает чушь... в приходах почему то 0 выводится...
Если у условии пишу,
|Условие (ДолгКонОст>0); ТО запрос ругается на переменную ДолгКонОст, что она не определена.

Buzz 30.01.2012 13:54

Ну чудес не бывает.
1. Посмотри, точно переменные одинаковые что в условие, что в функции (мож буквы попутаны).
2. Фильтруй данные в переборе запроса, если не взлетит условие в запросе.

Wanderer27 30.01.2012 13:57

тогдк как сотировать резуьтрат запроса по ДолгКонОст? Или или это нереально в запросе?

Buzz 30.01.2012 14:02

Он у тебя уже отсортирован по группировкам.
В выборке напишешь.
Пока Запрос.Группировка("Док") = 1 Цикл
Если Запрос.ДолгКонОст <= 0 Тогда
Продолжить;
и т.д.

Gorr 30.01.2012 14:40

а может потому, что интервал дат в запросе не указан...?

Buzz 30.01.2012 15:15

Да не он просто не хочет полностью запрос показать )
Тогда ему еще и на контрагента поругался бы.

Чучундер 30.01.2012 15:53

(10) если у тебя документ расхода, то приход = 0.
|Условие (Запрос.ДолгКонОст>0);
.
непонятен период запроса - если не задан - все даелаетс яна ТА, тогда приход и расход смысла не имеют..
.
автору много думать.

Чучундер 30.01.2012 15:55

в запросе непонятно что автор хочет. вместо того чтобы спросить как решить задачу - начинает спрашивать "пилю лобзиком рельсу - не получается"...
.
в псотавщиках и покупателях - суммы с разными знаками... - учитывать!

Gorr 30.01.2012 16:20

Вообще в запросах значение функции в условии использовать нельзя, возможно использование только значений переменных.
Единственное что можно попробовать это добавить условие в саму функцию:
Функция ДолгКонОст = КонОст(Долг)когда(Долг > 0)

Gorr 30.01.2012 16:21

а вообще да, думать надо))

Чучундер 30.01.2012 17:55

(18) кто это тебе такое сказал...????

Gorr 30.01.2012 22:45

(20) эмперически выяснил. судя по ошибкам в условии ожидаются переменные коими внутренние функции не являются. попробуйте привести пример синтаксически не вызывающий ошибок при его выполнении

Ёпрст 31.01.2012 08:16

(0) в данном тексте запроса - никак.

Ёпрст 31.01.2012 08:18

ибо если поставишь условие на результат функции то оно кладет болт на вычисление остальных функций, да и вычисляется для каждого"движения" запроса

Wanderer27 31.01.2012 11:18

а вот еще подскажите, пожалуйста
Есть запрос...период тоже есть я просто его не пишу сюда,чтобы полемики не было.
|Контрагент = Регистр.Покупатели.Договор.Владелец,Регистр.Поставщики.Договор.Владелец;
|КонтрольКредит = Регистр.Покупатели.Договор.НеКонтролироватьКредит,Регистр.Поставщики.Договор.НеКонтролироватьКредит;
|Договор = Регистр.Покупатели.Договор,Регистр.Поставщики.Договор;
|КодОперации = Регистр.Покупатели.КодОперации,Регистр.Поставщики.КодОперации;
|Долг = Регистр.Покупатели.СуммаРуб,Регистр.Поставщики.СуммаРуб;
|Док = Регистр.Покупатели.КредДокумент,Регистр.Поставщики.КредДокумент;
|Проект = Регистр.Покупатели.КредДокумент.Проект,Регистр.Поставщики.КредДокумент.Проект;
|Функция ДолгНачОст = НачОст(Долг);
|Функция ДолгПриходОбщ = Приход(Долг) ;
|Функция ДолгРасходОбщ = Расход(Долг) ;
|Функция ДолгКонОст = КонОст(Долг);
|Группировка Контрагент без групп;
|Группировка Док;

Функция ДолгКонОст = КонОст(Долг);по ней выходят все остатки по документам в разрезе контрагентов...
А мне как бы сделать, чтобы был итоге по контрагенту с суммой отрицательных остатков документов для контрагента

т..е для чего мне все это...
я делаю отчет по долгам...с документами...
и если например общий долг по клиенту >0, т.е. он нам должен, то я вывожу документы
и допустим они идут так.
Док 1 345 остатка
Док 2 -45 переплата
Док 3 104 остаток
Общий долг клиента 404
но т.к. Док 2 с переплатой, то я этой переплатой должен закрыть долг Дока 1, т.е 345 -45=300 долга по Док1 так же?
И в итоге должен в отчет вывести документы в такой виде
Док 1 300 остатка
Док 3 104 остаток

т.е. мне нужно вычислить общую отрицательную сумму переплат по клиенту...., а это те доки, у который конечный остаток меньше 0.
как это реализовать? в запросе или еще как...

Ёпрст 31.01.2012 12:28

(24) дык открой ведомость по клиентосам в типовой тис - там усё это есть

Wanderer27 31.01.2012 12:37

да нет там ничего...
там пишутся только наши долг и долг клиента
И наш долг, почему то не перекрывает долг клиента..а так должно быть
Если я должен 3 рубля и мне должны 5, то в итоге мне должны 2 рубля... и там нет долгов конкретно по докам, в случае переплат. А меня интересуетт именно это, а не общий долг. Тут чтоюбы знали кто по какому доку не оплатил...тут такая система..

Buzz 31.01.2012 13:09

И что группировки "Кред. документ" в типовом отчете нет?

Wanderer27 31.01.2012 13:24

27. да открой и посмотри...и скажи мне где ты там видел, что в том отчете выходит ? Праивльно. Отдельно, наши долги и отдельно долги покупателей. мне общие долги не нуджны...еще раз повторяю...там переплаты висят в воздухе...и что я должен говрить покупателЮ вы переплатили мне накладную? И я вам щас денег верну..а вы потом отделбно оплатите мои долги? А зачем покупателю этот гемор? я должен выставит ему реальные долги...и если я ему должен, то этим долгом я перекрою долг покупателя и выставлю реальный его полоджительный долг. Уже не знаю что еще разжевывать..:(

Buzz 31.01.2012 13:40

Да все там понятно. Есть колонка Наш долг, Долг клиента. Поставь фильтр по конкретому контрику и посмотри, что получается. Группировки Контрагент, Кредитный документ, документ движения. Выбирай не общие взаиморасчеты, а по покупателям.

Wanderer27 31.01.2012 14:14

29-Значит мне нужно, коли понимаешь только по отчету "Ведомость по контрагенту", вытащить сумму наших долгов...
Чтобы было так
Контрагент - общая сумма переплат(нашего долга) на дату
Как сделать? НО учти..могут быть по нем у и его долги. Можно ли сделать одним запросом?

victuan 31.01.2012 14:16

30-Wanderer27 >Можно. ТИС так и делает при фильтре "Общие взаиморасчеты" (а не "По поставщикам" или "По покупателям")

Buzz 31.01.2012 14:17

Рисуй запрос отдельно по регистру Покупатели и все получится.

Wanderer27 31.01.2012 14:26

32. а если покупатель одновременно и поставщик..Долг может быть еще и наш как перед потсавщиком...Поэтому увы..одним регистром Покупатели не обойдешься..:(
я вообще то хотел хотя бы уже...
чтобы в итоге запроса была колонка "Контрагент" и вторая колонка "Наши долги", не общий долг, а читсо наши долги. Как сделать?

Wanderer27 31.01.2012 14:33

victuan "Ведомость по контрагенту" при выборе долги 2только наши" выводит только тех клиентов, у кого общий долг равен нашему долгу. Т.е остаток отрицательный. А общий долг, кк известно, состоит из нашего долга и долга клиента. мне нужна сумма только нашего долга, при условии что общий долг клиента >0. Одним запросом...т.е. "Клиент" - "наш долг"

victuan 31.01.2012 15:00

34-Wanderer27 >"[em]при выборе долги 2только наши" выводит только тех клиентов, у кого общий долг равен нашему долгу.[/em]"
Неправда, он выводит долг по обоим регистрам (ВзаимоРасчетыПокупателей и ВзаимоРасчетыПоставщиков), как ты и хотел.

Wanderer27 31.01.2012 15:20

victuan ты вообще не понял меня..

victuan 31.01.2012 15:45

36-Wanderer27 >"[em]чтобы в итоге запроса была колонка "Контрагент" и вторая колонка "Наши долги", не общий долг, а читсо наши долги. Как сделать?[/em]"
Выбираешь "Общие взаиморасчеты" и "Наши долги".
А теперь ответь, где я тебя не понял?

Wanderer27 31.01.2012 16:40

victuan Зачем мне смотреть на отчет? Я спрагиваю не для того, чтобы данные посомтреть, а для того, чтобы получить таблицу
Котрагент-НашиДолги.
Еще раз. А "Ведомость по контрагенту".. там обходится весь запрос и вытаскиваются только отрицательные долги. Так тупо и я бы сделал. Вопрос был: сразу получить одним запросом, а не перебором выбирать. А где посомтреть долги и наши и ваши я и сам знаю..

victuan 31.01.2012 16:52

38-Wanderer27 >"[em]вытаскиваются только отрицательные долги"[/em]
Отриц. долги это есть "наши долги". Полож. долги это "долги клиентов".

Wanderer27 31.01.2012 16:58

пока вопросы задавал уже сам всем сделал одним запросом..


Текущее время: 07:44. Часовой пояс GMT +3.