Раздел находится в разработке. Здесь будут размещены интересные и полезные данные , касающиеся данной темы .
Для начала помещу здесь маленькую задачку . Когда смотришь на решение — все просто. Но когда делаешь , то тонкости есть.
Итак , задачка , которую можно решить в консоли запросов 1с.
Есть следующая таблица:
Товар Дата КолвоЗаказанногоНаДату ТекОстаток ======================================================== Торты 04.11.2012 3 8 Торты 05.11.2012 4 8 Торты 06.11.2012 5 8 Конфеты 04.11.2012 2 6 Конфеты 05.11.2012 4 6 Пряники 04.11.2012 5 9 Пряники 05.11.2012 2 9 Пряники 06.11.2012 1 9 ...
Вопрос. Как одним запросом получить по каждому товару кол-во дней , на которое хватит текущего остатка склада, чтобы удовлетворить заказы на эти дни ? (можно понятно просто перебрать выборку — но надо запросом).
т.е. по этим приведенным данным мы должны получить след. табличку:
==================== Торты 2 Конфеты 2 Пряники 3 ====================
Если кто-то захочет попробовать решить в консоли данную задачку , вот подготовленные данные для консоли ,
чтобы самому не набирать (а далее , после этого запроса , привожу запрос-ответ, который решает данную задачку).
Запрос для формирования исходных данных.
==========================================================
ВЫБРАТЬ
«Торты» КАК ТОВАР,
«04.11.2012» КАК ДатаЗаказов, 3 КАК КолвоЗаказовНаДату, 8 КАК ТекОстаток
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
«Торты»,
«05.11.2012», 4, 8
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
«Торты»,
«06.11.2012», 5, 8
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
«Конфеты»,
«04.11.2012», 2, 6
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
«Конфеты»,
«05.11.2012», 4, 6
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
«Пряники»,
«04.11.2012», 5, 9
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
«Пряники»,
«05.11.2012», 2, 9
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
«Пряники»,
«06.11.2012», 1, 9
=========================================================
А вот конечный запрос-ответ , решающий данную проблему:
=======================================================
ВЫБРАТЬ
"Торты" КАК ТОВАР,
"04.11.2012" КАК ДатаЗаказов,
3 КАК КолвоЗаказовНаДату,
8 КАК ТекОстаток
ПОМЕСТИТЬ ИсхТабл
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Торты",
"05.11.2012",
4,
8
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Торты",
"06.11.2012",
5,
8
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Конфеты",
"04.11.2012",
2,
6
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Конфеты",
"05.11.2012",
4,
6
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Пряники",
"04.11.2012",
5,
9
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Пряники",
"05.11.2012",
2,
9
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Пряники",
"06.11.2012",
1,
9 ;
///////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1000
Т1.Товар,
Т1.ДатаЗаказов,
Т1.КолвоЗаказовНаДату,
Т1.ТекОстаток,
СУММА(Т2.КолвоЗаказовНаДату) КАК НарастИтог
ПОМЕСТИТЬ ТаблНарастИтог
ИЗ
ИсхТабл КАК Т1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИсхТабл КАК Т2
ПО (Т1.Товар=Т2.Товар) И (Т1.ДатаЗаказов>=Т2.ДатаЗаказов)
СГРУППИРОВАТЬ ПО
Т1.Товар,
Т1.ДатаЗаказов,
Т1.КолвоЗаказовНаДату,
Т1.ТекОстаток
УПОРЯДОЧИТЬ ПО
Т1.Товар,
Т1.ДатаЗаказов
;
///////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Товар,
КОЛИЧЕСТВО(ДатаЗаказов) КАК Текущего_Остатка_Хватит_На_Столько_Дней
ИЗ
ТаблНарастИтог
ГДЕ
ТекОстаток>=НарастИтог
СГРУППИРОВАТЬ ПО
Товар
УПОРЯДОЧИТЬ ПО
Товар
|