К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Запрос по периодическому реквизиту

Гость
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 " + УсловиеТМЦ;
КонецЕсли;

Возврат ТекстЗапроса;
КонецФункции //ЦеныТМЦ()


К списку вопросов






Copyright ©, Все права защищены