![]() |
|
РазностьДат | ☑ | ||
---|---|---|---|---|
0
A_Dmitriev
18.01.08
✎
06:58
|
Доброго времени суток!
Есть в конструкторе запросов (8.1) функция РазностьДат. Кто-нибудб пользовался? Какой синтаксис и возвращаемый результат? |
|||
1
уродина
18.01.08
✎
07:26
|
разностьдат(Дата1, Дата2, ТипВозвращаемогоРезультата), где
ТипВозвращаемогоРезультата может принимать значение "День", "Месяц" и т.д. |
|||
2
A_Dmitriev
18.01.08
✎
07:55
|
спасибо
|
|||
3
A_Dmitriev
18.01.08
✎
08:51
|
А возвращает что?
Например: РазностьДат(18.01.08,10.01.08,День) = 10? |
|||
4
A_Dmitriev
18.01.08
✎
08:53
|
Вернее - РазностьДат(18.01.08,10.01.08,День) = 2?
|
|||
5
уродина
18.01.08
✎
08:53
|
(3) возвращает количество в ТипВозвращаемогоРезультат...
|
|||
6
A_Dmitriev
18.01.08
✎
08:55
|
Приведу кусок запроса:
ВЫБОР КОГДА РАЗНОСТЬДАТ(&КонДата, ВзаиморасчетыСКонтрагентамиОбороты.Период, ДЕНЬ) >= 7 И РАЗНОСТЬДАТ(&КонДата, ВзаиморасчетыСКонтрагентамиОбороты.Период, ДЕНЬ) < 14 ТОГДА ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток ИНАЧЕ 0 КОНЕЦ КАК ДолгКлиента3 как нужно поставить условие, а то мне все цифра выдаются в одну колонку, а по идее должны в шесть |
|||
7
уродина
18.01.08
✎
08:59
|
а давайте весь текст запроса.... я вам удаленно все напишу... а еще лучше - задание на отчет...
|
|||
8
A_Dmitriev
18.01.08
✎
09:00
|
не этично получится
|
|||
9
уродина
18.01.08
✎
09:01
|
нормально....
|
|||
10
A_Dmitriev
18.01.08
✎
09:04
|
Дело вот в чем: надо получить долги контрагенов на дату и распихать их в табличку по дням. Долги я получаю, но они все попадают в одну колонку (по признаку < 3 дня), а там есть долги с большей задержкой. я думаю, дело в постановке условия, а как поставить правильно - в ступоре
|
|||
11
уродина
18.01.08
✎
09:06
|
в вашем условии все попадает в остаток когда разность дат больше 7 и меньше 14.
вам надо ввести несколько переменных. если разность дат меньше 3 дней, тогда одна переменная, в другом случае - другая |
|||
12
A_Dmitriev
18.01.08
✎
09:08
|
Да я так и сделал.
ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОбороты.Организация, ВзаиморасчетыСКонтрагентамиОбороты.Контрагент КАК Контрагент, ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОбороты.Период < &КонДата ТОГДА ВзаиморасчетыСКонтрагентамиОбороты.Период КОНЕЦ КАК Период, ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовКонечныйОстаток, ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток КАК ДолгКлиента, ВЫБОР КОГДА РАЗНОСТЬДАТ(&КонДата, ВзаиморасчетыСКонтрагентамиОбороты.Период, ДЕНЬ) < 3 ТОГДА ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток ИНАЧЕ 0 КОНЕЦ КАК ДолгКлиента1, ВЫБОР КОГДА РАЗНОСТЬДАТ(&КонДата, ВзаиморасчетыСКонтрагентамиОбороты.Период, ДЕНЬ) >= 3 И РАЗНОСТЬДАТ(&КонДата, ВзаиморасчетыСКонтрагентамиОбороты.Период, ДЕНЬ) < 7 ТОГДА ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток ИНАЧЕ 0 КОНЕЦ КАК ДолгКлиента2, ВЫБОР КОГДА РАЗНОСТЬДАТ(&КонДата, ВзаиморасчетыСКонтрагентамиОбороты.Период, ДЕНЬ) >= 7 И РАЗНОСТЬДАТ(&КонДата, ВзаиморасчетыСКонтрагентамиОбороты.Период, ДЕНЬ) < 14 ТОГДА ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток ИНАЧЕ 0 КОНЕЦ КАК ДолгКлиента3, ВЫБОР КОГДА РАЗНОСТЬДАТ(&КонДата, ВзаиморасчетыСКонтрагентамиОбороты.Период, ДЕНЬ) >= 14 И РАЗНОСТЬДАТ(&КонДата, ВзаиморасчетыСКонтрагентамиОбороты.Период, ДЕНЬ) < 21 ТОГДА ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток ИНАЧЕ 0 КОНЕЦ КАК ДолгКлиента4, ВЫБОР КОГДА РАЗНОСТЬДАТ(&КонДата, ВзаиморасчетыСКонтрагентамиОбороты.Период, ДЕНЬ) >= 21 И РАЗНОСТЬДАТ(&КонДата, ВзаиморасчетыСКонтрагентамиОбороты.Период, ДЕНЬ) < 30 ТОГДА ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток ИНАЧЕ 0 КОНЕЦ КАК ДолгКлиента5, ВЫБОР КОГДА РАЗНОСТЬДАТ(&КонДата, ВзаиморасчетыСКонтрагентамиОбороты.Период, ДЕНЬ) >= 31 ТОГДА ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток ИНАЧЕ 0 КОНЕЦ КАК ДолгКлиента6 ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&КонДата, ) КАК ВзаиморасчетыСКонтрагентамиОстатки ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&НачДата, &КонДата, Регистратор, , ) КАК ВзаиморасчетыСКонтрагентамиОбороты ПО ВзаиморасчетыСКонтрагентамиОстатки.Организация = ВзаиморасчетыСКонтрагентамиОбороты.Организация И ВзаиморасчетыСКонтрагентамиОстатки.Контрагент = ВзаиморасчетыСКонтрагентамиОбороты.Контрагент И ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток = ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовКонечныйОстаток ГДЕ ВзаиморасчетыСКонтрагентамиОбороты.Период < &КонДата УПОРЯДОЧИТЬ ПО Контрагент а в итоге все в первую колонку Долг1 |
|||
13
уродина
18.01.08
✎
09:10
|
а что у вас в поле Период? выведите его тоже в запросе
|
|||
14
A_Dmitriev
18.01.08
✎
09:11
|
один фиг
|
|||
15
уродина
18.01.08
✎
09:12
|
что именно в поле Период? один фиг - чему равен? какая дата?
|
|||
16
A_Dmitriev
18.01.08
✎
09:15
|
В поле Период попадает дата образования долга, затем мне надо ее сравнить с датой отчета, и поставить долг клиента в соответствующую ячейку.
Период выбирается запросом правильно, такое ощущение, что условие для заполнения переменных Долг1-Долг6 как-то не правильно написано |
|||
17
уродина
18.01.08
✎
09:17
|
непонятен ваш запрос...
зачем вот это? ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОбороты.Период < &КонДата ТОГДА ВзаиморасчетыСКонтрагентамиОбороты.Период КОНЕЦ КАК Период, |
|||
18
A_Dmitriev
18.01.08
✎
09:19
|
Дублируются записи. По каждому контрагенту выводится инфа 2 раза
|
|||
19
уродина
18.01.08
✎
09:21
|
а зачем вы выводите
ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовКонечныйОстаток, ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток КАК ДолгКлиента, |
|||
20
Dionisious
18.01.08
✎
09:21
|
(16) в поле период у таблицы оборотов регистра накопления - это дата регистратора. Дата образования долга - это скорее всего дата сделки. Ее наверное надо проверять а не период.
|
|||
21
A_Dmitriev
18.01.08
✎
09:24
|
Регистратор и сделка - это не одно и то же?
|
|||
22
уродина
18.01.08
✎
09:25
|
(21) еще раз - период у вас выдается правильный по датам? даты - те которые вам нужны или нет?
|
|||
23
Dionisious
18.01.08
✎
09:26
|
(21) далеко не одно и тоже.
|
|||
24
A_Dmitriev
18.01.08
✎
09:28
|
Даты те, которые нужны. Вопрос: правильно ли я написал условие для заполнения прерменных ДолгКлиента1-ДолгКлиента6. Мне кажется, что не правильно, раз результат пишется в одну колонку. Поэтому и спрашиваю: выражение, например,
РАЗНОСТЬДАТ(18.01.08,01.01.08,День) = 10? или нет? Или как вообще записать условие |
|||
25
уродина
18.01.08
✎
09:29
|
РАЗНОСТЬДАТ(18.01.08,01.01.08,День) = 17 .... откуда вы берете 10?
|
|||
26
A_Dmitriev
18.01.08
✎
09:31
|
в торопях пишу
|
|||
27
уродина
18.01.08
✎
09:34
|
ну выведите в запросе еще и разность дат... посмотрите что у вас получается. делайте в консоле - так будет быстрее
|
|||
28
A_Dmitriev
18.01.08
✎
09:52
|
РАЗНОСТЬДАТ(18.01.08,01.01.08,День) = -17
РАЗНОСТЬДАТ(01.01.08,18.01.08,День) = 17 во как! Всем спасибо! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |