Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 08:06

Выборка запроса

Автор Анатолий Анпилогов, 29 авг 2016, 12:48

0 Пользователей и 1 гость просматривают эту тему.

Анатолий Анпилогов


Запрос = Новый Запрос();
Запрос.УстановитьПараметр("Организация",Организация);
ТекстЗапроса = "ВЫБРАТЬ
               | КнигиУчетДоступныхОстатки.КоличествоОстаток,
               | КнигиУчетДоступныхОстатки.Номенклатура,
               | КнигиУчетДоступныхОстатки.Организация
               |ИЗ
               | РегистрНакопления.КнигиУчетДоступных.Остатки КАК КнигиУчетДоступныхОстатки";
Если ЗначениеЗаполнено(Организация) Тогда
ТекстЗапроса = ТекстЗапроса + "
               |ГДЕ
               | КнигиУчетДоступныхОстатки.Организация = &Организация";
КонецЕсли;
Запрос.Текст = ТекстЗапроса;
Выборка = Запрос.Выполнить().Выбрать();

КнигиОстатки = Новый ТаблицаЗначений;
КнигиОстатки.Колонки.Добавить("Номенклатура");
КнигиОстатки.Колонки.Добавить("Остаток");
Пока Выборка.Следующий() Цикл
Нов = КнигиОстатки.Добавить();
Нов.Номенклатура = Выборка.Номенклатура;
Нов.Остаток = Выборка.КоличествоОстаток;
КонецЦикла;

СпрКниги = Справочники.Номенклатура.Выбрать();
Пока СпрКниги.Следующий() Цикл
Для Каждого СтрокаТЗ Из КнигиОстатки Цикл
Если СпрКниги.Ссылка = СтрокаТЗ.Номенклатура Тогда
Область.Параметры.СвободныйОстаток = СтрокаТЗ.Остаток;
Область.Параметры.НазваниеКниги = СпрКниги.Наименование;
ТабДок.Вывести(Область);
КонецЕсли;
КонецЦикла;

//Область.Параметры.НазваниеКниги = СпрКниги.Наименование;
//ТабДок.Вывести(Область);
КонецЦикла;


Постановка: Для каждого элемента из СпрКниги Найти соответствие в КнигиОстатки, и получить количество, заранее спасибо

SGIRG

Все в один запрос!
Выборка из справочника Номенклатура и левое соединение с регистром накопления по Номенклатуре.
по поводу условия
|ГДЕ
|    КнигиУчетДоступныхОстатки.Организация = &Организация";

во первых скорее всего лучше это условие запихать в параметры виртуальной таблицы (пользуйтесь конструктором)
и чтобы не ломать читабельность кода вклиниванием условий типа "Если" в середине текста запроса, желательно писать код следующим образом:
ГДЕ
    ВЫБОР
        КОГДА &Организация = То значение, которое принимает пустая переменная Организация
            ТОГДА ИСТИНА
        ИНАЧЕ КнигиУчетДоступныхОстатки.Организация = &Организация
    КОНЕЦ

Лариса198888


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск