Почему в запросе выводит пустые данные из виртуальной таблицы?

1. Terabaytus 31.07.24 16:05 Сейчас в теме
Добрый день, делаю запрос к регистру почему то смотрю через консоль запросов в ней выводит данные только основного запроса почему то данные виртуальной таблицы не выводятся хотя различие только в условии?

Процедура КнопкаСформироватьНажатие(Кнопка)  
        
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |   Работа.Код,
    |   РаботаОбороты.Период,
    |  СУММА(РаботаОбороты.УзнавшийИзДругихИсточниковОборот),
    |    СУММА(РаботаОбороты.ПришедшийПоПриглашениюОборот)
    |ПОМЕСТИТЬ
    |   ВремТабКод
    |ИЗ
    |   РегистрНакопления.Работа КАК Работа
    |ГДЕ
    |    РаботаОбороты.Прод = &Прод И РаботаОбороты.Код <> ""Б01""
    |;
    |ВЫБРАТЬ
    |   РаботаОбороты.Период,
    |  СУММА(РаботаОбороты.УзнавшийИзДругихИсточниковОборот),
    |    СУММА(РаботаОбороты.ПришедшийПоПриглашениюОборот)
    |     ВремТабКод.Код,
    |     ВремТабКод.УзнавшийИзДругихИсточниковОборот
    |     ВремТабКод.ПришедшийПоПриглашениюОборот
    |ИЗ
    |    РегистрНакопления.Работа.Обороты(&Дата1, &Дата2, , ) КАК РаботаОбороты
    |ЛЕВОЕ СОЕДЕНЕНИЕ
    |    ВремТабКод КАК ВремТабКод
    |ПО
    |    (РаботаОбороты.ПришедшийПоПриглашениюОборот = ВремТабКод.Код)";
    
    Если НЕ Прод.Пустая() Тогда
        Запрос.Текст = Запрос.Текст + "
        |ГДЕ
        |    РаботаОбороты.Прод = &Прод
        |СГРУППИРОВАТЬ ПО
        |    Работа обороты.Период,
        | РаботаОбороты.УзнавшийИзДругихИсточниковОборот,
        |    РаботаОбороты.ПришедшийПоПриглашениюОборот
        |     ВремТабКод.Код,
        |     ВремТабКод.УзнавшийИзДругихИсточниковОборот
        |     ВремТабКод.ПришедшийПоПриглашениюОборот";
        Запрос.УстановитьПараметр("Прод", Прод);
    КонецЕсли;
    
    Запрос.УстановитьПараметр("Дата1", НачалоДня(Дата1));
    Запрос.УстановитьПараметр("Дата2", КонецДня(Дата2));
    ВыборкаЗапроса = Запрос.Выполнить().Выбрать();
    
    ТабДок = Новый ТабличныйДокумент;
    Макет = Отчеты.УчётаРаботы.ПолучитьМакет("МакетОтчёт");
    МакетОтчёт = ЭтотОбъект.ПолучитьМакет(МакетОтчёт);
    МакетОтчёт.Параметры.Дата1 = Формат(Дата1, "ДЛФ=D");
    МакетОтчёт.Параметры.Дата2 = Формат(Дата2, "ДЛФ=D");
    
    Шапка = Макет.ПолучитьОбласть("Шапка");
    СтрокаОтчёта = Макет.ПолучитьОбласть("Строка");  
    Подвал = Макет.ПолучитьОбласть("Подвал");     

    Шапка.Параметры.Дата1 = Дата1;    
    Шапка.Параметры.Дата2 = Дата2;
    Шапка.Параметры.Продавец = Строка(Прод) + " " + Прод.Отдел;    
    ТабДок.Вывести(Шапка);

    Данные = Новый Структура;
    
    Пока ВыборкаЗапроса.Следующий() Цикл
         
            
            Данные.Вставить("УзнавшийИзДругихИсточников", ВыборкаЗапроса.УзнавшийИзДругихИсточниковОборот);
            Данные.Вставить("ПришедшийПоПриглашению", ВыборкаЗапроса.ПришедшийПоПриглашениюОборот);
            
                        
        Для Каждого ТекущаяСтрока Из Данные Цикл
            
            СтрокаОтчёта.Параметры.УзнавшийИзДругихИсточников = Данные.УзнавшийИзДругихИсточников;
            СтрокаОтчёта.Параметры.ПришедшийПоПриглашению = Данные.ПришедшийПоПриглашению;
                                       
        
        КонецЦикла;
        
        ТабДок.Вывести(СтрокаОтчёта);
        
    КонецЦикла;    
                    
    ТабДок.ОтображатьСетку = Ложь;    
    ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область("R11:R14");    
    ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    ТабДок.АвтоМасштаб = Истина;    
    ТабДок.Защита = Ложь;    
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.ОтображатьЗаголовки = Ложь;    
    ТабДок.Показать("Ведомость за период с " + Формат(Дата1, "ДФ=dd.MM.yyyy") + " по " + Формат(Дата2, "ДФ=dd.MM.yyyy"));
    
КонецПроцедуры

Показать
По теме из базы знаний
Найденные решения
5. yispepotri 31.07.24 16:13 Сейчас в теме
если часть запроса с временной таблицей выполнить в консоли, выдает данные?
Terabaytus; +1 Ответить
7. yispepotri 31.07.24 16:27 Сейчас в теме
(6) у них связь по коду, во второй таблицы точно есть строка с таким кодом, как во временной?
Terabaytus; +1 Ответить
9. yispepotri 31.07.24 16:38 Сейчас в теме
(8)

НЕ РаботаОбороты.Код Подобно "%Б%"


за эффективность работы в вашей базе не берусь судить)

если где начинается с "Б", то убрать НЕ
Terabaytus; +1 Ответить
17. yispepotri 31.07.24 17:02 Сейчас в теме
(16) я просто не знаю принцип формирования кода работы в вашей базе, то есть условно если код будет какой нибудь "АБ001" Б - есть в строке, да, значит выводим
Terabaytus; +1 Ответить
8. Terabaytus 31.07.24 16:35 Сейчас в теме
(7) Спасибо заработало, можешь ещё подсказать как сделать выборку по части кода, например не написать полностью ""Б01""
РаботаОбороты.Прод = &Прод И РаботаОбороты.Код <> ""Б01""

а что бы сделал выборку во всех записях где начинается с ""Б""?
РаботаОбороты.Прод = &Прод И РаботаОбороты.Код <> ""Б""
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. yispepotri 31.07.24 16:09 Сейчас в теме
(1)
РаботаОбороты.Прод = &Прод И Работа обороты.Код <> "Б01"

Работа обороты.Код тут должен быть этот пробел?
Terabaytus; +1 Ответить
3. Terabaytus 31.07.24 16:11 Сейчас в теме
(2) Не недолжен, поправил.
4. yispepotri 31.07.24 16:12 Сейчас в теме
(3) а также у кода двойные кавычки должны быть
РаботаОбороты.Прод = &Прод И РаботаОбороты.Код <> ""Б01""
Terabaytus; +1 Ответить
15. user1992985 31.07.24 16:53 Сейчас в теме
(1)
|ЛЕВОЕ СОЕДЕНЕНИЕ
    |    ВремТабКод КАК ВремТабКод
    |ПО
    |    (РаботаОбороты.ПришедшийПоПриглашениюОборот = ВремТабКод.Код)";
Значительный прогресс. В прошлой теме код сравнивался с датой, теперь с числом. Явное повышение уровня.
5. yispepotri 31.07.24 16:13 Сейчас в теме
если часть запроса с временной таблицей выполнить в консоли, выдает данные?
Terabaytus; +1 Ответить
6. Terabaytus 31.07.24 16:23 Сейчас в теме
(5) Да, если оставить код в основном запросе и по нему соеденить выдаёт из временной это почему так?
7. yispepotri 31.07.24 16:27 Сейчас в теме
(6) у них связь по коду, во второй таблицы точно есть строка с таким кодом, как во временной?
Terabaytus; +1 Ответить
8. Terabaytus 31.07.24 16:35 Сейчас в теме
(7) Спасибо заработало, можешь ещё подсказать как сделать выборку по части кода, например не написать полностью ""Б01""
РаботаОбороты.Прод = &Прод И РаботаОбороты.Код <> ""Б01""

а что бы сделал выборку во всех записях где начинается с ""Б""?
РаботаОбороты.Прод = &Прод И РаботаОбороты.Код <> ""Б""
9. yispepotri 31.07.24 16:38 Сейчас в теме
(8)

НЕ РаботаОбороты.Код Подобно "%Б%"


за эффективность работы в вашей базе не берусь судить)

если где начинается с "Б", то убрать НЕ
Terabaytus; +1 Ответить
10. Terabaytus 31.07.24 16:44 Сейчас в теме
(9) Да всё верно только если с
Б
начинается
Не
убирать не надо у меня в таком случае выдаёт всё что есть кроме
Б
.
11. yispepotri 31.07.24 16:46 Сейчас в теме
(10) я не совсем правильно понял, ПОДОБНО в данном случае просто ищет сходство с подстрокой, это не тот вариант, который нужен (начинается с Б)
Terabaytus; +1 Ответить
12. Terabaytus 31.07.24 16:47 Сейчас в теме
13. yispepotri 31.07.24 16:48 Сейчас в теме
(12) пока ничего подходящего в голову не приходит, нужно подумать...
14. yispepotri 31.07.24 16:51 Сейчас в теме
(12) а может работы различаются еще по какому-нибудь признаку? чтобы через такой костыль не делать?
16. Terabaytus 31.07.24 16:59 Сейчас в теме
(14) Да нет вроде, но главное работает, эта конструкция может как то не отработать при определённых условиях?
17. yispepotri 31.07.24 17:02 Сейчас в теме
(16) я просто не знаю принцип формирования кода работы в вашей базе, то есть условно если код будет какой нибудь "АБ001" Б - есть в строке, да, значит выводим
Terabaytus; +1 Ответить
19. Terabaytus 31.07.24 17:05 Сейчас в теме
20. yispepotri 31.07.24 17:06 Сейчас в теме
(19) ну вам виднее, а чем обусловлен отбор по коду "Б" ?
18. yispepotri 31.07.24 17:04 Сейчас в теме
(16) как вариант посмотреть принцип заполнения кода работы при записи, может от туда получится взять информацию как отбирать
Terabaytus; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот