Имя: Пароль:
1C
1С v8
как соединить в запросе выборку дат и выборку доков по полученым датам
0 lim9
 
04.12.13
16:51
делаю так:
ВЫБРАТЬ
    Договоры.Договор,
    Договоры.ДатаНачалаОтср,
    ПолучениеСуммы.СуммаПросрочкиИт КАК СуммаПросрочкиИт1,
    Договоры.Договор.Владелец
ИЗ
    (ВЫБРАТЬ
        ДоговорыКонтрагентов.Ссылка КАК Договор,
        ДоговорыКонтрагентов.ОтсрочкаДней КАК ОтсрочкаДней,
        &тд КАК тд,
        ДОБАВИТЬКДАТЕ(&тд, ДЕНЬ, -ДоговорыКонтрагентов.ОтсрочкаДней) КАК ДатаНачалаОтср
    ИЗ
        Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
    ГДЕ
        ДоговорыКонтрагентов.Отсрочка = ИСТИНА) КАК Договоры
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            Дима.Период КАК дата1,
            Дима.ДоговорКонтрагента КАК ДоговорКонтрагента,
            СУММА(Дима.Сумма) КАК СуммаПросрочкиИт
        ИЗ
            РегистрНакопления.Дима КАК Дима
        ГДЕ
            Дима.фОпл = ЛОЖЬ
        
        СГРУППИРОВАТЬ ПО
            Дима.Период,
            Дима.ДоговорКонтрагента) КАК ПолучениеСуммы
        ПО Договоры.Договор = ПолучениеСуммы.ДоговорКонтрагента
            И Договоры.тд >= ПолучениеСуммы.дата1
            И Договоры.ДатаНачалаОтср <= ПолучениеСуммы.дата1
1 lim9
 
04.12.13
16:52
тд = ТекущаяДата()
2 lim9
 
04.12.13
16:53
но данные не вытягивает. а доки за этот период есть в этом регистре.
3 Halyavnik
 
04.12.13
16:56
А если убрать
И Договоры.ДатаНачалаОтср <= ПолучениеСуммы.дата1
что получится?
4 lim9
 
04.12.13
16:58
т.е. идея такая, берем договор, вычисляем две даты, одна=текущей, вторая=текущая - кол.дней указанных в договоре, и нужно получить список доков попавших между этими датами.
5 lim9
 
04.12.13
17:02
(3) результат есть, но он вытянул все документы, без ограничения датой2 (в запросе Договоры.ДатаНачалаОтср)
6 Halyavnik
 
04.12.13
17:03
вывести и посмотреть, чему равны
Договоры.ДатаНачалаОтср, ПолучениеСуммы.дата1 - в теории по выведенным значениям будет всё ясно.

может, действительно, нет таких документов.
7 Fram
 
04.12.13
17:09
вот из этого

ДОБАВИТЬКДАТЕ(&тд, ДЕНЬ, -ДоговорыКонтрагентов.ОтсрочкаДней) КАК ДатаНачалаОтср

следует что ДатаНачалаОтср всегда < тд, если конецно отсрочка не отрицательная.

так что выборка всегда будет пустой
8 m-serg74
 
04.12.13
17:10
(7) с чего бы
9 Fram
 
04.12.13
17:11
(8)
            И Договоры.тд >= ПолучениеСуммы.дата1
            И Договоры.ДатаНачалаОтср <= ПолучениеСуммы.дата1
10 m-serg74
 
04.12.13
17:11
сегодня - 3дня
здесь документы
сегодня
11 m-serg74
 
04.12.13
17:13
// текущая дата больше даты документов
Договоры.тд >= ПолучениеСуммы.дата1

// текущая дата минус дни отсрочки меньше даты документов
Договоры.ДатаНачалаОтср <= ПолучениеСуммы.дата1
12 lim9
 
04.12.13
17:13
Договоры.ДатаНачалаОтср=23.11.2013
Договоры.тд            =04.12.2013

мое услови и говорит:

04.12.2013 >= ПолучениеСуммы.дата1
23.11.2013 <= ПолучениеСуммы.дата1

что не так?
13 Fram
 
04.12.13
17:14
(11) (12) сорри.. под вечер в голове помутнение
14 m-serg74
 
04.12.13
17:14
(12) забей, не в этом дело, а нужные документы проведены?
15 lim9
 
04.12.13
17:15
(14) да конечно, в журнале регистра все есть!
16 m-serg74
 
04.12.13
17:15
(13) тоже забей)))
17 lim9
 
04.12.13
17:16
Друзья, может запрос не правильно написан!
как вообще правильно соединить?
18 Halyavnik
 
04.12.13
17:16
а условие Дима.фОпл = ЛОЖЬ - выполняется?
19 AlexITGround
 
04.12.13
17:18
(0) разбей запрос на части, засунь ограничение - оцени ситуацию, в конце найдешь свой косяк
20 m-serg74
 
04.12.13
17:19
(17) а запрос то не весь привел
21 m-serg74
 
04.12.13
17:20
(20) сорри теперь я затупил)))
22 lim9
 
04.12.13
17:20
(18) да
переделал прямо на документы, минуя регистр:
ВЫБРАТЬ
    Договоры.Договор,
    Договоры.ДатаНачалаОтср,
    Договоры.Договор.Владелец,
    Договоры.тд,
    ПолучениеСуммы.Сумма
ИЗ
    (ВЫБРАТЬ
        ДоговорыКонтрагентов.Ссылка КАК Договор,
        ДоговорыКонтрагентов.ОтсрочкаДней КАК ОтсрочкаДней,
        &тд КАК тд,
        ДОБАВИТЬКДАТЕ(&тд, ДЕНЬ, -ДоговорыКонтрагентов.ОтсрочкаДней) КАК ДатаНачалаОтср
    ИЗ
        Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
    ГДЕ
        ДоговорыКонтрагентов.Отсрочка = ИСТИНА) КАК Договоры
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            РеализацияТоваровУслуг.ДоговорКонтрагента КАК ДоговорКонтрагента,
            РеализацияТоваровУслуг.Дата КАК Дата1,
            СУММА(РеализацияТоваровУслуг.СуммаДокумента) КАК Сумма
        ИЗ
            Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        
        СГРУППИРОВАТЬ ПО
            РеализацияТоваровУслуг.ДоговорКонтрагента,
            РеализацияТоваровУслуг.Дата) КАК ПолучениеСуммы
        ПО Договоры.Договор = ПолучениеСуммы.ДоговорКонтрагента
            И Договоры.тд >= ПолучениеСуммы.Дата1
            И Договоры.ДатаНачалаОтср <= ПолучениеСуммы.Дата1
23 lim9
 
04.12.13
17:21
не излечило
24 lim9
 
04.12.13
17:23
поле сумма=0
25 Halyavnik
 
04.12.13
17:24
А нельзя ли СРАЗУ отобрать из таблицы Дима все документы, которые:

Дима.фОпл = ЛОЖЬ
И Дима.ДоговорКонтрагента.Отсрочка
И Дима.Период МЕЖДУ &тд И ДобавитьКДате( &тд, ДЕНЬ, -Дима.ДоговорКонтрагента.ОтсрочкаДней)

ЗЫ: На Дима.фОпл желательнен индекс, как и на ДоговорКонтрагента.Отсрочка.
26 m-serg74
 
04.12.13
17:25
(25) только между начало и конец местами наверное поменять
27 lim9
 
04.12.13
17:25
(25) вот эта мысль, счас...
28 lim9
 
04.12.13
17:36
Урв! Спасибо ВАМ огромное!
29 AlexITGround
 
04.12.13
17:38
(28) так...между делом, ты на клюшках кодировал?
30 Halyavnik
 
04.12.13
17:39
и не надо использовать конструкции типа:

ВЫБРАТЬ
    &тд КАК ТД
ИЗ
    бла-бла-бла КАК ЙЙЙ
ГДЕ
    ЙЙЙ.тд >= ЙЙЙ.Дата

Можно
ГДЕ
    &тд >= ЙЙЙ.Дата
31 lim9
 
04.12.13
17:41
точно
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.