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

Выборка в выборке

Автор Константин163, 02 апр 2015, 19:29

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

Константин163

Помогите разобраться.
Вот код:

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

Выборка.Сбросить();//Сбрасываем результаты предыдущей выборки
Пока Выборка.Следующий() Цикл //Снова обращаемся к первоначальному результату запросу
ОсталосьСписать = Выборка.Количество;

ВыборкаПартии = Выборка.Выбрать();// А ЧТО ВОТ ЭТО ЗА ВЫБОРКА ВНУТРИ ОСНОВНОЙ ВЫБОРКИ? ЧТО ОНА ВЫБИРАЕТ И КАК ЭТО РАБОТАЕТ?

Пока ВыборкаПартии.Следующий() И ОсталосьСписать <> 0 Цикл
Списать = Мин(ОсталосьСписать, ВыборкаПартии.КоличествоОстаток);
Себестоимость = Списать / ВыборкаПартии.КоличествоОстаток * ВыборкаПартии.СтоимостьОстаток;
СуммаПродажи = ВыборкаПартии.ЦенаПродажи*Списать;                   
   
      Движение = Движения.Общий.Добавить();
      Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
      Движение.Период = Дата;
      Движение.Склад  =Склад;
      Движение.Товар = ВыборкаПартии.Товар;
      Движение.Количество = Списать;
      Движение.Стоимость = Себестоимость;
        Движение.СуммаПродажи = СуммаПродажи;
      Движение.Партия = ВыборкаПартии.Партия;
      
      ОсталосьСписать = ОсталосьСписать - Списать;

   КонецЦикла;
   КонецЦикла;

cska-fanat-kz

когда у вас в запросе имеются ИТОГИ ПО ...
результат получается многоуровневым.
запихните текст запроса в консоль и только выберите отображать результат в виде дерева...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Константин163

Ну обход по итогам делает первая выборка.
А вот что дальше происходит:

Выборка.сбросить();
Пока Выборка.Следующий() Цикл
ВыборкаПартии = Выборка.Выбрать()?


Первая выборка обходит Итоги, вторая выборка это основная выборка из запроса, а что делает то третья выборка? она получается выборкой внутри выборки?:dfbsdfbsdf:

cska-fanat-kz

если у вас итоги только по одному полю, то в результате получаете 2 уровня - по полю итогов и так называемые детальные записи.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

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

Рейтинг@Mail.ru

Поиск