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 " + УсловиеТМЦ; КонецЕсли; Возврат ТекстЗапроса; КонецФункции //ЦеныТМЦ() | |
| Интернет-форум Краснодарского края и Краснодара |