Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Пакетный запрос





 

ВЫБРАТЬ

ЦеныНоменклатуры.Номенклатура КАК Номенклатура,

ЦеныНоменклатуры.Цена КАК Цена

ПОМЕСТИТЬ

ВложеннаяТаблица

ИЗ

РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры

ГДЕ

ЦеныНоменклатуры.ТипЦен = &ЦенаПокупки

 

ОБЪЕДИНИТЬ ВСЕ

 

ВЫБРАТЬ

ЦеныНоменклатуры.Номенклатура,

ЦеныНоменклатуры.Цена

ИЗ

РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры

ГДЕ

ЦеныНоменклатуры.ТипЦен = &ЦенаПродажи

;

///////////////////////////////////////

ВЫБРАТЬ

ВложеннаяТаблица.Номенклатура,

ВложеннаяТаблица.Цена

ИЗ

ВложеннаяТаблица КАК ВложеннаяТаблица

 

СГРУППИРОВАТЬ ПО

ВложеннаяТаблица.Номенклатура,

ВложеннаяТаблица.Цена

 

 

Внешние таблицы

 

ВЫБРАТЬ

ТаблицаТоваров.Номенклатура,

ТаблицаТоваров.Цена

ПОМЕСТИТЬ

Товары

ИЗ

&ТаблицаТоваров КАК ТаблицаТоваров

;

////////////////////

ВЫБРАТЬ

Товары.Номенклатура,

Товары.Цена

ИЗ

Товары КАК Товары

СГРУППИРОВАТЬ ПО

Товары.Номенклатура,

Товары.Цена

 

 

Замечания:

1) Первый запрос – всегда простая выборка

2) Обязательно использование менеджера временных таблиц

 

Запрос = Новый Запрос();

Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();

 

Запрос.Текст = «…»;

 

Запрос.установитьПараметр(«ТаблицаТоваров», ЭтотОбъект.Товары.Выгрузить());

 

 

Соединение (join)

 

В 1С такие соединения: внутреннее, левое, правое, полное

 


Т1

П1 П2
   
   
   
   

 

Т2

П3 П4
   
   
   
   

 

Условие: Т1.П1 = Т2.П3. Выбираются П1 (П3), П2, П4

 

Т1 внутреннее соединение Т2

П1 (П3) П2 П4
     
     
     
     

 

Т1 левое соединение Т2

П1 (П3) П2 П4
     
     
     
    NULL
     

 

Т1 правое соединение Т2

П3 (П1) П2 П4
     
     
     
  NULL  
     

Т1 полное соединение Т2

П1 П2 П3 П4
       
       
       
    NULL NULL
       
NULL NULL    

 

 

Левое Ç Правое = Внутреннее

Левое È Правое = Полное

 

 

Выбираем номенклатуру и цену, если цены нет, то цена = 0

 

ВЫБРАТЬ

Товары.Номенклатура,

Товары.Количество,

МИНИМУМ(ЕстьNULL (Цены.Цена, 0)) КАК Цена

ИЗ

Документ.ПриходнаяНакладная.Товары КАК Товары

ЛЕВОЕ СОЕДИНЕНИЕ

РегистрСведений.ЦеныНоменклатуры КАК Цены

ПО

Товары.Номенклатура = Цены.Номенклатура

И Цены.ТипЦен = &ЦенаПокупки

ГДЕ

Товары.Ссылка = &Ссылка

СГРУППИРОВАТЬ ПО

Товары.Номенклатура,

Товары.Количество

 

 

Выбираем номенклатуру и цену, если цена есть

 

ВЫБРАТЬ

Товары.Номенклатура,

Товары.Количество,

МИНИМУМ(Цены.Цена) КАК Цена

ИЗ

Документ.ПриходнаяНакладная.Товары КАК Товары

ЛЕВОЕ СОЕДИНЕНИЕ

РегистрСведений.ЦеныНоменклатуры КАК Цены

ПО

Товары.Номенклатура = Цены.Номенклатура

И Цены.ТипЦен = &ЦенаПокупки

ГДЕ

Товары.Ссылка = &Ссылка

НЕ Цены.Цена ЕСТЬNULL

СГРУППИРОВАТЬ ПО

Товары.Номенклатура,

Товары.Количество

 

Итоги

 

ВЫБРАТЬ

Товары.Номенклатура,

Товары.Количество,

ЕстьNULL(Цены.Цена, 0) КАК Цена

ИЗ

Документ.ПриходнаяНакладная.Товары КАК Товары

ЛЕВОЕ СОЕДИНЕНИЕ

РегистрСведений.ЦеныНоменклатуры КАК Цены

ПО

Товары.Номенклатура = Цены.Номенклатура

И Цены.ТипЦен = &ЦенаПокупки

ГДЕ

Товары.Ссылка = &Ссылка

ИТОГИ

МАКСИМУМ(Цена)

ПО

Номенклатура

 

До итогов

Номенклатура Количество Цена
Яблоки    
Печенье    
Зеленый чай    
Яблоки    
Зеленый чай    
Печенье    
Яблоки    
Печенье    

 


Итог МАКСИМУМ(Цена) по Номенклатура

1) без группировок

Выборка = Запрос.Выполнить.Выбрать();

или

Выборка = Запрос.Выполнить.Выбрать(ОбходРезультатаЗапроса.Прямой);

Номенклатура Количество Цена
Яблоки NULL  
Яблоки    
Яблоки    
Яблоки    
Печенье NULL  
Печенье    
Печенье    
Печенье    
Зеленый чай NULL  
Зеленый чай    
Зеленый чай    

 

1) c группировками

ВыборкаИтогов = Запрос.Выполнить.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Номенклатура Количество Цена
Яблоки NULL  
Яблоки    
Яблоки    
Яблоки    
Печенье NULL  
Печенье    
Печенье    
Печенье    
Зеленый чай NULL  
Зеленый чай    
Зеленый чай    

 

ВыборкаИтогов = Запрос.Выполнить.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

 

Пока ВыборкаИтогов.Следующий() Цикл

Номенклатура = ВыборкаИтогов.Номенклатура;

МаксЦена = ВыборкаИтогов.Цена;

ВыборкаДетали = ВыборкаИтогов.Выбрать();

 

Пока ВыборкаДетали.Следующий() Цикл

Количество = ВыборкаДетали.Количество;

Цена = ВыборкаДетали.Цена;

// Номенклатура тоже известна

КонецЦикла;

 

КонецЦикла;

 








Date: 2015-05-05; view: 403; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.015 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию