Имя: Пароль:
1C
1С v8
Как отнять дату от даты в запросе
,
0 Oleg102
 
28.01.14
07:32
Всем привет. Люди подскажите как отнять две даты друг от друга в запросе. Как только не пробовал. ПЛЮСУЕТ даты, а как отнять никак не сооброжу.  

Сейчас пока так:

ВЫБОР
    КОГДА РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ВложенныйЗапрос.ДатаПроизводства, МЕСЯЦ, ВложенныйЗапрос.СрокГодности), &ТекущаяДата, ДЕНЬ) <> 0
        ТОГДА РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ВложенныйЗапрос.ДатаПроизводства, МЕСЯЦ, ВложенныйЗапрос.СрокГодности), &ТекущаяДата, ДЕНЬ)
    ИНАЧЕ 0
КОНЕЦ

Еще в колонках где мне нужно вытащить дату вставляются какие то не понятные цифры помогите их убрать.

http://pixs.ru/showimage/1jpg_2535020_10641260.jpg


ВЕСЬ ЗАПРОС:
ТекстЗапроса = "ВЫБРАТЬ
                   |    Подбор.Код КАК Код,
                   |    Подбор.Артикул КАК Артикул,
                   |    Подбор.ЭтоГруппа КАК ЭтоГруппа,
                   |    Подбор.ПометкаУдаления КАК ПометкаУдаления,
                   |    Подбор.Услуга КАК Услуга,
                   |    Подбор.Номенклатура КАК Номенклатура,
                   |    Подбор.Родитель КАК Родитель,
                   |    Подбор.КоличествоОстатокОрганизации КАК КоличествоОстатокОрганизации,
                   |    Подбор.Цена КАК Цена,
                   |    Подбор.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
                   |    Подбор.Номенклатура.Представление КАК ПредставлениеНоменклатура,
                   |    Подбор.ЕдиницаИзмерения.НаименованиеПолное КАК ПредставлениеЕдиницаИзмерения,
                   |    ЛОЖЬ КАК ПереходитьВверх,
                   |    МАКСИМУМ(ПоступлениеТоваровУслуг.Дата) КАК ДатаПоступления,
                   |    ДОБАВИТЬКДАТЕ(ВложенныйЗапрос.ДатаПроизводства, МЕСЯЦ, ВложенныйЗапрос.СрокГодности) КАК ДатаПроизводства,
                   |    ВЫБОР
                   |        КОГДА РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ВложенныйЗапрос.ДатаПроизводства, МЕСЯЦ, ВложенныйЗапрос.СрокГодности), &ТекущаяДата, ДЕНЬ) <> 0
                   |            ТОГДА РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ВложенныйЗапрос.ДатаПроизводства, МЕСЯЦ, ВложенныйЗапрос.СрокГодности), &ТекущаяДата, ДЕНЬ)
                   |        ИНАЧЕ 0
                   |    КОНЕЦ КАК СрокГодности
                   |ИЗ
                   |    (ВЫБРАТЬ
                   |        СправочникНоменклатура.Код КАК Код,
                   |        СправочникНоменклатура.Артикул КАК Артикул,
                   |        СправочникНоменклатура.ЭтоГруппа КАК ЭтоГруппа,
                   |        СправочникНоменклатура.ПометкаУдаления КАК ПометкаУдаления,
                   |        СправочникНоменклатура.Услуга КАК Услуга,
                   |        СправочникНоменклатура.Ссылка КАК Номенклатура,
                   |        СправочникНоменклатура.Родитель КАК Родитель,
                   |        СУММА(Остатки.КоличествоОстатокОрганизации) КАК КоличествоОстатокОрганизации,
                   |        МАКСИМУМ(ЦеныСрезПоследних.Цена) КАК Цена,
                   |        СправочникНоменклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения
                   |    ИЗ
                   |        Справочник.Номенклатура КАК СправочникНоменклатура
                   |            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаРегистраСведений, " + мТекстЗапросаОтборНоменклатурыПоРодителю + " ТипЦен = &ТипЦен) КАК ЦеныСрезПоследних
                   |            ПО (ЦеныСрезПоследних.Номенклатура = СправочникНоменклатура.Ссылка)
                   |            ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                   |                ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
                   |                СУММА(ВЫБОР
                   |                        КОГДА ХозрасчетныйОстатки.КоличествоОстатокДт ЕСТЬ NULL
                   |                            ТОГДА 0
                   |                        ИНАЧЕ ХозрасчетныйОстатки.КоличествоОстатокДт
                   |                    КОНЕЦ - ВЫБОР
                   |                        КОГДА ХозрасчетныйОстатки.КоличествоОстатокКт ЕСТЬ NULL
                   |                            ТОГДА 0
                   |                        ИНАЧЕ ХозрасчетныйОстатки.КоличествоОстатокКт
                   |                    КОНЕЦ) КАК КоличествоОстатокОрганизации
                   |            ИЗ
                   |                РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата," + ФильтрПоСчету + ", &ВидыСубконто, " + Условие + ФильтрПоСубконто + ") КАК ХозрасчетныйОстатки
                   |            
                   |            СГРУППИРОВАТЬ ПО
                   |                ХозрасчетныйОстатки.Субконто1) КАК Остатки
                   |            ПО (Остатки.Номенклатура = СправочникНоменклатура.Ссылка)
                   |
                   |ГДЕ
                   |" + ?(ИерархияЗапроса,    "СправочникНоменклатура.Родитель = &Родитель", "СправочникНоменклатура.ЭтоГруппа = Ложь") + "
                   |" + ?(ФильтрЗапроса, " И ((Остатки.КоличествоОстатокОрганизации > 0 И ЦеныСрезПоследних.Цена <> 0)" + ?(ИерархияЗапроса,    " ИЛИ СправочникНоменклатура.ЭтоГруппа = Истина)", ")"), "") + "
                   |
                   |    
                   |    СГРУППИРОВАТЬ ПО
                   |        СправочникНоменклатура.Родитель,
                   |        СправочникНоменклатура.Ссылка,
                   |        СправочникНоменклатура.Код,
                   |        СправочникНоменклатура.Артикул,
                   |        СправочникНоменклатура.ЭтоГруппа,
                   |        СправочникНоменклатура.ПометкаУдаления,
                   |        СправочникНоменклатура.Услуга,
                   |        СправочникНоменклатура.БазоваяЕдиницаИзмерения) КАК Подбор
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
                   |        ПО Подбор.Номенклатура = ПоступлениеТоваровУслуг.Товары.Номенклатура
                   |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                   |            ПоступлениеТоваровУслугТовары.ДатаПроизводства КАК ДатаПроизводства,
                   |            ПоступлениеТоваровУслугТовары.СрокГодности КАК СрокГодности,
                   |            ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
                   |            ПоступлениеТоваровУслугТовары.Ссылка КАК Ссылка
                   |        ИЗ
                   |            Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары) КАК ВложенныйЗапрос
                   |        ПО Подбор.Номенклатура = ВложенныйЗапрос.Номенклатура
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    Подбор.Код,
                   |    Подбор.Артикул,
                   |    Подбор.ЭтоГруппа,
                   |    Подбор.ПометкаУдаления,
                   |    Подбор.Услуга,
                   |    Подбор.Номенклатура,
                   |    Подбор.Родитель,
                   |    Подбор.КоличествоОстатокОрганизации,
                   |    Подбор.Цена,
                   |    Подбор.ЕдиницаИзмерения,
                   |    Подбор.Номенклатура.Представление,
                   |    Подбор.ЕдиницаИзмерения.НаименованиеПолное,
                   |    ДОБАВИТЬКДАТЕ(ВложенныйЗапрос.ДатаПроизводства, МЕСЯЦ, ВложенныйЗапрос.СрокГодности),
                   |    ВЫБОР
                   |        КОГДА РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ВложенныйЗапрос.ДатаПроизводства, МЕСЯЦ, ВложенныйЗапрос.СрокГодности), &ТекущаяДата, ДЕНЬ) <> 0
                   |            ТОГДА РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ВложенныйЗапрос.ДатаПроизводства, МЕСЯЦ, ВложенныйЗапрос.СрокГодности), &ТекущаяДата, ДЕНЬ)
                   |        ИНАЧЕ 0
                   |    КОНЕЦ
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    Подбор.ЭтоГруппа УБЫВ,
                   |    Подбор.Номенклатура.Наименование";

    Возврат ТекстЗапроса;
1 Oleg102
 
28.01.14
07:44
Когда просто вытаскиваю Срок годности без подсчета 2 месяца. то выводит цифру 2 и эти цифры непонятные пропадают. Все нормально. Начинаю сложение они появляются.
2 kosts
 
28.01.14
07:50

ВЫБОР
    КОГДА РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ВложенныйЗапрос.ДатаПроизводства, МЕСЯЦ, ВложенныйЗапрос.СрокГодности), &ТекущаяДата, ДЕНЬ) <> 0
        ТОГДА РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ВложенныйЗапрос.ДатаПроизводства, МЕСЯЦ, ВложенныйЗапрос.СрокГодности), &ТекущаяДата, ДЕНЬ)
    ИНАЧЕ ДатаВремя(1,1,1)
КОНЕЦ
3 kosts
 
28.01.14
07:52
(2) Не читать. Ноль было правильно. Подумал, что у тебя проблема, что даты в числа преобразуются...
4 Oleg102
 
28.01.14
07:55
(2) Тоже самое никаких изменений
5 kosts
 
28.01.14
07:57
(0) Что бы не было минуса, от большего отнимают меньшее. В первом классе так делают...
Большие цифры, возможно, где-то что-то не заполнено, например, ВложенныйЗапрос.ДатаПроизводства.
Алгоритм сработал, так как ты его написал.
Добавь больше условий.
6 George Wheels
 
28.01.14
08:01
ВЫБОР КОГДА ВложенныйЗапрос.ДатаПроизводства <> Дата(1,1,1)
  ТОГДА ...
ИНАЧЕ
  0
КОНЕЦ
7 Oleg102
 
28.01.14
08:02
(5) я понимаю что от чего надо отнять. Вопрос возник как это сделать в запросе правильно. Буду пробовать больше условий. Хотя пытался уже.
8 George Wheels
 
28.01.14
08:04
Эти непонятные цифры - количество дней.
9 Oleg102
 
28.01.14
08:06
(8) Я понимаю что это количество дней считает. Просто какого фига они считаются и туда вообще вставляются ))
10 George Wheels
 
28.01.14
08:21
(9) Вот с этого фига
КОГДА РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ВложенныйЗапрос.ДатаПроизводства, МЕСЯЦ, ВложенныйЗапрос.СрокГодности), &ТекущаяДата, ДЕНЬ) <> 0
11 Любопытная
 
28.01.14
08:30
ДОБАВИТЬКДАТЕ(ВложенныйЗапрос.ДатаПроизводства, МЕСЯЦ, ВложенныйЗапрос.СрокГодности) вот эта штука не равна 0, если ВложенныйЗапрос.ДатаПроизводства - пустая дата, а СрокГодности - не пустая. Ибо пустая дата для скуля (а у вас вероятно скуль) это '1753-01-01 00:00:00.000'
Вот и получаете количество дней от начала использования гогорианского календаря
12 ИС-2
 
naïve
28.01.14
08:56
Какой тип у ДатаПроизводства и СрокГодности?
По поводу не понятных чисел мне кажется, что идет где-то задвоение либо некорректные данные
13 Ненавижу 1С
 
гуру
28.01.14
09:10
каких только епланов на работу не берут, слов нет
14 Oleg102
 
28.01.14
09:32
(13) За словами следи козлина
15 Oleg102
 
28.01.14
09:32
(13) Умный сука
16 AdrianBerk
 
28.01.14
09:40
Цензура! =)) уважайте себя  и  других пожалуйста
17 Oleg102
 
28.01.14
09:44
(16) Да я уважаю Вас всех и благодарю за помощь. Просто нельзя все знать, я учусь я не говорю что я гуру в 1С. Мне сейчас объяснили я буду знать и понимать в следующий раз как, что и почему. Мне объяснять некому в 1С, стараюсь изучить сам. Да и если бы было у кого так спросить не создавал бы эту ветку форума. А этот что ты умничает. Наверное такой умный и помочь объяснить для него сложно. Извиняюсь за цензуру и оскорбления.
18 fmrlex
 
28.01.14
09:51
(13) Песок в вагине чтоле?
19 hhhh
 
28.01.14
10:33
ВЫБОР
    КОГДА РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ВложенныйЗапрос.ДатаПроизводства, МЕСЯЦ, ВложенныйЗапрос.СрокГодности), &ТекущаяДата, ДЕНЬ) <> 0
        ТОГДА РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ВложенныйЗапрос.ДатаПроизводства, МЕСЯЦ, ВложенныйЗапрос.СрокГодности), &ТекущаяДата, ДЕНЬ)
    ИНАЧЕ 0
КОНЕЦ

разве не одно и то же

РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ВложенныйЗапрос.ДатаПроизводства, МЕСЯЦ, ВложенныйЗапрос.СрокГодности), &ТекущаяДата, ДЕНЬ)
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший