Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
23 мая 2022, 11:58

Помогите с запросом

Автор nikolka707, 25 фев 2022, 09:59

0 Пользователей и 1 гость просматривают эту тему.

nikolka707

Доброго времени суток!
Помогите, пожалуйста, с запросом.. направьте в нужное русло
есть документ Меню с табличной частью: Блюдо, Количество
есть документ Калькуляция на Блюдо с табличной частью: Продукты, Количество
справочник Блюда разделяются на блюда и полуфабрикаты, у полуфабриката стоит отметка, что это полуфабрикат.
в табличной части документа Калькуляция может быть так же Полуфабрикат. На полуфабрикат также создается документ Калькуляция.
Например
Калькуляция на Пироги
Тесто
Фарш
Растительное масло
Калькуляция на Фарш
Капуста
Сахар
Соль
Калькуляция на тесто
Мука
Вода
Дрожжи
Соль
Сахар


Подскажите, как сформировать запрос, чтобы вывести расход продуктов на блюда, указанные в  меню. есть такой момент, что у полуфабриката в калькуляции может быть тоже полуфабрикат в составе

LexaK

nikolka707, вообще как бы не принято строить отчеты по данным документов!
как правило необходимо использовать Регистры! (Накопления, Сведений, Бухгалтерии)
спишем на то что это тестовое задание.
так получается что в запросах невозможно создавать рекурсиные констукции, необходимо понимать, что для каждой расшифровки Полуфабриката нужен свой подзапрос,
поэтому перед решением данной задачи необходимо проанализировать "вложенность" полуфабрикатов, так же необходимо проверить "правильность" данных,
отсутствие дублирования, зацикливания и т.д.
вот примерный запрос (необходимо подставить свои наименования документов, ТЧ и др. реквизитов), 
Внимание! перед использованием этого запроса, его необходимо проанализировать и протестировать! (возможны ошибки и опечатки)
выбрать
докМеню.Блюдо,
ЕстьNull(докКалк.Продукт,докМеню.Блюдо) как Продукт,
ЕстьNull(докКалк.Количество,1) * докМеню.Количество как Количество
поместить таб0
из Документ.Меню.Состав докМеню
левое соединение Документ.Калькуляция.Состав как докКалк
по докМеню.Блюдо = докКалк.ссылка.Блюдо
и докКалк.ссылка.Проведен
где докМеню.ссылка = &СсылкаМеню
;

Выбрать
докМеню.Блюдо,
ЕстьNull(докКалк.Продукт,докМеню.Блюдо) как Продукт,
ЕстьNull(докКалк.Количество,1) * докМеню.Количество как Количество
поместить таб1
из таб0 докМеню
левое соединение Документ.Калькуляция.Состав как докКалк
по докМеню.Блюдо = докКалк.ссылка.Блюдо
и докКалк.ссылка.Проведен
;

Выбрать
докМеню.Блюдо,
ЕстьNull(докКалк.Продукт,докМеню.Продукт) как Продукт,
ЕстьNull(докКалк.Количество,1) * докМеню.Количество как Количество
поместить таб2
из таб1 докМеню
левое соединение Документ.Калькуляция.Состав как докКалк
по докМеню.Продукт = докКалк.ссылка.Блюдо
и докКалк.ссылка.Проведен
;
//и так далее до максимальной вложенности Полуфабрикатов

выбрать
таб.Блюдо,
таб.Продукт,
Сумма(таб.Количество) как Количество
из Таб2 таб
сгруппировать по
таб.Блюдо,
таб.Продукт

ответ Понравился? (в смысле пригодился?)

nikolka707

LexaK, благодарю за развернутый ответ и запрос.
но в результате предложенного вами запроса, у меня получается таблица, в которой перечислены ингредиенты только блюд, в составе которых есть полуфабрикаты.

LexaK

nikolka707, чуть-чуть попилите запрос, у вас и должна получиться таблица
Блюда, Продукты, Количество - как раз то что вам надо расход продуктов на каждое блюдо
ответ Понравился? (в смысле пригодился?)

Теги:

Похожие темы (5)

70820

Ответов: 3
Просмотров: 785

63897

Ответов: 2
Просмотров: 1506

77460

Ответов: 4
Просмотров: 142

Рейтинг@Mail.ru Rambler's Top100

Поиск