Cl3r1k_2010
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору День добрый, друзья! Помогите новичку с запросом. Имеется такой запрос в выводом. Код: ТабличныйДокумент = Новый ТабличныйДокумент; Макет = ПолучитьМакет("МенюРаскладка"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Ингредиенты.Ингредиент КАК Ингредиент, | Ингредиенты.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | ЕСТЬNULL(Ингредиенты.КоличествоИнгредиента, 0) КАК КоличествоИнгредиента, | Ингредиенты.Блюдо КАК Блюдо, | ЕСТЬNULL(Блюда.КоличествоПродукции, 0) КАК КоличествоБлюда, | пит_ПараметрыРецептур.Раскладка КАК Раскладка, | пит_ПараметрыРецептур.Выход КАК ВыходБлюда |ИЗ | (ВЫБРАТЬ | ВложенныйЗапрос.Ингредиент КАК Ингредиент, | ВложенныйЗапрос.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | СУММА(ВложенныйЗапрос.КоличествоИнгредиента) КАК КоличествоИнгредиента, | ВложенныйЗапрос.Блюдо КАК Блюдо, | ВложенныйЗапрос.Спецификация КАК Спецификация | ИЗ | (ВЫБРАТЬ | диет_МенюТребованиеИнгредиенты.Номенклатура КАК Ингредиент, | диет_МенюТребованиеИнгредиенты.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | диет_МенюТребованиеИнгредиенты.КоличествоПоФакту + диет_МенюТребованиеИнгредиенты.КоличествоКПриготовлению КАК КоличествоИнгредиента, | диет_МенюТребованиеИнгредиенты.Продукция КАК Блюдо, | диет_МенюТребованиеИнгредиенты.Спецификация КАК Спецификация | ИЗ | Документ.диет_МенюТребование.Ингредиенты КАК диет_МенюТребованиеИнгредиенты | ГДЕ | диет_МенюТребованиеИнгредиенты.Ссылка = &Ссылка | И диет_МенюТребованиеИнгредиенты.Продукция <> диет_МенюТребованиеИнгредиенты.Номенклатура | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | диет_МенюТребованиеАналоги.Аналог, | диет_МенюТребованиеАналоги.ЕдиницаИзмеренияАналога, | диет_МенюТребованиеАналоги.Количество, | диет_МенюТребованиеАналоги.Продукция, | диет_МенюТребованиеАналоги.Спецификация | ИЗ | Документ.диет_МенюТребование.Аналоги КАК диет_МенюТребованиеАналоги | ГДЕ | диет_МенюТребованиеАналоги.Ссылка = &Ссылка) КАК ВложенныйЗапрос | | СГРУППИРОВАТЬ ПО | ВложенныйЗапрос.Ингредиент, | ВложенныйЗапрос.ЕдиницаИзмерения, | ВложенныйЗапрос.Блюдо, | ВложенныйЗапрос.Спецификация) КАК Ингредиенты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | диет_МенюТребованиеИнгредиенты.Продукция КАК Продукция, | МАКСИМУМ(диет_МенюТребованиеИнгредиенты.КоличествоПродукции) КАК КоличествоПродукции, | диет_МенюТребованиеИнгредиенты.НомерСтроки КАК НомерСтроки, | диет_МенюТребованиеИнгредиенты.Спецификация КАК Спецификация | ИЗ | Документ.диет_МенюТребование.Ингредиенты КАК диет_МенюТребованиеИнгредиенты | ГДЕ | диет_МенюТребованиеИнгредиенты.Ссылка = &Ссылка | | СГРУППИРОВАТЬ ПО | диет_МенюТребованиеИнгредиенты.Продукция, | диет_МенюТребованиеИнгредиенты.НомерСтроки, | диет_МенюТребованиеИнгредиенты.Спецификация) КАК Блюда | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.пит_ПараметрыРецептур КАК пит_ПараметрыРецептур | ПО Блюда.Спецификация = пит_ПараметрыРецептур.Спецификация | ПО Ингредиенты.Блюдо = Блюда.Продукция | И Ингредиенты.Спецификация = Блюда.Спецификация | |УПОРЯДОЧИТЬ ПО | Блюда.НомерСтроки |ИТОГИ | МАКСИМУМ(КоличествоИнгредиента), | МАКСИМУМ(КоличествоБлюда), | МАКСИМУМ(ВыходБлюда) |ПО | Блюдо, | Раскладка, | Ингредиент, | ЕдиницаИзмерения"; Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Возврат ТабличныйДокумент; КонецЕсли; ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьСтрокаИнгредиент = Макет.ПолучитьОбласть("СтрокаИнгредиент"); ОбластьСтрокаБлюдо = Макет.ПолучитьОбласть("СтрокаБлюдо"); ОбластьПодвалНачало= Макет.ПолучитьОбласть("Подвал"); ОбластьЗаголовок.Параметры.КатегорияДовольствующихся = КатегорияДовольствующихся; ОбластьЗаголовок.Параметры.Организация = ОбщегоНазначения.ОписаниеОрганизации( ОбщегоНазначения.СведенияОЮрФизЛице( ОбщегоНазначения.ПолучитьСтруктурнуюЕдиницу( Организация, СтруктурноеПодразделение), Дата), "ПолноеНаименование,"); ОбластьЗаголовок.Параметры.ТекстЗаголовка = РаботаСДиалогами.СформироватьЗаголовокДокумента(СсылкаНаОбъект, "Меню-раскладка (" + ?(Дополнительный,"дополнительный)", "основной)"), глСписокПрефиксовУзлов); ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_МенюРаскладка"; // Вывод заголовка ТабличныйДокумент.Вывести(ОбластьЗаголовок); // Вывод строк ТабличныйДокумент.НачатьАвтогруппировкуСтрок(); ВыборкаПоБлюдам= РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Блюдо"); // Коэффициент пересчета на вес. ЕдиницаВеса = Константы.пит_ЕдиницаИзмеренияВеса.Получить(); ТаблицаИнгредиентов = Новый ТаблицаЗначений; ТаблицаИнгредиентов.Колонки.Добавить("НомерППНоменклатура"); ТаблицаИнгредиентов.Колонки.Добавить("Номенклатура"); ТаблицаИнгредиентов.Колонки.Добавить("ЕдиницаИзмерения"); ТаблицаИнгредиентов.Колонки.Добавить("ОбщееКоличество"); ТаблицаИнгредиентов.Колонки.Добавить("КоличествоНаЕдиницу"); НомерПП = 0; Пока ВыборкаПоБлюдам.Следующий() Цикл ВыборкаПоРаскладкам = ВыборкаПоБлюдам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Раскладка"); Пока ВыборкаПоРаскладкам.Следующий() Цикл НомерПП = НомерПП + 1; КоличествоБлюда = ВыборкаПоБлюдам.КоличествоБлюда; ОбластьСтрокаБлюдо.Параметры.Номенклатура = ВыборкаПоРаскладкам.Блюдо; ОбластьСтрокаБлюдо.Параметры.Раскладка = ВыборкаПоРаскладкам.Раскладка; ОбластьСтрокаБлюдо.Параметры.ЕдиницаИзмерения = ВыборкаПоРаскладкам.ЕдиницаИзмерения; ОбластьСтрокаБлюдо.Параметры.КоличествоНаЕдиницу = 1; ОбластьСтрокаБлюдо.Параметры.ОбщееКоличество = КоличествоБлюда; ОбластьСтрокаБлюдо.Параметры.НомерПП = НомерПП; НомерППНоменклатура = 0; ТаблицаИнгредиентов.Очистить(); ВыборкаПоИнгредиентам = ВыборкаПоРаскладкам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Ингредиент"); Пока ВыборкаПоИнгредиентам.Следующий() Цикл ВыборкаПоЕдиницам = ВыборкаПоИнгредиентам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ЕдиницаИзмерения"); Пока ВыборкаПоЕдиницам.Следующий() Цикл НомерППНоменклатура = НомерППНоменклатура + 1; НоваяСтрока = ТаблицаИнгредиентов.Добавить(); НоваяСтрока.НомерППНоменклатура = Строка(НомерПП) + "." + Строка(НомерППНоменклатура); НоваяСтрока.Номенклатура = ВыборкаПоЕдиницам.Ингредиент; НоваяСтрока.ЕдиницаИзмерения = ВыборкаПоЕдиницам.ЕдиницаИзмерения; НоваяСтрока.ОбщееКоличество = ВыборкаПоЕдиницам.КоличествоИнгредиента; КоличествоНаЕдиницу = ?(КоличествоБлюда = 0, 0, ВыборкаПоЕдиницам.КоличествоИнгредиента/КоличествоБлюда); НоваяСтрока.КоличествоНаЕдиницу = КоличествоНаЕдиницу; КоэффициентПересчетаВГраммы = пит_ОбщегоНазначения.ПолучитьКоэффициентПересчета(ВыборкаПоЕдиницам.Ингредиент, ВыборкаПоЕдиницам.ЕдиницаИзмерения, ЕдиницаВеса); КонецЦикла; КонецЦикла; ОбластьСтрокаБлюдо.Параметры.Выход = ВыборкаПоРаскладкам.ВыходБлюда; ТабличныйДокумент.Вывести(ОбластьСтрокаБлюдо, 1); Для Каждого ТекСтрока Из ТаблицаИнгредиентов Цикл ОбластьСтрокаИнгредиент.Параметры.Заполнить(ТекСтрока); ТабличныйДокумент.Вывести(ОбластьСтрокаИнгредиент, 2); КонецЦикла; КонецЦикла; КонецЦикла; ТабличныйДокумент.ЗакончитьАвтогруппировкуСтрок(); // Вывод подвала ТабличныйДокумент.Вывести(ОбластьПодвалНачало); ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет; Возврат ТабличныйДокумент; | Необходимо в запрос добавить данные из РегистрСведений.ЦеныНоменклатуры.СрезПоследних по номенклатурам. Но как не бился, не выходит. Добавил поля в печатной форме и на данный момент сделал так. Но цен все равно нет. Код: Макет = ПолучитьМакет("МенюРаскладка"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Ингредиенты.Ингредиент КАК Ингредиент, | Ингредиенты.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | ЕСТЬNULL(Ингредиенты.КоличествоИнгредиента, 0) КАК КоличествоИнгредиента, | Ингредиенты.Блюдо КАК Блюдо, | ЕСТЬNULL(Блюда.КоличествоПродукции, 0) КАК КоличествоБлюда, | пит_ПараметрыРецептур.Раскладка КАК Раскладка, | пит_ПараметрыРецептур.Выход КАК ВыходБлюда, | ЦеныНоменклатурыСрезПоследних.Цена КАК Цена |ИЗ | (ВЫБРАТЬ | ВложенныйЗапрос.Ингредиент КАК Ингредиент, | ВложенныйЗапрос.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | СУММА(ВложенныйЗапрос.КоличествоИнгредиента) КАК КоличествоИнгредиента, | ВложенныйЗапрос.Блюдо КАК Блюдо, | ВложенныйЗапрос.Спецификация КАК Спецификация | ИЗ | (ВЫБРАТЬ | диет_МенюТребованиеИнгредиенты.Номенклатура КАК Ингредиент, | диет_МенюТребованиеИнгредиенты.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | диет_МенюТребованиеИнгредиенты.КоличествоПоФакту + диет_МенюТребованиеИнгредиенты.КоличествоКПриготовлению КАК КоличествоИнгредиента, | диет_МенюТребованиеИнгредиенты.Продукция КАК Блюдо, | диет_МенюТребованиеИнгредиенты.Спецификация КАК Спецификация | ИЗ | Документ.диет_МенюТребование.Ингредиенты КАК диет_МенюТребованиеИнгредиенты | ГДЕ | диет_МенюТребованиеИнгредиенты.Ссылка = &Ссылка | И диет_МенюТребованиеИнгредиенты.Продукция <> диет_МенюТребованиеИнгредиенты.Номенклатура | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | диет_МенюТребованиеАналоги.Аналог, | диет_МенюТребованиеАналоги.ЕдиницаИзмеренияАналога, | диет_МенюТребованиеАналоги.Количество, | диет_МенюТребованиеАналоги.Продукция, | диет_МенюТребованиеАналоги.Спецификация | ИЗ | Документ.диет_МенюТребование.Аналоги КАК диет_МенюТребованиеАналоги | ГДЕ | диет_МенюТребованиеАналоги.Ссылка = &Ссылка) КАК ВложенныйЗапрос | | СГРУППИРОВАТЬ ПО | ВложенныйЗапрос.Ингредиент, | ВложенныйЗапрос.ЕдиницаИзмерения, | ВложенныйЗапрос.Блюдо, | ВложенныйЗапрос.Спецификация) КАК Ингредиенты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | диет_МенюТребованиеИнгредиенты.Продукция КАК Продукция, | МАКСИМУМ(диет_МенюТребованиеИнгредиенты.КоличествоПродукции) КАК КоличествоПродукции, | диет_МенюТребованиеИнгредиенты.НомерСтроки КАК НомерСтроки, | диет_МенюТребованиеИнгредиенты.Спецификация КАК Спецификация | ИЗ | Документ.диет_МенюТребование.Ингредиенты КАК диет_МенюТребованиеИнгредиенты | ГДЕ | диет_МенюТребованиеИнгредиенты.Ссылка = &Ссылка | | СГРУППИРОВАТЬ ПО | диет_МенюТребованиеИнгредиенты.Продукция, | диет_МенюТребованиеИнгредиенты.НомерСтроки, | диет_МенюТребованиеИнгредиенты.Спецификация) КАК Блюда | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.пит_ПараметрыРецептур КАК пит_ПараметрыРецептур | ПО Блюда.Спецификация = пит_ПараметрыРецептур.Спецификация | ПО Ингредиенты.Спецификация = Блюда.Спецификация | И Ингредиенты.Блюдо = Блюда.Продукция | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних | ПО Ингредиенты.Ингредиент = ЦеныНоменклатурыСрезПоследних.Номенклатура | |УПОРЯДОЧИТЬ ПО | Блюда.НомерСтроки |ИТОГИ | МАКСИМУМ(КоличествоИнгредиента), | МАКСИМУМ(КоличествоБлюда), | МАКСИМУМ(ВыходБлюда), | МАКСИМУМ(Цена) |ПО | Блюдо, | Раскладка, | Ингредиент, | Цена, | ЕдиницаИзмерения"; Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Возврат ТабличныйДокумент; КонецЕсли; ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьСтрокаИнгредиент = Макет.ПолучитьОбласть("СтрокаИнгредиент"); ОбластьСтрокаБлюдо = Макет.ПолучитьОбласть("СтрокаБлюдо"); ОбластьПодвалНачало= Макет.ПолучитьОбласть("Подвал"); ОбластьЗаголовок.Параметры.КатегорияДовольствующихся = КатегорияДовольствующихся; ОбластьЗаголовок.Параметры.Организация = ОбщегоНазначения.ОписаниеОрганизации( ОбщегоНазначения.СведенияОЮрФизЛице( ОбщегоНазначения.ПолучитьСтруктурнуюЕдиницу( Организация, СтруктурноеПодразделение), Дата), "ПолноеНаименование,"); ОбластьЗаголовок.Параметры.ТекстЗаголовка = РаботаСДиалогами.СформироватьЗаголовокДокумента(СсылкаНаОбъект, "Меню-раскладка (" + ?(Дополнительный,"дополнительный)", "основной)"), глСписокПрефиксовУзлов); ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_МенюРаскладка"; // Вывод заголовка ТабличныйДокумент.Вывести(ОбластьЗаголовок); // Вывод строк ТабличныйДокумент.НачатьАвтогруппировкуСтрок(); ВыборкаПоБлюдам= РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Блюдо"); // Коэффициент пересчета на вес. ЕдиницаВеса = Константы.пит_ЕдиницаИзмеренияВеса.Получить(); ТаблицаИнгредиентов = Новый ТаблицаЗначений; ТаблицаИнгредиентов.Колонки.Добавить("НомерППНоменклатура"); ТаблицаИнгредиентов.Колонки.Добавить("Номенклатура"); ТаблицаИнгредиентов.Колонки.Добавить("ЕдиницаИзмерения"); ТаблицаИнгредиентов.Колонки.Добавить("ОбщееКоличество"); ТаблицаИнгредиентов.Колонки.Добавить("КоличествоНаЕдиницу"); ТаблицаИнгредиентов.Колонки.Добавить("Цена"); НомерПП = 0; Пока ВыборкаПоБлюдам.Следующий() Цикл ВыборкаПоРаскладкам = ВыборкаПоБлюдам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Раскладка"); Пока ВыборкаПоРаскладкам.Следующий() Цикл НомерПП = НомерПП + 1; КоличествоБлюда = ВыборкаПоБлюдам.КоличествоБлюда; ОбластьСтрокаБлюдо.Параметры.Номенклатура = ВыборкаПоРаскладкам.Блюдо; Сообщить(ВыборкаПоРаскладкам.Цена); ОбластьСтрокаБлюдо.Параметры.Раскладка = ВыборкаПоРаскладкам.Раскладка; ОбластьСтрокаБлюдо.Параметры.ЕдиницаИзмерения = ВыборкаПоРаскладкам.ЕдиницаИзмерения; ОбластьСтрокаБлюдо.Параметры.КоличествоНаЕдиницу = 1; ОбластьСтрокаБлюдо.Параметры.ОбщееКоличество = КоличествоБлюда; ОбластьСтрокаБлюдо.Параметры.НомерПП = НомерПП; НомерППНоменклатура = 0; ТаблицаИнгредиентов.Очистить(); ВыборкаПоИнгредиентам = ВыборкаПоРаскладкам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Ингредиент"); Пока ВыборкаПоИнгредиентам.Следующий() Цикл ВыборкаПоЕдиницам = ВыборкаПоИнгредиентам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ЕдиницаИзмерения"); Пока ВыборкаПоЕдиницам.Следующий() Цикл НомерППНоменклатура = НомерППНоменклатура + 1; Сообщить(ВыборкаПоЕдиницам.Цена); НоваяСтрока = ТаблицаИнгредиентов.Добавить(); НоваяСтрока.НомерППНоменклатура = Строка(НомерПП) + "." + Строка(НомерППНоменклатура); НоваяСтрока.Номенклатура = ВыборкаПоЕдиницам.Ингредиент; НоваяСтрока.ЕдиницаИзмерения = ВыборкаПоЕдиницам.ЕдиницаИзмерения; НоваяСтрока.ОбщееКоличество = ВыборкаПоЕдиницам.КоличествоИнгредиента; КоличествоНаЕдиницу = ?(КоличествоБлюда = 0, 0, ВыборкаПоЕдиницам.КоличествоИнгредиента/КоличествоБлюда); НоваяСтрока.КоличествоНаЕдиницу = КоличествоНаЕдиницу; КоэффициентПересчетаВГраммы = пит_ОбщегоНазначения.ПолучитьКоэффициентПересчета(ВыборкаПоЕдиницам.Ингредиент, ВыборкаПоЕдиницам.ЕдиницаИзмерения, ЕдиницаВеса); НоваяСтрока.Цена = ВыборкаПоЕдиницам.Цена; КонецЦикла; КонецЦикла; ОбластьСтрокаБлюдо.Параметры.Выход = ВыборкаПоРаскладкам.ВыходБлюда; ТабличныйДокумент.Вывести(ОбластьСтрокаБлюдо, 1); Для Каждого ТекСтрока Из ТаблицаИнгредиентов Цикл ОбластьСтрокаИнгредиент.Параметры.Заполнить(ТекСтрока); ТабличныйДокумент.Вывести(ОбластьСтрокаИнгредиент, 2); КонецЦикла; КонецЦикла; КонецЦикла; | То ли с выводом проблема, то ли с запросом, а может и там и там. | Всего записей: 96 | Зарегистр. 13-02-2010 | Отправлено: 14:29 16-06-2016 | Исправлено: Cl3r1k_2010, 14:34 16-06-2016 |
|