|   |   | 
| 
 | Нужны мысли по составлению запроса | ☑ | ||
|---|---|---|---|---|
| 0
    
        happysan 20.06.22✎ 12:54 | 
        Существует регистр накопления "Остатки Номенклатуры" (структура ниже).
 Наполнение регистра: Период Регистратор Номенклатура Склад Количество 31.01.2020 01:00:00 Приходная накладная ПН-0001 Лаваш Сочи 100,000 01.01.2021 00:00:01 Приходная накладная ПН-0001 Хлеб Радужный 100,000 03.01.2021 15:00:00 Расходная накладная РН-0001 Хлеб Радужный 10,000 03.01.2021 16:00:00 Приходная накладная ПН-0002 Лаваш Радужный 3,000 04.01.2021 17:00:00 Расходная накладная РН-0002 Хлеб Радужный 90,000 06.01.2021 01:00:00 Приходная накладная ПН-0003 Хлеб Сочи 50,000 07.01.2021 14:00:00 Приходная накладная ПН-0004 Хлеб Радужный 90,000 07.01.2021 14:30:00 Расходная накладная РН-0003 Лаваш Радужный 1,000 08.01.2021 17:00:00 Расходная накладная РН-0004 Хлеб Радужный 90,000 10.01.2021 01:00:00 Расходная накладная РН-0005 Хлеб Сочи 50,000 11.01.2021 14:00:00 Приходная накладная ПН-0005 Хлеб Радужный 150,000 Суть задачи: Требуется вычислить количество дней присутствия товаров на складах в разрезе склад/номенклатура за период с 01.01.2021 по 10.01.2021 (сколько дней каждый товар, присутствовавший за заданный интервал на складах, находился на них). Днем присутствия считается любой день из периода, в который товар находился на складе, без ограничения полный день или часть дня. Выходные данные должны содержать склад, номенклатуру, количество дней присутствия на складе. Ограничения: 1. Использование платформы 1С:Предприятие 8.3 любого релиза 2. Решение должно быть выполнено одним запросом, без циклов в коде. Допускается и приветствуется использование временных таблиц. Допускается использование дополнительных источников данных, указать в решении каких. 3. СКД в решении использоваться не должен 4. Оценка решения производится с точки зрения производительности на больших объемах данных. Структура регистра «Остатки Номенклатуры»: Регистраторы: Приходная накладная (вид движения приход), Расходная накладная (вид движения расход) Измерения: Номенклатура (Справочник.Номенклатура), Склад (Справочник.Склады). Ресурсы: Количество (Число(15,3)). * варианты со срезом (детализацией) регистра по периоду менее 1 дня рассматриваться в качестве решения не будут, как нерабочие на больших объемах данных. | |||
| 1
    
        DCKiller 20.06.22✎ 13:14 | 
        2500 р.     | |||
| 2
    
        Homer 20.06.22✎ 14:12 | 
        (0) ВЫ же вроде программист с богатым отпитом работы и такую простую задачу. Ну как то не серьезно))
 v8: OFF:Какой потолок зп в столице для программиста 1С с богатым опытом работы? | |||
| 3
    
        mikecool 20.06.22✎ 14:36 | 
        (0) "* варианты со срезом (детализацией) регистра по периоду менее 1 дня рассматриваться в качестве решения не будут, как нерабочие на больших объемах данных."
 ты еще и условия ставить будешь? )) | |||
| 4
    
        happysan 20.06.22✎ 16:05 | 
        (0), (1) - у меня уже есть решение, интересны параллельные решения!
 (3) - это не мои условия. | |||
| 5
    
        arsik гуру 20.06.22✎ 16:09 | 
        (0) Ну так через виртуальную таблицу ОстаткиИОбороты     | |||
| 6
    
        arsik гуру 20.06.22✎ 16:12 | 
        (2) :) Да уж.     | |||
| 7
    
        Мимохожий Однако 20.06.22✎ 16:12 | 
        (4) Представь своё решение и сделай голосовалку.     | |||
| 8
    
        Zapal 20.06.22✎ 16:24 | 
        предлагаю скинуться товарищу из (1) 
 только подозреваю что за один час он не управится | |||
| 9
    
        happysan 20.06.22✎ 16:24 | 
        (5) Само собой)     | |||
| 10
    
        Галахад гуру 20.06.22✎ 16:24 | 
        Тестовое задание? Интересно на какую з\п.     | |||
| 11
    
        happysan 20.06.22✎ 16:24 | 
        (8) ))))     | |||
| 12
    
        RomanYS 20.06.22✎ 16:27 | 
        прикольная задачка     | |||
| 13
    
        arsik гуру 20.06.22✎ 16:31 | 
        Да вроде все просто. Нужно найти отрезки времени когда товар в наличии - это 1 запрос, посчитать разницу - это второй.     | |||
| 14
    
        happysan 20.06.22✎ 16:42 | 
        (13) Этот вариант использовал.     | |||
| 15
    
        RomanYS 20.06.22✎ 16:51 | 
        ВЫБРАТЬ
 ОстаткиИОбороты.Склад, ОстаткиИОбороты.Номенклатура, МИНИМУМ(ЕСТЬNULL(Обороты.Период, &Д2)) КАК ПериодПо, ОстаткиИОбороты.Период КАК ПериодС, ОстаткиИОбороты.КоличествоКонечныйОстаток ПОМЕСТИТЬ ВТ ИЗ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&Д1, &Д2, День, , ) КАК ОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Обороты(&Д1, &Д2, День, ) КАК Обороты ПО ОстаткиИОбороты.Период < Обороты.Период И ОстаткиИОбороты.Номенклатура = Обороты.Номенклатура И ОстаткиИОбороты.Склад = Обороты.Склад СГРУППИРОВАТЬ ПО ОстаткиИОбороты.Склад, ОстаткиИОбороты.Номенклатура, ОстаткиИОбороты.КоличествоКонечныйОстаток, ОстаткиИОбороты.Период ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ.Склад КАК Склад, ПРЕДСТАВЛЕНИЕ(ВТ.Склад), ВТ.Номенклатура КАК Номенклатура, ПРЕДСТАВЛЕНИЕ(ВТ.Номенклатура), ВТ.ПериодПо, ВТ.ПериодС, ВТ.КоличествоКонечныйОстаток, ВЫБОР КОГДА ВТ.КоличествоКонечныйОстаток = 0 ИЛИ РАЗНОСТЬДАТ(ВТ.ПериодС, ВТ.ПериодПо, ДЕНЬ) = 0 ТОГДА 1 ИНАЧЕ РАЗНОСТЬДАТ(ВТ.ПериодС, ВТ.ПериодПо, ДЕНЬ) КОНЕЦ КАК Дней ИЗ ВТ КАК ВТ ИТОГИ СУММА(Дней) ПО Склад, Номенклатура | |||
| 16
    
        happysan 20.06.22✎ 17:14 | 
        (15) Спасибо. Удалось проверить?     | |||
| 17
    
        RomanYS 20.06.22✎ 18:01 | 
        (16) Да. Вот этот кусок " ИЛИ РАЗНОСТЬДАТ(ВТ.ПериодС, ВТ.ПериодПо, ДЕНЬ) = 0" костылем выглядит, его ты объяснить не можешь без понимания)     | |||
| 18
    
        Маленький Вопросик 20.06.22✎ 18:44 | 
        (18) Запрос твой - полная ерунда, не учитывает "отрицательные остатки", не видит остатки товара на складе, если остатки вне выбранного периода     | |||
| 19
    
        Маленький Вопросик 20.06.22✎ 18:47 | 
        тут можно обойтись одним регистром остатки     | |||
| 20
    
        Immortal 20.06.22✎ 18:50 | 
        Коллега открыл для себя запрос нарастающим итогом с условием и очень за себя рад=)     | |||
| 21
    
        RomanYS 20.06.22✎ 18:52 | 
        (18) про отрицательные - согласен, считает что остаток есть (и в это есть какая-то логика:))))
 Период учтен строго. (19) Так его два раза брать или в ВТ засовывать. Предполагаю, что мой вариант оптимальнее | |||
| 22
    
        php5 20.06.22✎ 18:52 | ||||
| 23
    
        Маленький Вопросик 20.06.22✎ 18:55 | 
        (21) ну как для гимнастики извилин - сойдет.     | |||
| 24
    
        happysan 20.06.22✎ 21:31 | 
        (22) Этот вариант я давно видел, только вот здесь: http://www.gilev.ru/количество-дней-когда-товар-был-на-скл/     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |