Имя: Пароль:
1C
1С v8
Условие в запросе
,
0 SH_tan
 
09.06.15
11:04
Добрый день Всем!!!
Вопрос такой, необходимо получить данные по РС Цены компании и таким образом чтобы
если есть данные у РС по ТипуЦены Тип1 (предположим Закупочная) тогда получала данные по Тип1, а если нет данных по Тип1 у РС на эту же дату, тогда получала данные по другоиу типу Тип2 (Закупочная 2), заранее спасибо!
1 asady
 
09.06.15
11:05
(0) а в чем проблема?
2 Timon1405
 
09.06.15
11:05
предлагаю использовать Выбор
3 НЕА123
 
09.06.15
11:05
естьnull, выбор
4 Рэйв
 
09.06.15
11:07
Цена=РегистрыСведений.Твой.СрезПоследних(КонецПериода, ОтборТипЦены1 )
Если Цена=0 Тогда
   Цена=  РегистрыСведений.Твой.СрезПоследних(КонецПериода, ОтборТипЦены2 ) ;
КонецЕсли;
5 SH_tan
 
09.06.15
11:12
а в запросе как сделать?
6 SH_tan
 
09.06.15
11:13
просто у меня вот как, сперва ТЗ - это Внешняя табла

ВЫБРАТЬ
    ТЗ.Товар,
    ТЗ.РН,
    ТЗ.ТоварКод,
    ТЗ.Контрагент,
    ТЗ.Менеджер,
    ТЗ.Партия,
    ТЗ.ОборотОплаченоКон,
    ТЗ.КолОплаченоКон,
    ТЗ.КолОплаченоНач,
    ТЗ.ОборотОплаченоНач,
    ТЗ.ОплаченоСумма,
    ТЗ.ОплаченоКоличество,
    ТЗ.ТипЦен,
    ТЗ.ТипЦенПредставление,
    ТЗ.Цена,
    ТЗ.РНДокументОснование,
    ТЗ.РНДокументОснованиеДата,
    ТЗ.Количество
ПОМЕСТИТЬ ТЗДанные
ИЗ
    &ТЗ КАК ТЗ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВложенныйЗапрос.Товар,
    ВложенныйЗапрос.РН,
    ВложенныйЗапрос.ТоварКод,
    ВложенныйЗапрос.Контрагент,
    ВложенныйЗапрос.Менеджер,
    ВложенныйЗапрос.Партия,
    ВложенныйЗапрос.ОборотОплаченоКон,
    ВложенныйЗапрос.КолОплаченоКон,
    ВложенныйЗапрос.КолОплаченоНач,
    ВложенныйЗапрос.ОборотОплаченоНач,
    ВложенныйЗапрос.ОплаченоСумма,
    ВложенныйЗапрос.ОплаченоКоличество,
    ВложенныйЗапрос.ТипЦен,
    ВложенныйЗапрос.Цена,
    ВложенныйЗапрос.РНДокументОснование,
    ВложенныйЗапрос.РНДокументОснованиеДата,
    ВложенныйЗапрос.Период,
    ЕСТЬNULL(ЦеныКомпании.Цена, 0) КАК Цена1,
    ЦеныКомпании.ТипЦен КАК ТипЦен1,
    ВложенныйЗапрос.Количество
ИЗ
    (ВЫБРАТЬ
        ТЗДанные.Товар КАК Товар,
        ТЗДанные.РН КАК РН,
        ТЗДанные.ТоварКод КАК ТоварКод,
        ТЗДанные.Контрагент КАК Контрагент,
        ТЗДанные.Менеджер КАК Менеджер,
        ТЗДанные.Партия КАК Партия,
        ТЗДанные.ОборотОплаченоКон КАК ОборотОплаченоКон,
        ТЗДанные.КолОплаченоКон КАК КолОплаченоКон,
        ТЗДанные.КолОплаченоНач КАК КолОплаченоНач,
        ТЗДанные.ОборотОплаченоНач КАК ОборотОплаченоНач,
        ТЗДанные.ОплаченоСумма КАК ОплаченоСумма,
        ТЗДанные.ОплаченоКоличество КАК ОплаченоКоличество,
        ТЗДанные.ТипЦен КАК ТипЦен,
        ТЗДанные.Цена КАК Цена,
        ТЗДанные.РНДокументОснование КАК РНДокументОснование,
        ТЗДанные.РНДокументОснованиеДата КАК РНДокументОснованиеДата,
        МАКСИМУМ(ЦеныКомпании.Период) КАК Период,
        ТЗДанные.Количество КАК Количество
    ИЗ
        ТЗДанные КАК ТЗДанные
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныКомпании КАК ЦеныКомпании
            ПО ТЗДанные.Товар = ЦеныКомпании.Номенклатура
                И ТЗДанные.РНДокументОснованиеДата >= ЦеныКомпании.Период
    ГДЕ
        ЦеныКомпании.ТипЦен = &ТипЦен
    
    СГРУППИРОВАТЬ ПО
        ТЗДанные.Партия,
        ТЗДанные.ОборотОплаченоКон,
        ТЗДанные.КолОплаченоКон,
        ТЗДанные.КолОплаченоНач,
        ТЗДанные.ОборотОплаченоНач,
        ТЗДанные.ОплаченоСумма,
        ТЗДанные.ОплаченоКоличество,
        ТЗДанные.ТипЦен,
        ТЗДанные.Цена,
        ТЗДанные.РНДокументОснование,
        ТЗДанные.РНДокументОснованиеДата,
        ТЗДанные.Товар,
        ТЗДанные.РН,
        ТЗДанные.ТоварКод,
        ТЗДанные.Контрагент,
        ТЗДанные.Менеджер,
        ТЗДанные.Количество) КАК ВложенныйЗапрос
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныКомпании КАК ЦеныКомпании
        ПО ВложенныйЗапрос.Товар = ЦеныКомпании.Номенклатура
            И ВложенныйЗапрос.Период = ЦеныКомпании.Период
ГДЕ
    ЦеныКомпании.ТипЦен = &ТипЦен
7 SH_tan
 
09.06.15
11:14
и вот как раз
ГДЕ
    ЦеныКомпании.ТипЦен = &ТипЦен

мне мешает и "режет" данные
8 hhhh
 
09.06.15
11:16
ПО ВложенныйЗапрос.Товар = ЦеныКомпании.Номенклатура
            И ВложенныйЗапрос.Период = ЦеныКомпании.Период
И
    ЦеныКомпании.ТипЦен = &ТипЦен
9 Рэйв
 
09.06.15
11:16
(5)А зачем тебе именно в запросе?
10 SH_tan
 
09.06.15
11:17
(8) так не пойдет там разные типы
11 SH_tan
 
09.06.15
11:18
(9) мне потом в цикле получать для 5 тыс строк мож и больше вот так ?
Цена=РегистрыСведений.Твой.СрезПоследних(КонецПериода, ОтборТипЦены1 )
Если Цена=0 Тогда
   Цена=  РегистрыСведений.Твой.СрезПоследних(КонецПериода, ОтборТипЦены2 ) ;
КонецЕсли;
12 Рэйв
 
09.06.15
11:19
(11)Думаешь запросом в цикле будет проще?:-)
13 SH_tan
 
09.06.15
11:19
во выбор наверно подойдет
14 Рэйв
 
09.06.15
11:19
(11)Или ты хочешь передать параметром список значений из 5000 элементов и потом  юзать Номенклатура В(&списокНом)?
15 SH_tan
 
09.06.15
11:20
(12) ну вообще то предполагал что да...
16 Рэйв
 
09.06.15
11:20
(15)А ты замерь:-)
17 SH_tan
 
09.06.15
11:20
(14) )))) передавал я только ТЗ
&ТЗ КАК ТЗ
18 Рэйв
 
09.06.15
11:21
(17)Это ж писец:-)
19 SH_tan
 
09.06.15
11:22
(18) полный?
20 Рэйв
 
09.06.15
11:22
(17)Представь оно каждую запись регистра будет проверять на вхождение?:-)
21 Рэйв
 
09.06.15
11:23
Вернее не запись, а каждый срез, но не суть..
22 SH_tan
 
09.06.15
11:24
(20) да не, вначале данные берутся из ТЗ помещаются в ТЗДанные  а потом к этим данным РС
23 Рэйв
 
09.06.15
11:25
(22)аа. Соединяешь. :-) Все равно имхо моим методом
1.меньше гемороя
2.Скорее всего быстрее
3.Не надо продолжать тему , а можно сразу идти писать:-)
24 SH_tan
 
09.06.15
11:26
(21) вообщем ты думаешь лучше потом получать, то есть сократить запросину и циколом добавить значение
25 SH_tan
 
09.06.15
11:26
(23) согласен
26 SH_tan
 
09.06.15
11:27
(23) спасибо всем!!!
27 ejikbeznojek
 
09.06.15
11:29
выполнить несколько запросов для каждого типа цен.
А потом в цикле список НОМ перебирать, делая поиск сначала в 1м результате, а потом в другом)
28 SH_tan
 
09.06.15
11:33
(27) обязательно попробую...
Независимо от того, куда вы едете — это в гору и против ветра!