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

обращение к табличной части документа основания

Автор bessy, 20 ноя 2012, 11:12

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

bessy

Всем доброго времени суток. Опыта в конфигурировании - месяц, поэтому очень нуждаюсь в помощи...
Необходимо в макет документа Заявка вывести табличную часть документа ПродажиТоваров, являющегося документом-основанием. Понимаю, что нужно по реквизиту, хранящему ссылку на документ основание, обратиться к его табличной части, но возникают ошибки. В результате запроса в табличную часть попадают вообще все товары из всех документов продаж, подскажите как правильно написать условие?

Макет = Документы.Заявка.ПолучитьМакет("Печать");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|   Заявка.КонтактноеЛицо.Адрес КАК Адрес,
|   Заявка.Дата,
|   Заявка.ДатаИВремяДоставки,
|   Заявка.Километраж,
|   Заявка.КонтактноеЛицо,
|   Заявка.Номер,
|   Заявка.Основание,
|   Заявка.Покупатель,
|   Заявка.КонтактноеЛицо.Телефон КАК Телефон,
|   Заявка.ТС
|ИЗ
|   Документ.Заявка КАК Заявка
|ГДЕ
|   Заявка.Ссылка В (&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ШапкаТабл = Макет.ПолучитьОбласть("ШапкаТабл");
Элемент = Макет.ПолучитьОбласть("Элемент");
ТабДок.Очистить();


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

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|   ПродажаТоваров1Товары.Номенклатура,
|   ПродажаТоваров1Товары.Количество,
|   ПродажаТоваров1Товары.Цена,
|   ПродажаТоваров1Товары.Сумма
|ИЗ
|   Документ.ПродажаТоваров1.Товары КАК ПродажаТоваров1Товары";

Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Элемент.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
ТабДок.Вывести(Элемент);

КонецЦикла;
КонецЦикла;

cska-fanat-kz

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДокументОснование", Шапка.ДокументОснование);
Запрос.Текст =
"ВЫБРАТЬ
|   ПродажаТоваров1Товары.Номенклатура,
|   ПродажаТоваров1Товары.Количество,
|   ПродажаТоваров1Товары.Цена,
|   ПродажаТоваров1Товары.Сумма
|ИЗ
|   Документ.ПродажаТоваров1.Товары КАК ПродажаТоваров1Товары
|ГДЕ Документ.ПродажаТоваров1.Ссылка = &ДокументОснование";

Результат = Запрос.Выполнить();

и соответственно в первый запрос добавьте еще одно поле с документом-основанием...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

bessy

Извините, не совсем поняла, что означает
Цитата: cska-fanat-kz от 20 ноя 2012, 12:10
и соответственно в первый запрос добавьте еще одно поле с документом-основанием...
В смысле добавить это поле в условия, или просто в перечисление полей выборки?

Gunner

Почему не хотите сделать соединение двух запросов? Да и вообще зачем вытаскивать запросом данные из этого документа?

bessy

опыта нет :( Мне по отдельности то запросы даются тяжело, а вложенные...

Gunner

Первый запрос вам не нужен вообще! Заполняйте параметры из объекта: Шапка.Параметры.Заполнить(ЭтотОбъект);
А во второй запрос передавайте основание

cska-fanat-kz

Цитата: Gunner от 20 ноя 2012, 15:56
Первый запрос вам не нужен вообще! Заполняйте параметры из объекта: Шапка.Параметры.Заполнить(ЭтотОбъект);
А во второй запрос передавайте основание

Да тут чем-то напомнило как делается во внешних печатных формах...
Когда нужные реквизиты шапки документа получаются запросом.
Поэтому к первому запросу сильно не стал придираться...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

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

Рейтинг@Mail.ru

Поиск