Раздел находится в разработке. Здесь будут размещены интересные и полезные данные , касающиеся данной темы .
Для начала помещу здесь маленькую задачку . Когда смотришь на решение — все просто. Но когда делаешь , то тонкости есть.
Итак , задачка , которую можно решить в консоли запросов 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.ДатаЗаказов ; /////////////////////////////////////////////////////////////////// ВЫБРАТЬ Товар, КОЛИЧЕСТВО(ДатаЗаказов) КАК Текущего_Остатка_Хватит_На_Столько_Дней ИЗ ТаблНарастИтог ГДЕ ТекОстаток>=НарастИтог СГРУППИРОВАТЬ ПО Товар УПОРЯДОЧИТЬ ПО Товар |