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

Как получить начальные остатки

Автор AlenkaInt, 22 авг 2012, 11:43

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

AlenkaInt

Здравствуйте.
Есть задание в УТ 11 получить из физической таблицы РегистраНакопления ТоварыНаСкладах виртуальную ОстаткиИОбороты. Зачем, не спрашивайте, это учебная задача. Вот сам запрос:
ВЫБРАТЬ
   СУММА(ВЫБОР
         КОГДА ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
            ТОГДА ТоварыНаСкладах.ВНаличии
         ИНАЧЕ 0
      КОНЕЦ) КАК Приход,
   СУММА(ВЫБОР
         КОГДА ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
            ТОГДА ТоварыНаСкладах.ВНаличии
         ИНАЧЕ 0
      КОНЕЦ) КАК Расход,
   НАЧАЛОПЕРИОДА(ТоварыНаСкладах.Период, ДЕНЬ) КАК Период,
   ТоварыНаСкладах.Номенклатура
ПОМЕСТИТЬ Обороты
ИЗ
   РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах

СГРУППИРОВАТЬ ПО
   НАЧАЛОПЕРИОДА(ТоварыНаСкладах.Период, ДЕНЬ),
   ТоварыНаСкладах.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТоварыНаСкладах.Номенклатура КАК Товар,
   СУММА(ВЫБОР
         КОГДА ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
            ТОГДА ТоварыНаСкладах.ВНаличии
         ИНАЧЕ 0
      КОНЕЦ - ВЫБОР
         КОГДА ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
            ТОГДА ТоварыНаСкладах.ВНаличии
         ИНАЧЕ 0
      КОНЕЦ) КАК Остаток
ПОМЕСТИТЬ НачальныеОстатки
ИЗ
   РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах

СГРУППИРОВАТЬ ПО
   ТоварыНаСкладах.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЕСТЬNULL(НачальныеОстатки.Остаток, 0) КАК НачОстаток,
   ЕСТЬNULL(Обороты.Приход, 0) КАК Приход,
   ЕСТЬNULL(Обороты.Расход, 0) КАК Расход,
   ЕСТЬNULL(НачальныеОстатки.Остаток, 0) + ЕСТЬNULL(Обороты.Приход, 0) - ЕСТЬNULL(Обороты.Расход, 0) КАК КонОстаток,
   Обороты.Период КАК Период,
   НачальныеОстатки.Товар
ИЗ
   НачальныеОстатки КАК НачальныеОстатки
      ПОЛНОЕ СОЕДИНЕНИЕ Обороты КАК Обороты
      ПО НачальныеОстатки.Товар = Обороты.Номенклатура

УПОРЯДОЧИТЬ ПО
   Период
А вот и вопрос -
В моем запросе не правильно вычислены НачальныеОстатки. Теоретически я знаю что надо сделать - надо получать начальные остатки в самой выборке (в том периоде который я вывожу, другими словами "по-дням"), естественно это не просто Приход-Расход, еще по дням суммировать надо нарастающим итогом. Нарастающие итоги получаются соединением таблицы к самой себе. Но как это реализовать я не знаю. Подскажите как это реализовать? В каком части запроса, во временной таблице Обороты? Это нужно добавлять еще одно поле и там соединять? Как соединить таблицу саму с собой? На какой закладке конструктора?

Теги:

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

Рейтинг@Mail.ru

Поиск