![]() |
![]() |
|
Как добавить(отнять) к дате количество дней | ☑ | ||
---|---|---|---|---|
0
brato4karik
14.10.10
✎
13:16
|
Нужно в запросе, в вычисляемом поле получить дату, есть дата входящего документа"ДатаВходящая" есть количество дней отсрочки платежа"СрокОплаты" , функция ДобавитьКДате(ДатаВходящая,"День",СрокОплаты) всем хороша, но вот если нужно отнять количество дней, а дни в поле хранятся как положительное значение, хранить как отрицательное нет желание.
нужно получить вывитание в конструкции выбор ВЫБОР КОГДА СРОКОПЛАТЫ1 > СРОКОПЛАТЫ2 ТОГДА ДатаВходящая-СРОКОПЛАТЫ1 ИНАЧЕ ДатаВходящая-СРОКОПЛАТЫ2 КОНЕЦ а на банальное вычитаие само собой ругаеться |
|||
1
73
14.10.10
✎
13:17
|
ДобавитьКДате(ДатаВходящая,"День", - СрокОплаты)
? |
|||
2
brato4karik
14.10.10
✎
13:18
|
неееаааа
|
|||
3
Ненавижу 1С
гуру
14.10.10
✎
13:19
|
ДОБАВИТЬКДАТЕ
РАЗНОСТЬДАТ |
|||
4
brato4karik
14.10.10
✎
13:21
|
тут вопрос я могу использовать эти конструкции в тексте запроса а не в СКД ?
|
|||
5
IronDemon
14.10.10
✎
13:22
|
(4) Да
|
|||
6
73
14.10.10
✎
13:22
|
(2) Что не так?
|
|||
7
brato4karik
14.10.10
✎
13:22
|
а где собственно посмотреть синтаксис к операторам? СП нету
|
|||
8
brato4karik
14.10.10
✎
13:23
|
(6) ругаеться на неправильные параметры, причем в вычисляемых полях в СКД работает, а вот в конструкторе запроса ругается, что я делаю не так?
|
|||
9
Zolotko
14.10.10
✎
13:25
|
(7) погугли
а так, если попробуешь те операторы, которые в (3) все пойдет |
|||
10
IronDemon
14.10.10
✎
13:27
|
(7) F1
|
|||
11
Живой Ископаемый
14.10.10
✎
13:27
|
2(7) потому что синтаксис языка запроса описан в кнопке по Ф1 а не в СП
|
|||
12
73
14.10.10
✎
13:27
|
(4) В тексте запроса без кавычек.
(7) Справка -Содержание справки -1С Предприятие -Встроенный язык -Работа с запросами |
|||
13
brato4karik
14.10.10
✎
13:39
|
да спасибо за разъяснение, справка как всегда спасла, только это было собственоо только начало,
ВЫБОР КОГДА ГрафикОплат.СрокОплаты1 > ГрафикОплат.СрокОплаты2 ТОГДА ДОБАВИТЬКДАТЕ(ПоступлениеТоваровУслуг.ДатаВходящегоДокумента, ДЕНЬ, -ГрафикОплат.СрокОплаты1) ИНАЧЕ ДОБАВИТЬКДАТЕ(ПоступлениеТоваровУслуг.ДатаВходящегоДокумента, ДЕНЬ, -ГрафикОплат.СрокОплаты2) КОНЕЦ КАК МаксимальныйСрок Вот такая конструкция сделает вычисляемое поле с псевдонимом МаксимальныйСрок, а можно ли включитать такие поля в условие ГДЕ МаксимальныйСрок МЕЖДУ &НачалоПериода И &КонецПериода у меня ругаеться что поле не найденно |
|||
14
73
14.10.10
✎
13:40
|
ГДЕ
ВЫБОР КОГДА ГрафикОплат.СрокОплаты1 > ГрафикОплат.СрокОплаты2 ТОГДА ДОБАВИТЬКДАТЕ(ПоступлениеТоваровУслуг.ДатаВходящегоДокумента, ДЕНЬ, -ГрафикОплат.СрокОплаты1) ИНАЧЕ ДОБАВИТЬКДАТЕ(ПоступлениеТоваровУслуг.ДатаВходящегоДокумента, ДЕНЬ, -ГрафикОплат.СрокОплаты2) КОНЕЦ МЕЖДУ &НачалоПериода И &КонецПериода |
|||
15
brato4karik
14.10.10
✎
13:42
|
ввооот даже как!!! и тогда в выборку попадут данные ограниченные параметрами?????????
|
|||
16
brato4karik
14.10.10
✎
13:43
|
ааа туплю туплю сорри
|
|||
17
Ненавижу 1С
гуру
14.10.10
✎
13:45
|
ГДЕ
ДОБАВИТЬКДАТЕ(ПоступлениеТоваровУслуг.ДатаВходящегоДокумента, ДЕНЬ, -(ВЫБОР КОГДА ГрафикОплат.СрокОплаты1 > ГрафикОплат.СрокОплаты2 ТОГДА ГрафикОплат.СрокОплаты1 ИНАЧЕ ГрафикОплат.СрокОплаты2 КОНЕЦ)) МЕЖДУ &НачалоПериода И &КонецПериода |
|||
18
brato4karik
14.10.10
✎
13:55
|
Блин конструктор принимает, а при выполнении валиться с ошибкой, даже если я выбираю значения параметров, такие если из них вычесть сроки небудет меньше нулевого года. а так
Ошибка при исполнении запроса набора данных по причине: Ошибка выполнения запроса "Ошибка при выполнении операции над данными: Microsoft OLE DB Provider for SQL Server: Добавление значения в столбец "datetime" привело к переполнению. HRESULT=80040E07, SQLSrvr: Error state=1, Severity=10, native=517, line=1 " по причине: Ошибка при выполнении операции над данными: Microsoft OLE DB Provider for SQL Server: Добавление значения в столбец "datetime" привело к переполнению. HRESULT=80040E07, SQLSrvr: Error state=1, Severity=10, native=517, line=1 |
|||
19
73
14.10.10
✎
13:57
|
(18) NULL-ы?
|
|||
20
brato4karik
14.10.10
✎
13:58
|
да есть только что поставил на проверку
|
|||
21
brato4karik
14.10.10
✎
13:58
|
так что если они есть то теперь 0 а все равно валится
|
|||
22
73
14.10.10
✎
14:01
|
(18) >даже если я выбираю значения параметров, такие если из них вычесть сроки небудет меньше нулевого года
Вычитается не из параметров, а из ПоступлениеТоваровУслуг.ДатаВходящегоДокумента. Так вот, а если там незаполено? Или много вычитается? |
|||
23
73
14.10.10
✎
14:02
|
(22)* незаполнено
|
|||
24
brato4karik
14.10.10
✎
14:05
|
ну максимум 90 дней вычитается, это можно проверить, может 0 вычитаться(полученный в результате ЕСТЬNULL) может -1, а ПоступлениеТоваровУслуг.ДатаВходящегоДокумента тоже проверяеться на NULL если не заполненно то ПоступлениеТоваровУслуг.Дата
|
|||
25
brato4karik
14.10.10
✎
14:05
|
ВЫБРАТЬ
ПоступлениеТоваровУслуг.Ссылка, ПоступлениеТоваровУслуг.Дата, ВЫБОР КОГДА ПоступлениеТоваровУслуг.ДатаВходящегоДокумента ЕСТЬ NULL ТОГДА ПоступлениеТоваровУслуг.Дата ИНАЧЕ ПоступлениеТоваровУслуг.ДатаВходящегоДокумента КОНЕЦ КАК ДатаВходящегоДокумента, ПоступлениеТоваровУслуг.ДоговорКонтрагента, ПоступлениеТоваровУслуг.СуммаДокумента, ЕСТЬNULL(ГрафикОплат.СрокОплаты1, 0) КАК СрокОплаты1, ГрафикОплат.ЧастьОплаты1, ЕСТЬNULL(ГрафикОплат.СрокОплаты2, 0) КАК СрокОплаты2, ГрафикОплат.ЧастьОплаты2, ПоступлениеТоваровУслуг.Контрагент ИЗ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикОплат КАК ГрафикОплат ПО ПоступлениеТоваровУслуг.Контрагент = ГрафикОплат.Поставщик ГДЕ ГрафикОплат.Договор = &ПустаяСсылка И ДОБАВИТЬКДАТЕ(ПоступлениеТоваровУслуг.ДатаВходящегоДокумента, ДЕНЬ, -ВЫБОР КОГДА ГрафикОплат.СрокОплаты1 > ГрафикОплат.СрокОплаты2 ТОГДА ГрафикОплат.СрокОплаты1 ИНАЧЕ ГрафикОплат.СрокОплаты2 КОНЕЦ) МЕЖДУ &НачалоПериода И &КонецПериода ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПоступлениеТоваровУслуг.Ссылка, ПоступлениеТоваровУслуг.Дата, ВЫБОР КОГДА ПоступлениеТоваровУслуг.ДатаВходящегоДокумента ЕСТЬ NULL ТОГДА ПоступлениеТоваровУслуг.Дата ИНАЧЕ ПоступлениеТоваровУслуг.ДатаВходящегоДокумента КОНЕЦ, ПоступлениеТоваровУслуг.ДоговорКонтрагента, ПоступлениеТоваровУслуг.СуммаДокумента, ЕСТЬNULL(ГрафикОплат.СрокОплаты1, 0), ГрафикОплат.ЧастьОплаты1, ЕСТЬNULL(ГрафикОплат.СрокОплаты2, 0), ГрафикОплат.ЧастьОплаты2, ПоступлениеТоваровУслуг.Контрагент ИЗ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикОплат КАК ГрафикОплат ПО ПоступлениеТоваровУслуг.Контрагент = ГрафикОплат.Поставщик И ПоступлениеТоваровУслуг.ДоговорКонтрагента = ГрафикОплат.Договор ГДЕ ГрафикОплат.Договор = &ПустаяСсылка И ДОБАВИТЬКДАТЕ(ПоступлениеТоваровУслуг.ДатаВходящегоДокумента, ДЕНЬ, -ВЫБОР КОГДА ГрафикОплат.СрокОплаты1 > ГрафикОплат.СрокОплаты2 ТОГДА ГрафикОплат.СрокОплаты1 ИНАЧЕ ГрафикОплат.СрокОплаты2 КОНЕЦ) МЕЖДУ &НачалоПериода И &КонецПериода |
|||
26
73
14.10.10
✎
14:20
|
(25) Ну и посмотри на свои ГДЕ. Из чего вычитаешь? И что вычитаешь?
И потом там(ПоступлениеТоваровУслуг.ДатаВходящегоДокумента) не NULL, а пустая дата может быть. И вычитаешь возможно NULL-ы(ЕстьNull-ы и в ГДЕ надо прописать). |
|||
27
brato4karik
14.10.10
✎
14:22
|
да согласен, пропустил невнимательно, а вот я могу псевдонимы испольтзовать что бы не писать ЕСТЬNULL везде?
|
|||
28
73
14.10.10
✎
14:28
|
(27) В ГДЕ псевдонимы не используются.
|
|||
29
brato4karik
14.10.10
✎
14:32
|
Собака все равно валиться !!!!!!
ВЫБРАТЬ ПоступлениеТоваровУслуг.Ссылка, ПоступлениеТоваровУслуг.Дата, ВЫБОР КОГДА ПоступлениеТоваровУслуг.ДатаВходящегоДокумента ЕСТЬ NULL ТОГДА ПоступлениеТоваровУслуг.Дата ИНАЧЕ ПоступлениеТоваровУслуг.ДатаВходящегоДокумента КОНЕЦ КАК ДатаВходящегоДокумента, ПоступлениеТоваровУслуг.ДоговорКонтрагента, ПоступлениеТоваровУслуг.СуммаДокумента, ЕСТЬNULL(ГрафикОплат.СрокОплаты1, 0) КАК СрокОплаты1, ГрафикОплат.ЧастьОплаты1, ЕСТЬNULL(ГрафикОплат.СрокОплаты2, 0) КАК СрокОплаты2, ГрафикОплат.ЧастьОплаты2, ПоступлениеТоваровУслуг.Контрагент ИЗ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикОплат КАК ГрафикОплат ПО ПоступлениеТоваровУслуг.Контрагент = ГрафикОплат.Поставщик ГДЕ ГрафикОплат.Договор = &ПустаяСсылка И ДОБАВИТЬКДАТЕ(ВЫБОР КОГДА ПоступлениеТоваровУслуг.ДатаВходящегоДокумента ЕСТЬ NULL ТОГДА ПоступлениеТоваровУслуг.Дата ИНАЧЕ ПоступлениеТоваровУслуг.ДатаВходящегоДокумента КОНЕЦ, ДЕНЬ, -ВЫБОР КОГДА ЕСТЬNULL(ГрафикОплат.СрокОплаты1, 0) > ЕСТЬNULL(ГрафикОплат.СрокОплаты2, 0) ТОГДА ЕСТЬNULL(ГрафикОплат.СрокОплаты1, 0) ИНАЧЕ ЕСТЬNULL(ГрафикОплат.СрокОплаты2, 0) КОНЕЦ) МЕЖДУ &НачалоПериода И &КонецПериода ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПоступлениеТоваровУслуг.Ссылка, ПоступлениеТоваровУслуг.Дата, ВЫБОР КОГДА ПоступлениеТоваровУслуг.ДатаВходящегоДокумента ЕСТЬ NULL ТОГДА ПоступлениеТоваровУслуг.Дата ИНАЧЕ ПоступлениеТоваровУслуг.ДатаВходящегоДокумента КОНЕЦ, ПоступлениеТоваровУслуг.ДоговорКонтрагента, ПоступлениеТоваровУслуг.СуммаДокумента, ЕСТЬNULL(ГрафикОплат.СрокОплаты1, 0), ГрафикОплат.ЧастьОплаты1, ЕСТЬNULL(ГрафикОплат.СрокОплаты2, 0), ГрафикОплат.ЧастьОплаты2, ПоступлениеТоваровУслуг.Контрагент ИЗ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикОплат КАК ГрафикОплат ПО ПоступлениеТоваровУслуг.Контрагент = ГрафикОплат.Поставщик И ПоступлениеТоваровУслуг.ДоговорКонтрагента = ГрафикОплат.Договор ГДЕ ГрафикОплат.Договор = &ПустаяСсылка И ДОБАВИТЬКДАТЕ(ВЫБОР КОГДА ПоступлениеТоваровУслуг.ДатаВходящегоДокумента ЕСТЬ NULL ТОГДА ПоступлениеТоваровУслуг.Дата ИНАЧЕ ПоступлениеТоваровУслуг.ДатаВходящегоДокумента КОНЕЦ, ДЕНЬ, -ВЫБОР КОГДА ЕСТЬNULL(ГрафикОплат.СрокОплаты1, 0) > ЕСТЬNULL(ГрафикОплат.СрокОплаты2, 0) ТОГДА ЕСТЬNULL(ГрафикОплат.СрокОплаты1, 0) ИНАЧЕ ЕСТЬNULL(ГрафикОплат.СрокОплаты2, 0) КОНЕЦ) МЕЖДУ &НачалоПериода И &КонецПериода |
|||
30
73
14.10.10
✎
14:37
|
Ну в не NULL тут:
КОГДА ПоступлениеТоваровУслуг.ДатаВходящегоДокумента ЕСТЬ NULL Попробуй: КОГДА ПоступлениеТоваровУслуг.ДатаВходящегоДокумента = ДатаВремя(1,1,1) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |