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

получение отбора

Автор Shaman_blr, 01 мар 2023, 14:17

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

Shaman_blr

Подскажите. Есть запрос
Функция Проверка()   
Запрос = Новый Запрос;
Запрос.Текст =

.......
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
Из запроса получаю Номенклатуру и физлицо.


Процедура Итог()
ТЗ = Проверка();
КонецПроцедуры

Реально ли отбором, отобрать данные из запроса без цикла?

Или подскажите как в процедуре получить данные, без цикла.

LexaK

Shaman_blr, так сразу в Запрос передайте нужные параметры и добавьте Область


Запрос.Текст
....
Где
&ВашПараметр - условие


и запрос вернет данные соответствующие вашим параметрам
если помогло нажмите: Спасибо!

Shaman_blr

LexaK,
ВЫБРАТЬ
Магазин.Номенклатура КАК Номенклатура,
Магазин.ФизЛицо КАК ФизЛицо
ИЗ
Документ.Магазин.Магазин 1 КАК Магазин
ГДЕ
Магазин.Ссылка.Проведен = ИСТИНА
И Магазин.Ссылка.ПометкаУдаления = ЛОЖЬ
И Магазин.Ссылка.Дата >= ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ), ДЕНЬ, -180)
И Магазин.Ссылка.Склад = &Склад
И Магазин.Ссылка <> &Ссылка
Мне нужны данные Номенклатура и физлицо, чтобы они передались в процедуру

Afinogen

 B) у вас таким образом будут дубли в итоговой выборке

ВЫБРАТЬ РАЗЛИЧНЫЕ

ЦитироватьМне нужны данные Номенклатура и физлицо, чтобы они передались в процедуру
покажите процедуру

Shaman_blr

Afinogen,



Процедура ИтогЗаписатьНажатие ()
ТЗ = Проверка();

Для каждого Стр Из тз Цикл
Отбор = Новый Структура;
Отбор.Вставить("РабочийЦентр", стр.Номенклатура);
Отбор.Вставить("Номенклатура", стр.ФизЛицо);
ТаблицаПроверка = тз.НайтиСтроки(Отбор);

КонецЦикла;
КонецПроцедуры

Так я получу данные. Но у меня в цикле будет табличная часть , а в отборе я хочу хранить данные из запроса.

Afinogen

так у вас результатом запроса будет или таблица значений или выборка B)
если б у вас в результате запроса была 1 строка то проблем нет а так что то вы все в одну кучу свалили. Вы сначала получили ТЗ затем циклом бегаете по ее строкам и отбираете опять же из нее, зачем? :dfbsdfbsdf:



Shaman_blr

Процедура ИтогЗаписатьНажатие ()

Запрос = Проверка();// данные из запроса   
   
    Для каждого Стр Из тз Цикл
        Отбор = Новый Структура;
        Отбор.Вставить("Номенклатура", стр.Номенклатура);
        Отбор.Вставить("ФизЛицо", стр.ФизЛицо);
        ТаблицаПроверка = Запрос.НайтиСтроки(Отбор);

    КонецЦикла;
КонецПроцедуры

ТЗ это данные из табчасти.
теперь я вижу, что в ТаблицаПроверка Прилетают данные Номенклатура и физлицо.
А как мне написать теперь условие если НОМЕНКЛАТУРА"ИЗ ТАБЧАСТИ" = НОМЕНКЛАТУРА"ИЗ ЗАПРОСА" И ФизЛицо "ИЗ ТАБЧАСТИ" = ФизЛицо "ИЗ ЗАПРОСА" ТОГДА
ВСЕ ОК!!!!

Afinogen

можно элегантнее, все загнать в запрос)

Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Таб = ТЧ.Выгрузить("Номенклатура,ФизЛицо") ;
Таб.Свернуть("Номенклатура,ФизЛицо");
Запрос.УстановитьПараметр("ВТ_ТабЧасть",Таб);
Запрос.Текст = "ВЫБРАТЬ
|ВТ_ТабЧасть.Номенклатура,
|ВТ_ТабЧасть.ФизЛицо
|ПОМЕСТИТЬ ВТ_ТабЧасть
|ИЗ &ВТ_ТабЧасть
|;
|/////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    Магазин.Номенклатура КАК Номенклатура,
|    Магазин.ФизЛицо КАК ФизЛицо
|ПОМЕСТИТЬ ВТ_Данные
|ИЗ
|    Документ.Магазин.Магазин 1 КАК Магазин
|ГДЕ
|    Магазин.Ссылка.Проведен = ИСТИНА
|    И Магазин.Ссылка.ПометкаУдаления = ЛОЖЬ
|    И Магазин.Ссылка.Дата >= ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ), ДЕНЬ, -180)
|    И Магазин.Ссылка.Склад = &Склад
|    И Магазин.Ссылка <> &Ссылка
|;
|/////////////////////////////////////////////////////////
|ВЫБРАТЬ ВТ_ТабЧасть.Номенклатура,
|ВТ_Данные.ФизЛицо
|ИЗ
| ВТ_ТабЧасть КАК ВТ_ТабЧасть
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Данные КАК ВТ_Данные
|ПО
| ВТ_ТабЧасть.Номенклатура = ВТ_Данные.Номенклатура
| И ВТ_ТабЧасть.ФизЛицо = ВТ_Данные.ФизЛицо

Shaman_blr

Afinogen, не, запрос не надо, можно ли оттуда как то?)

Afinogen

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

Теги:

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

Рейтинг@Mail.ru

Поиск