Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Остатки по двум регистрам          
maxst22 Подменю пользователя
сообщение 12.06.12, 11:32
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0

Доброе время суток. Конфигурация УТ. Хочу получить остаток по регистрам "Партии" и "Заказы", - цель: получить итоговое количество товара необходимого для закупки (заказано ХХ на складе УУ , докупить ХХ-УУ)
Проблема в получении остатков по нескольким складам

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

В этом случае получаем остатки по всем складам, хотя в список значений добавлено только 2 склада
Если поставить условие
    |ГДЕ
    |    ЗаказыПокупателейОстатки.ЗаказПокупателя = &ЗаказПокупателя
    |    И Склад = &Склад1 ИЛИ Склад = &Склад2

то запрос не выводит товары которых нет в остатках на складе, даже если они заказаны


 ! 

Правила, п. 12!!!
 


Сообщение отредактировал logist - 12.06.12, 11:43

sava1 Подменю пользователя
сообщение 12.06.12, 15:30
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2751
Из: Проскуров
Спасибо сказали: 707 раз
Рейтинг: 686.5

Запросы разнести отдельно и объединить или
выборка из справочника с левым соединением обеих ВТ

maxst22 Подменю пользователя
сообщение 12.06.12, 16:59
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0

Спасибо, попробую.
Я так понимаю все будет в одном запросе, но конструкция будет выглядеть как-то так:
"ВЫБРАТЬ
    |    ЗаказыПокупателейОстатки.Номенклатура КАК Номенклатура,
    |    ЗаказыПокупателейОстатки.КоличествоОстаток КАК Отгрузить,
                   .......

|ЛЕВОЕ СОЕДИНЕНИЕ

|ВЫБРАТЬ
РегистрНакопления.ПартииТоваровНаСкладах.Остатки(
    |                , Склад в (&Склады)) КАК ПартииТоваровНаСкладахОстатки
    |        ПО ЗаказыПокупателейОстатки.Номенклатура = ПартииТоваровНаСкладахОстатки.Номенклатура




 ! 

Ознакомьтесь с правилами форума, п.12 в частности.
Следующие сообщения оформленные не по правилам будут удалятся.
 


Сори, исправлюсь

Сообщение отредактировал logist - 12.06.12, 16:29

sava1 Подменю пользователя
сообщение 12.06.12, 17:55
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2751
Из: Проскуров
Спасибо сказали: 707 раз
Рейтинг: 686.5

Вместо
Цитата(maxst22 @ 12.06.12, 17:59) *
|ЛЕВОЕ СОЕДИНЕНИЕ


ОБъЕДИНИТЬ

Структура полей обеих запросов должна быть одинакова

maxst22 Подменю пользователя
сообщение 13.06.12, 9:15
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(sava1 @ 12.06.12, 18:55) *
ОБъЕДИНИТЬ

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


НО, Берутся все остаки и почему-то по ВСЕМ складам
Интересуют только те товары, которые не были еще отгружены клиенту. (остаток по регистру "ЗаказыПокупателей")

Может сделать 2 разных запроса, выгрузить их в ТЗ-шки и по первой смотреть остаток из второй на складе?
(просто одним запросом почему-то никак не получается sad.gif )

maxst22 Подменю пользователя
сообщение 13.06.12, 11:21
Сообщение #6

Общительный
**
Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0

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


Только нужно обращать внимание на то, что в запросе остаток берется из регистра "Партии", а не "Остатки"
Вот это меня и сбило при проверке правильности формирования запроса smile.gif

Всем спасибо, кто пытался помочь!!!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 15.06.25, 14:03
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!