Имя: Пароль:
1C
1С v8
Запрос для печати
0 Enigrade
 
03.06.13
15:34
выф
1 Kreont
 
03.06.13
15:36
куда и чего?
2 Enigrade
 
03.06.13
15:42
Здравствуйте! Помогите пожалуйста сделать отчёт)
У меня есть документ Меню и справочник номенклатура.
В документе Меню 2 таб. части. В 1ю таблицу я указываю название блюда, а во вторую таблицу должны выводиться ингредиенты, которые указаны в номенклатуре. Я это организовал таким образом:
Ингредиенты.Загрузить(ТекСтрока.Блюдо.ТЧ1.Выгрузить());
Он выводит норм, но когда мне нужно распечатать это меню, он вторую таблицу печатает только для одного блюда(
Пытаюсь сделать через запрос, но не могу составить, поможете?) плззз руки опускаются)
3 salvator
 
03.06.13
15:45
Показывай, что есть.
4 mikecool
 
03.06.13
15:46
(2) ну ты пару раз руки опусти, потом помой и выкладывай что получается
5 Enigrade
 
03.06.13
15:47
Вот такой запрос делал, но он мне фигню какую то выводит , пишет в в каждом поле "Таблица значений"
     Запрос = Новый Запрос;
Запрос.Текст =    
   "ВЫБРАТЬ
   |    Меню.Блюда.(
   |        Ссылка,
   |        НомерСтроки,
   |        Блюдо
   |    ),
   |    Номенклатура.ТЧ1.(
   |        Ссылка,
   |        НомерСтроки,
   |        Сырьё,
   |        ЕИ,
   |        Количество
   |    )
   |ИЗ
   |    Документ.Меню КАК Меню
   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
   |        ПО Меню.Блюда.Блюдо = Номенклатура.ТЧ1.Ссылка";  
   
   Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать();

   
    ЭлементыФормы.ТабличноеПоле1.Значение = Результат.Выгрузить();
    ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
6 Enigrade
 
03.06.13
15:48
я студент, только изучаю 1с ку)
7 mikecool
 
03.06.13
15:48
(5) парвильно пишет, Блюда и ТЧ1 - будут в результате в виде ТЗ
8 salvator
 
03.06.13
15:48
Запрос строй напрямую к ТЧ документа.
9 Enigrade
 
03.06.13
15:49
Но он же должен выводить сами значения...
10 salvator
 
03.06.13
15:50
+(8) и к ТЧ справочника
11 mikecool
 
03.06.13
15:51
(9) переберешь после выборки, хотя - хз что тебе нужно в результате
12 Enigrade
 
03.06.13
15:53
А такое вообще через связи делать?
13 Kreont
 
03.06.13
16:17
Примерно для получения ном.из тч документа:
"ВЫБРАТЬ
МенюБлюда.Номенклатура
ИЗ
Документ.Меню.Блюда КАК МенюБлюда
ГДЕ
МенюБлюда.Ссылка = &Ссылка"

потом, проходишь по всем, рисуешь шапку
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл

и для каждой строки получаешь результат уже для тч ингридиентов из спр.номенклатура, как то так:

ВЫБРАТЬ
НоменклатураТЧ1.Сырьё,
НоменклатураТЧ1.ЕИ,
НоменклатураТЧ1.Количество
ИЗ
Справочник.Номенклатура.ТЧ1 КАК НоменклатураТЧ1
ГДЕ
НоменклатураТЧ1.Ссылка = &Ссылка
14 Enigrade
 
03.06.13
17:23
Спасибо за помощ, но я опять что то не так делаю)
Ошибок нет, но всё равно выводит ингредиенты только для одного блюда(

Процедура Печать(ТабДок, Ссылка) Экспорт
   //{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
   Макет = Документы.Меню.ПолучитьМакет("Печать");
   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |    МенюБлюда.Блюдо,
   |НоменклатураТЧ1.Сырьё,
   |НоменклатураТЧ1.ЕИ,
   |НоменклатураТЧ1.Количество
   |    ИЗ
   |    Документ.Меню.Блюда КАК МенюБлюда
   |    Справочник.Номенклатура.ТЧ1 КАК НоменклатураТЧ1
   |ГДЕ
   |    НоменклатураТЧ1.Ссылка = &Ссылка
   |    МенюБлюда.Ссылка = &Ссылка";
   Запрос.Параметры.Вставить("Ссылка", Ссылка);
   Выборка = Запрос.Выполнить().Выбрать();

   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   Шапка = Макет.ПолучитьОбласть("Шапка");
   ОбластьБлюдаШапка = Макет.ПолучитьОбласть("БлюдаШапка");
   ОбластьБлюда = Макет.ПолучитьОбласть("МенюБлюда");
   ОбластьИнгредиентыШапка = Макет.ПолучитьОбласть("ИнгредиентыШапка");
   ОбластьИнгредиенты = Макет.ПолучитьОбласть("НоменклатураТЧ1");
   ТабДок.Очистить();

   ВставлятьРазделительСтраниц = Ложь;
   Пока Выборка.Следующий() Цикл
       Если ВставлятьРазделительСтраниц Тогда
           ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
       КонецЕсли;

       ТабДок.Вывести(ОбластьЗаголовок);

       Шапка.Параметры.Заполнить(Выборка);
       ТабДок.Вывести(Шапка, Выборка.Уровень());

       ТабДок.Вывести(ОбластьБлюдаШапка);
       ВыборкаБлюда = Выборка.Блюда.Выбрать();
       Пока ВыборкаБлюда.Следующий() Цикл
           ОбластьБлюда.Параметры.Заполнить(ВыборкаБлюда);
           ТабДок.Вывести(ОбластьБлюда, ВыборкаБлюда.Уровень());
       КонецЦикла;

       ТабДок.Вывести(ОбластьИнгредиентыШапка);
       ВыборкаИнгредиенты = Выборка.НоменклатураТЧ1.Ссылка.Выбрать();
       Пока ВыборкаИнгредиенты.Следующий() Цикл
           ОбластьИнгредиенты.Параметры.Заполнить(ВыборкаИнгредиенты);
           ТабДок.Вывести(ОбластьИнгредиенты, ВыборкаИнгредиенты.Уровень());
       КонецЦикла;

       ВставлятьРазделительСтраниц = Истина;
   КонецЦикла;
   //}}
КонецПроцедуры
15 Kreont
 
03.06.13
17:48
Ну если решил все таки одним запросом делать,
что б такое использовать, надо что б в запросе была группировка по нужным полям,
выше в запросе добавляй тогда итоги (сумма,максимум и т.п.)какие то + группировку:
|ПО
|    Блюда,
|    Сырьё

и потом получение последовательно:
Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

...цикл... и в середине обход нижней группировки через:
ВыборкаСырья = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаСырья.Следующий() Цикл

как то так...
в (13) то же самое только раздельно, ну да не красиво может, но для печ.форм сойдет :)
16 Enigrade
 
03.06.13
18:40
Вот же блин, попробовал раздельно сделать, он всё видимо из по макету выводит ингредиенты, я их из кода вообще убрал, а он всё равно выводит..