Вход | Регистрация

1С:Предприятие ::

Метки: 

Извлечь запросом срок хранения номенклатуры в днях из РН.ТоварыНаСкладах УПП 1.3

Я
   slnes
 
10.03.18 - 09:48
Извлечь запросом срок хранения номенклатуры в днях из РН.ТоварыНаСкладах УПП 1.3.
Результат в виде
Склад|Номенклатура|Приход|СрокХраненияВДнях|
Расходуется в зависимости от склада по ФИФО.

Отчет необходимо сделать именно запросами, без дальнейшей обработки.
 
 
   Mikhail Volkov
 
1 - 10.03.18 - 10:27
Если цель отчета определить остатки годного товара, то РН.ТоварыНаСкладах мало будет. В РН.ПартииТоваровНаСкладах есть ДокументОприходования - из него можно дату поступления товара определить...
   Mikhail Volkov
 
2 - 10.03.18 - 11:19
+ Хотя дату поступления можно из регистратора взять... но не гарантирует, что товар изначально свежий.
   slnes
 
3 - 11.03.18 - 08:34
Нет, сроки годности не надо, просто необходимо узнать какой товар сколько пролежал на складе, на конкретную дату, списывается по ФИФО

Например:

01.03.18 склад№1 поступил товар1 100 шт
06.03.18 склад№1 поступил товар1 150 шт
08.03.18 склад№1 списан   товар1 200 шт

необходимо узнать срок хранения на дату, 10.03.2018

склад№1, товар1, поступление от 06.03.18, остаток 50 штук, хранится 5 дней.

Напомню, можно использовать только запрос.
   Sapiens_bru
 
4 - 11.03.18 - 09:53
(3) Это учебное задание на понимание смысла запросов? На практике запрос скрещивающий таблицу оборотов саму с собой, положит большую базу, потому и используют регистры партий.
   один я дАртаньян
 
5 - 11.03.18 - 10:38
(1) А если былонесколько поступлений?

ДОпустим

100шт. 01.03
100шт. 05.03

Это должны быть две строчки в отчетах? Или одна? Если одна то какая дата?
   slnes
 
6 - 11.03.18 - 11:12
Две строчки, списывается сначала то что раньше пришло на склад, что бы пример был нагляднее сделаем так

01.03.18 склад№1 поступил товар1 100 шт 
06.03.18 склад№1 поступил товар1 150 шт
08.03.18 склад№1 списан   товар1 50 шт

необходимо узнать срок хранения на дату, 10.03.2018

склад№1, товар1, поступление от 01.03.18, остаток 50 штук, хранится 10 дней.
склад№1, товар1, поступление от 06.03.18, остаток 150 штук, хранится 5 дней.

Напомню, можно использовать только запрос.
   Джинн
 
7 - 11.03.18 - 11:36
(6) Используйте, разрешаю.
   один я дАртаньян
 
8 - 11.03.18 - 12:44
Как то так:


ВЫБРАТЬ
    взОстатки.Номенклатура,
    взОстатки.Склад,
    взОстатки.КоличествоОстаток
ПОМЕСТИТЬ втДанные
ИЗ
    (ВЫБРАТЬ
        ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
        ТоварыНаСкладахОстатки.Склад КАК Склад,
        СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток
    ИЗ
        РегистрНакопления.ТоварыНаСкладах.Остатки(&НаДату, ) КАК ТоварыНаСкладахОстатки
    
    СГРУППИРОВАТЬ ПО
        ТоварыНаСкладахОстатки.Номенклатура,
        ТоварыНаСкладахОстатки.Склад) КАК взОстатки
;

////////////////////////////////////////////////////////////////////////////////

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

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВложенныйЗапрос.Номенклатура,
    ВложенныйЗапрос.Склад,
    ВложенныйЗапрос.Регистратор,
    РАЗНОСТЬДАТ(ВложенныйЗапрос.Регистратор.Дата, &НаДату, ДЕНЬ) КАК Дней,
    ВложенныйЗапрос.Количество - ВЫБОР
        КОГДА втДанные.КоличествоОстаток < ВложенныйЗапрос.КоличествоНакопленное
            ТОГДА ВложенныйЗапрос.КоличествоНакопленное - ВложенныйЗапрос.КоличествоНакопленное
        ИНАЧЕ 0
    КОНЕЦ КАК Количество
ИЗ
    втДанные КАК втДанные
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            втОборот.Номенклатура КАК Номенклатура,
            втОборот.Склад КАК Склад,
            втОборот.Регистратор КАК Регистратор,
            втОборот.Количество КАК Количество,
            ВложенныйЗапрос.КоличествоНакопленное КАК КоличествоНакопленное,
            ВложенныйЗапрос.НПП КАК НПП
        ИЗ
            втОборот КАК втОборот
                ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                    втОборот.Номенклатура КАК Номенклатура,
                    втОборот.Склад КАК Склад,
                    втОборот.Регистратор КАК Регистратор,
                    СУММА(втОборот1.Количество) КАК КоличествоНакопленное,
                    СУММА(1) КАК НПП
                ИЗ
                    втОборот КАК втОборот
                        ВНУТРЕННЕЕ СОЕДИНЕНИЕ втОборот КАК втОборот1
                        ПО втОборот.Номенклатура = втОборот1.Номенклатура
                            И втОборот.Склад = втОборот1.Склад
                            И втОборот.РегистраторМоментВремени <= втОборот1.РегистраторМоментВремени
                
                СГРУППИРОВАТЬ ПО
                    втОборот.Номенклатура,
                    втОборот.Склад,
                    втОборот.Регистратор) КАК ВложенныйЗапрос
                ПО втОборот.Номенклатура = ВложенныйЗапрос.Номенклатура
                    И втОборот.Регистратор = ВложенныйЗапрос.Регистратор
                    И втОборот.Склад = ВложенныйЗапрос.Склад) КАК ВложенныйЗапрос
        ПО втДанные.Номенклатура = ВложенныйЗапрос.Номенклатура
            И втДанные.Склад = ВложенныйЗапрос.Склад
            И втДанные.КоличествоОстаток >= ВложенныйЗапрос.КоличествоНакопленное
   один я дАртаньян
 
9 - 11.03.18 - 12:49
+Там один вложенный запрос надо убрать.
   slnes
 
10 - 11.03.18 - 19:08
01.03.18 склад№1 поступил товар1 100 шт 
06.03.18 склад№1 поступил товар1 150 шт
08.03.18 склад№1 списан   товар1 50 шт

*склад№1, товар1, поступление от 01.03.18, остаток 50 штук, хранится 10 дней.
склад№1, товар1, поступление от 06.03.18, остаток 150 штук, хранится 5 дней.

не выводит строку помеченную *, вложенный запрос убирал, ковырял ковырял ничего не получается
 
 Рекламное место пустует
   один я дАртаньян
 
11 - 11.03.18 - 19:29
(10) ХЗ у меня все работает.

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

Из минусов разве, что только перемещения как поступления отображаются.
   slnes
 
12 - 16.03.18 - 15:50
Вопрос ещё актуален!

Результат дает, но не верный
например
Введем поступление и реализацию 
06.03.18 склад№1 поступил товар1 100 шт
08.03.18 склад№1 списан   товар1 50 шт
в отчете не будет товара1.

В (10) еще пример с с неверным результатом.

Т.е. если товар был списан частично, он не попадает в отчет.
   Buster007
 
13 - 16.03.18 - 16:42
Есть 3 стадии развития программиста:
1) все кодом
2) все в запросах
3) код + запросы
скоро дорастешь, осталось чуть-чуть )
   ILM
 
14 - 16.03.18 - 20:28
(13) 2 и 3 местами поменяйте )))
Самый писк, все запросом в СКД.
   один я дАртаньян
 
15 - 17.03.18 - 18:09
(12)> Вопрос ещё актуален!

Мой запрос должен работать. Если не работает разберись с ним.
   Vakhrin
 
16 - 17.03.18 - 20:44
Чего-то не понимаю я задачи... А типовой функционал списания по партиям в УПП по ФИФО не от "срока хранения" пляшет? Т.е. от даты документа образовавшего партию.
Или именно на конкретном складе надо учитывать срок хранения, включая перемещенные с других складов? )
   slnes
 
17 - 17.03.18 - 21:30
(15) разобрался, запрос работает после небольших испавлений
(16) прочитайте (6)
   slnes
 
18 - 18.03.18 - 08:28
Спасибо, (8) навело на решение.
Наверное специально с ошибками и увеличенный, запрос можно сократить втрое.
   один я дАртаньян
 
19 - 18.03.18 - 08:47
(17) > разобрался, запрос работает после небольших испавлений

В чем ошибка то?

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

Ты думаешь краткость запроса это плюс? Напрасно.

Иногда лучше добавить уровней вложенности, потому как не известно, что понадобится добавить.
   slnes
 
20 - 18.03.18 - 12:06
В последнем запросе
В начале
ВложенныйЗапрос.Количество - ВЫБОР
        КОГДА втДанные.КоличествоОстаток < ВложенныйЗапрос.КоличествоНакопленное
            ТОГДА ВложенныйЗапрос.КоличествоНакопленное - втДанные.КоличествоОстаток
        ИНАЧЕ 0
    КОНЕЦ КАК Количество

И середине

ПО втДанные.Номенклатура = ВложенныйЗапрос.Номенклатура
            И втДанные.Склад = ВложенныйЗапрос.Склад
            И  ВложенныйЗапрос.Количество - ВЫБОР
        КОГДА втДанные.КоличествоОстаток < ВложенныйЗапрос.КоличествоНакопленное
            ТОГДА ВложенныйЗапрос.КоличествоНакопленное - втДанные.КоличествоОстаток
        ИНАЧЕ 0
    КОНЕЦ > 0          

Тебе видней, я запрос самостоятельно составить не смог.


Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует