Имя: Пароль:
1C
 
Вопрос по запросу
0 Chebchic1
 
24.06.26
10:47
Привет всем.
Подскажите, есть УТ11.5 пости последней версии, в ней регистр накопления Закупки.
Приобретали номенклатуру1 много раз, например - 22 с разным колвом.
В наличии по номенклатуре1 сейчас - 5 штук
Нужно взять запросом из Закупок цены покупки последних пяти штук.
Просится вложенный цикл/вложенный запрос, но как ему сказать в запросе где остановиться?
1 maxab72
 
24.06.26
10:56
а по партиям учет ведете?
2 Chebchic1
 
24.06.26
10:56
нет
3 Chebchic1
 
24.06.26
10:56
характеристики и серии отключены
4 Ненавижу 1С
 
гуру
24.06.26
10:59
(0) то есть вы хотите себестоимость последних 5 штук, но ФИФО нет? а вы проказники
Можно "на лету" конечно, но такое
5 Ненавижу 1С
 
гуру
24.06.26
11:00
переделать под себя
FIFO в запросе
6 Chebchic1
 
24.06.26
17:26
по образу и подобию получил вот такой запрос:
ВЫБРАТЬ
    ВложенныйЗапрос.Ссылка КАК Ссылка,
    ВложенныйЗапрос.Количество КАК Количество,
    ВЫБОР
        КОГДА ВложенныйЗапрос.КоличествоИтог <= &Колво
            ТОГДА ВложенныйЗапрос.Количество
        ИНАЧЕ ВложенныйЗапрос.Количество + &Колво - ВложенныйЗапрос.КоличествоИтог
    КОНЕЦ КАК Колво,
    ВложенныйЗапрос.Номенклатура КАК Номенклатура,
    ВложенныйЗапрос.Цена КАК ЦенаПокупки
ИЗ
    (ВЫБРАТЬ
        Док.Ссылка КАК Ссылка,
        Док.Количество КАК Количество,
        СУММА(Док1.Количество) КАК КоличествоИтог,
        Док.Номенклатура КАК Номенклатура,
        Док.Цена КАК Цена
    ИЗ
        Документ.ПриобретениеТоваровУслуг.Товары КАК Док
            ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриобретениеТоваровУслуг.Товары КАК Док1
            ПО Док.Ссылка.МоментВремени >= Док1.Ссылка.МоментВремени
                И Док.Номенклатура = Док1.Номенклатура
    
    СГРУППИРОВАТЬ ПО
        Док.Ссылка,
        Док.Количество,
        Док.Номенклатура,
        Док.Цена) КАК ВложенныйЗапрос
ГДЕ
    ВложенныйЗапрос.КоличествоИтог - ВложенныйЗапрос.Количество < &Колво

УПОРЯДОЧИТЬ ПО
    ВложенныйЗапрос.Ссылка.МоментВремени убыв
7 Chebchic1
 
24.06.26
17:27
но в составе набора данных - не работает
8 Chebchic1
 
24.06.26
17:27
ну точнее ЦенаПокупки = 0 везде
9 toypaul
 
гуру
24.06.26
18:44
(7) а не в составе набора?
10 maxab72
 
24.06.26
19:36
(6) Ну, я бы сказал, что и не должно работать. Идея ФИФо в запросе такая:
1. Получаем таблицу1: Количество; Дата прихода
2. Суммируем и получаем Общий приход.
3. Из Общего прихода вычитаем Остаток и получаем Расход.
4. Соединяем таблицу1 с самой собой по Дата прихода <= Дата прихода и суммируем
5. Вычитаем из каждой строки прихода из суммы более ранних приходов Расход, получаем Разницу.
6. Отбрасываем все минусы в Разнице. А где не минусы, берем минимум между Количеством и Разницей. Получаем распределение остатка по приходам.

Пример: было три прихода:
Приход 5 (последний)
Приход 7
Приход 8 (первый)

Остаток 6, значит Расход 14.

Суммируем приходы п. 4
Приход 5  8+7+5 = 20
Приход 7  8+7 = 15
Приход 8  8

Вычитаем расход:
Приход 5  20 - 14 = 6
Приход 7  15 - 14 = 1
Приход 8  8 - 14 = -6

Проверяем на минусы и минимум

Приход 5  Мин(5, 6) = 5
Приход 7  Мин (7, 1) = 1
Приход 8  0

итого распределение остатка:
Приход 5  5
Приход 7  1
Программист всегда исправляет последнюю ошибку.