Имя: Пароль:
1C
 
РазностьДат
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 во как! Всем спасибо!