|     0
            - 08.11.2014 - 17:58
           |      
                    Добрые самаритяне, помогите написать запрос по справочнику с периодикой. Исходно - есть спр.Цены (подчинен Номенклатура)с периодическим реквизитом Цена. Надо запросом выбрать все товары, цена на которые менялась в заданном периоде.  |    |  
|     1
            - 09.11.2014 - 11:02
           |     
			
			
                0-Marlboro >1. Выбрать номенклатуру, цена которой менялась. Результат - в СЗ. 2. Составить запрос по разным прочим параметрам (остатки, суммы, кому, зачем...., включив фильтр по СЗ. Использовать объект "Периодический". Если это "семерка". Для "восьмерки" юзать регистры.  |    |  
|     2
            - 09.11.2014 - 17:59
           |  (0) 1с++ |   |  
|     3
            - 10.11.2014 - 16:43
           |  Для 7.7 c 1с++ могу скопировать запрос на выборку цен |   |  
|     4
            - 12.11.2014 - 19:19
           |     
			
			
                Копнув тему глубже, разобрался. 1) Запросом сделать это нельзя. 2) Приходится через выборку справочника с использованием объекта Периодический. Жаль. Хотелось красиво.  |    |  
|     5
            - 12.11.2014 - 20:45
           |  красиво только через 1с++. Неглубоко копал, капай дальше, а то так и будешь подавать лопаты могильщикам |   |  
|     6
            - 14.11.2014 - 18:48
           |     
			
			
                //--------------------------------------------- Функция ЦеныТМЦ (ТребДата, ТипЦен, ВыбТМЦ="") SQLComm.SetTextParam ("ТребДата", ТребДата); SQLComm.SetTextParam ("ТипЦен", ТипЦен); УсловиеТМЦ = ""; Если ПустоеЗначение(ВыбТМЦ) = 0 Тогда Если ВыбТМЦ.ЭтоГруппа() = 0 Тогда SQLComm.SetTextParam ("ТМЦ", ВыбТМЦ); УсловиеТМЦ = "СпрН.Id = :ТМЦ"; Иначе Если БазаSQL = 0 Тогда ВремЗначение = ""; SQLComm.УложитьСписокОбъектов(ВыбТМЦ, ВремЗначение, "Номенклатура"); SQLComm.SetTextParam ("ТМЦ", ВремЗначение); УсловиеТМЦ = "СпрН.Id IN (SELECT Val FROM :ТМЦ)"; Иначе SQLComm.УложитьСписокОбъектов(ВыбТМЦ, "#ТМЦ", "Номенклатура"); УсловиеТМЦ = "СпрН.Id IN (SELECT Val FROM #ТМЦ)"; КонецЕсли; КонецЕсли; КонецЕсли; ТекстЗапроса = " |SELECT | СпрН.Id AS Id, | CAST(Цены.Цена AS Numeric(10,2)) AS Цена |FROM | $Справочник.Номенклатура СпрН |LEFT JOIN | $Справочник.Цены СпрЦ ON СпрЦ.ParentExt = СпрН.ID AND | $СпрЦ.ТипЦен = :ТипЦен |LEFT JOIN ( | SELECT | Период.Objid AS ObjId, | Период.Value AS Цена | FROM " + Константы + " AS Период | WHERE Период.Date IN (SELECT | MAX(Константа.Date) | FROM " + Константы + " Константа | WHERE " + УсловиеConst + " AND | (Константа.Id = $ИсторияРеквизита.Цены.Цена) AND | (Константа.ObjId = Период.ObjId)) AND | (Период.Id = $ИсторияРеквизита.Цены.Цена) |)AS Цены ON Цены.ObjId = СпрЦ.Id"; Если ПустоеЗначение(ВыбТМЦ) = 0 Тогда ТекстЗапроса = ТекстЗапроса + " WHERE " + УсловиеТМЦ; КонецЕсли; Возврат ТекстЗапроса; КонецФункции //ЦеныТМЦ()  |    |  
 Интернет-форум Краснодарского края и Краснодара |