Имя: Пароль:
1C
1С v8
Условие в запросе для регистра накопления
0 Ilqarupup
 
12.09.14
15:56
Всем привет! Такой вопрос, в запросе в оборотном регистре накопления прописал дату начала и дату конца:
        РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&Datebegin, ГОД), ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&Dateend, МЕСЯЦ), СЕКУНДА, -1), , , ) КАК ТоварыНаСкладахОстаткиИОбороты
    
Можно ли сюда впихнуть условие, типа если Dateend у нас январь, то так и оставь, а не вычисляй конец предыдущего месяца?
1 Джинн
 
12.09.14
15:59
Хрень какая-то :(

Что вообще нужно сделать с точки зрения бизнес-задачи?
2 Kamas
 
12.09.14
16:02
в запросе есть МЕСЯЦ() а еще есть выбор когда тогда  дальше думаю догадаешся
3 Зеленый пень
 
12.09.14
16:05
(0) покажи поля запроса
4 Ilqarupup
 
12.09.14
16:06
ВЫБРАТЬ
        ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
        ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
        ВЫБОР
            КОГДА ЗакупкиОбороты.КоличествоОборот ЕСТЬ NULL
                    ИЛИ ЗакупкиОбороты.КоличествоОборот = 0
                ТОГДА 0
            ИНАЧЕ ЗакупкиОбороты.СтоимостьОборот / ЗакупкиОбороты.КоличествоОборот
        КОНЕЦ КАК Price,
        ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
        ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
        ТоварыНаСкладахОстаткиИОбороты.КоличествоОборот КАК КоличествоОборот1,
        ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход,
        ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход
    ИЗ
        РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&Datebegin, ГОД), ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&Dateend, МЕСЯЦ), СЕКУНДА, -1), , , ) КАК ТоварыНаСкладахОстаткиИОбороты
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Закупки.Обороты(НАЧАЛОПЕРИОДА(&Datebegin, ГОД), ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&Dateend, МЕСЯЦ), СЕКУНДА, -1), , Организация = &Организация) КАК ЗакупкиОбороты
            ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ЗакупкиОбороты.Номенклатура) КАК ВложенныйЗапрос
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(НАЧАЛОПЕРИОДА(&Datebegin, ГОД), ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
        ПО ВложенныйЗапрос.Номенклатура = ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура
;
5 Ilqarupup
 
12.09.14
16:07
нужен период начало года - конец предыдущего месяца. Баг выходит на первом месяце.
6 Ilqarupup
 
12.09.14
16:09
(2) это знаю, хотелось знать наперед, есть ли такая возможность для моего случая
7 Ilqarupup
 
12.09.14
16:11
выбор когда месяц(&Dateend)=1 тогда &Dateend иначе ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&Dateend, МЕСЯЦ), СЕКУНДА, -1) конец
8 Ilqarupup
 
12.09.14
16:11
(7) так не идет
9 Wobland
 
12.09.14
16:11
>КАК Price,
выпендрился, молодец
10 Зеленый пень
 
12.09.14
16:12
А нафига так коряво Dataend в запрос передавать?
11 Ilqarupup
 
12.09.14
16:12
(10) я же сказал, из-за бага в январе
12 Джинн
 
12.09.14
16:12
(6) Возможность есть всегда. Только не нужно это в запрос пихать. Рассчитайте период и потом готовые цифры в запрос передавайте. Только без безумных секунд - есть конец периода для этого.
13 Wobland
 
12.09.14
16:13
(11) ответь на (1)
14 Шапокляк
 
12.09.14
16:13
Выбор Когда НачалоПериода(&Dateend,Месяц)=НачалоПериода(&Dateend,ГОД) Тогда....
15 Ilqarupup
 
12.09.14
16:14
(13) нужно получить оборот товара со связкой с закупками за период начало года - конец предыдущего месяца.
16 Ilqarupup
 
12.09.14
16:15
(12) с границами времени определились, это вспомогательный запрос.
17 Ilqarupup
 
12.09.14
16:16
отсюда данные идут в основной запрос
18 Ilqarupup
 
12.09.14
16:23
(14)
выбор когда НАЧАЛОПЕРИОДА(&Datebegin, ГОД)=НАЧАЛОПЕРИОДА(&Dateend, МЕСЯЦ) тогда &Dateend иначе ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&Dateend, МЕСЯЦ), СЕКУНДА, -1) конец , не пашет, говорит Неверные параметры "РегистрНакопления.Закупки.Обороты. 1"
19 Зеленый пень
 
12.09.14
16:24
(11) Так баг в январе - из-за передаваемого параметра. Так?
Почему нельзя запрос написать так:
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , ) КАК ТоварыНаСкладахОстаткиИОбороты
20 Ilqarupup
 
12.09.14
16:26
(19) так точно.
Это в основном запросе так. А мне еще нужны от начала года до конца пред месяца.
21 Джинн
 
12.09.14
16:34
(20) И какая религия запрещает передать не два параметра, а четыре?
22 Крошка Ру
 
12.09.14
17:28
(20)А так кто мешает сделать?:

РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&ТекМесяц,Год), НАЧАЛОПЕРИОДА(&ТекМесяц,Месяц)-1, , , )
23 Крошка Ру
 
12.09.14
17:32
+(22) А, ну да, без -1
24 barrgand
 
12.09.14
17:39
(22) Ему мешает январь, он же вначале написал. Предлагаю в январе не работать...
25 Крошка Ру
 
12.09.14
17:43
Я так и не понял, а в январе-то данные за какой период должны браться?
26 barrgand
 
12.09.14
17:45
(25) Ну что непонятного, все же написано: если январь, то так и оставь