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

Изменить параметры запроса при выполнении процедуры

Автор maxxi, 18 фев 2023, 06:46

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

maxxi

Исправил как Вы написали:

"ВЫБРАТЬ
    |    ОстаткиОстаткиИОбороты.Товар КАК Товар,
    |    ОстаткиОстаткиИОбороты.Склад КАК Склад,
    |    ОстаткиОстаткиИОбороты.Валюта КАК Валюта,
    |    ОстаткиОстаткиИОбороты.СониКонечныйОстаток КАК СониКонечныйОстаток,
    |    ОстаткиОстаткиИОбороты.СониРасход КАК СониРасход,
    |    ТоварНархлариСрезПоследних.Нарх КАК Нарх,
    |    ТоварНархлариСрезПоследних.ПриходНархи КАК ПриходНархи
    |
    |ИЗ
    |    РегистрНакопления.Остатки.ОстаткиИОбороты (&БошлангичСана,&ОхиргиСана) КАК ОстаткиОстаткиИОбороты
    |        ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ТоварНархлари.СрезПоследних КАК ТоварНархлариСрезПоследних
    |        ПО ОстаткиОстаткиИОбороты.Товар.Ссылка = ТоварНархлариСрезПоследних.Товар.Ссылка
    |       
    |ГДЕ
    |       ОстаткиОстаткиИОбороты.Склад = &Склад
    |       И ОстаткиОстаткиИОбороты.Валюта = &Валюта
    |       И ОстаткиОстаткиИОбороты.СониКонечныйОстаток > 0
    |       И ТоварНархлариСрезПоследних.ПриходНархи > 0
    |       И ТоварНархлариСрезПоследних.Нарх > 30
    |       И ОстаткиОстаткиИОбороты.СониРасход>0
////////////////////////////////////////////////////////////�/////////////////////////////////////////////   
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    ОстаткиОстаткиИОбороты1.Товар,
    |    ОстаткиОстаткиИОбороты1.Склад,
    |    ОстаткиОстаткиИОбороты1.Валюта,
    |    ОстаткиОстаткиИОбороты1.СониКонечныйОстаток,
    |    ОстаткиОстаткиИОбороты1.СониРасход,
    |    ТоварНархлариСрезПоследних1.Нарх,
    |    ТоварНархлариСрезПоследних1.ПриходНархи
    |
    |ИЗ
    |    РегистрНакопления.Остатки.ОстаткиИОбороты (&БошлангичСана,&ОхиргиСана) КАК ОстаткиОстаткиИОбороты1
    |        ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ТоварНархлари.СрезПоследних КАК ТоварНархлариСрезПоследних1
    |        ПО ОстаткиОстаткиИОбороты1.Товар.Ссылка = ТоварНархлариСрезПоследних1.Товар.Ссылка";
           
    |ГДЕ
    |       ОстаткиОстаткиИОбороты1.Склад = &Склад
    |       И ОстаткиОстаткиИОбороты1.Валюта = &Валюта
    |       И ОстаткиОстаткиИОбороты1.СониКонечныйОстаток > 0
    |       И ТоварНархлариСрезПоследних1.ПриходНархи > 0
    |       И ТоварНархлариСрезПоследних1.Нарх > 30
    |       И ОстаткиОстаткиИОбороты1.СониРасход>0";

 Скрыть


Скажите пожалуйста, теперь как получить остатки на сегодня а другие данные за предыдущий год. Спасибо.

Максим75

не так.
Вы объединили, а надо соединить.

делаете, допустим, через временные таблицы, так понятнее для визуализации.
первый запрос за прошлый год - сделали и во временную таблицу (назовите ее допустим ПрошлыйГод).
второй запрос точно такой же, только за текущий год - сделали и во временную таблицу (назовите ее допустим ЭтотГод). Только псевдонимы полям дайте разные, чтобы понимать где поле с какого набора.
итоговый запрос - соедините эти две таблицы (не объединение, а полное соединение одной таблицы с другой по товару). У Вас получится итоговый набор записей по всем товарам с полями остатков за прошлый и текущий годы.

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

У Вас параметров времени должно быть 4: по два для начала периода и по два для окончание периода.

maxxi

Максим75, Сделал как Вы написали:


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



maxxi


Товар.Товарлар=ВыборкаДетальныеЗаписи.Товар_ТГ;


Не пишет в колонку "Товарлар", пишет не найдено поле "Товар_ТГ", а оно есть.

Помогите пожалуйста найти где я ошибаюсь.

Спасибо.

Максим75

maxxi, так надо еще один запрос, Вы же крайний запрос поместили по временную таблицу.
теперь надо из Вт_Итоговый все выбрать и будет результат запроса.

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

и еще - при соединении всегда старайтесь обработать NULL, т.е. все такого плана
ВТ_ТекущийГод.СониКонечныйОстаток_ТГ КАК СониКонечныйОстаток_ТГ,
необходимо заменить на
ЕСТЬNULL(ВТ_ТекущийГод.СониКонечныйОстаток_ТГ,0) КАК СониКонечныйОстаток_ТГ

и все такое.
у Вас сейчас ведущая таблица является прошлого года, но с нее берете только одно поле, а все остальное с таблицы текущего года. Так может поменять таблицы местами - текущий год сделать ведущей, а прошлый год ведомой.

maxxi

Максим75, все работает исправно, спасибо большое.

Максим75


Теги:

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

Рейтинг@Mail.ru

Поиск