|
Нужны мысли по составлению запроса | ☑ | ||
---|---|---|---|---|
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/количество-дней-когда-товар-был-на-скл/
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |