Есть документ "ЗаказПокупателя", есть ссылка на этот документ. В документе есть табличная часть "Запасы".
Я хочу обойти запросом эту табличную часть:
Но мне нужно обойти табличную часть именно этого документа, на который у меня ссылка.
Как это указать в запросе?
Я хочу обойти запросом эту табличную часть:
"ВЫБРАТЬ
| ЗаказПокупателяЗапасы.Номенклатура КАК Номенклатура1,
| ЗаказПокупателяЗапасы.Цена КАК Цена1
|ИЗ
| Документ.ЗаказПокупателя.Запасы КАК ЗаказПокупателяЗапасы";
Но мне нужно обойти табличную часть именно этого документа, на который у меня ссылка.
Как это указать в запросе?
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
вот(
Запрос3 = Новый Запрос;
Запрос3.УстановитьПараметр("Ссылка", ВыборкаДетальныеЗаписи1.Ссылка);
Запрос3.Текст =
"ВЫБРАТЬ
| ЗаказПокупателяЗапасы.Номенклатура.Наименование КАК Номенклатура2,
| ЗаказПокупателяЗапасы.Сумма КАК Цена2
|ИЗ
| Документ.ЗаказПокупателя.Работы КАК ЗаказПокупателяЗапасы
|ГДЕ
| ЗаказПокупателяЗапасы.Ссылка = &Ссылка";
РезультатЗапроса3 = Запрос3.Выполнить();
ВыборкаДетальныеЗаписи3 = РезультатЗапроса3.Выбрать();
Пока ВыборкаДетальныеЗаписи2.Следующий() Цикл
ОбластьМакета.Параметры.Номенклатура = ВыборкаДетальныеЗаписи3.Номенклатура2;
ОбластьМакета.Параметры.Сумма = ВыборкаДетальныеЗаписи3.Цена2;
ТабличныйДокумент.Вывести(ОбластьМакета);
СуммаОбщая = СуммаОбщая + ВыборкаДетальныеЗаписи3.Цена2;
КонецЦикла
ПоказатьПрикрепленные файлы:


Форма печатная ошибок не выдает, но и строк нет.
Ссылка на документ передалась, в документе строки в табличной части есть, а вот в обходе условие "Пока ВыборкаДетальныеЗаписи2.Следующий() Цикл" не проходит и код не выполняется..
Ссылка на документ передалась, в документе строки в табличной части есть, а вот в обходе условие "Пока ВыборкаДетальныеЗаписи2.Следующий() Цикл" не проходит и код не выполняется..
А теперь самое страшное..
Мне нужно было взять документ "Прием и передача в ремонт", найти связанные с ним документы "Заказ-наряды" и обойти их табличные части "Работы" и "Запасы"..
Я как совсем не программист и немножечко рукожоп сделал страшную вещь: запросом нашел ссылки на связанные документы и в обходе результатов, двумя вложенными запросами обошел табличные части (сейчас у antz Петров (antz) снова кровь из глаз пойдет).
А можете вкрадце рассказать как нужно было?) Можно ли было всё это вместить в один запрос?)
Мне нужно было взять документ "Прием и передача в ремонт", найти связанные с ним документы "Заказ-наряды" и обойти их табличные части "Работы" и "Запасы"..
Я как совсем не программист и немножечко рукожоп сделал страшную вещь: запросом нашел ссылки на связанные документы и в обходе результатов, двумя вложенными запросами обошел табличные части (сейчас у antz Петров (antz) снова кровь из глаз пойдет).
Запрос1 = Новый Запрос;
Запрос1.УстановитьПараметр("Ссылка", ТекущийДокумент);
Запрос1.Текст =
"ВЫБРАТЬ
| ЗаказПокупателя.Ссылка КАК Ссылка
|ИЗ
| Документ.ЗаказПокупателя КАК ЗаказПокупателя
|ГДЕ
| ЗаказПокупателя.ДокументОснование.Ссылка = &Ссылка";
РезультатЗапроса1 = Запрос1.Выполнить();
ВыборкаДетальныеЗаписи1 = РезультатЗапроса1.Выбрать();
Пока ВыборкаДетальныеЗаписи1.Следующий() Цикл
Запрос2 = Новый Запрос;
Запрос2.УстановитьПараметр("Ссылка", ВыборкаДетальныеЗаписи1.Ссылка);
Запрос2.Текст =
"ВЫБРАТЬ
| ЗаказПокупателяЗапасы.Номенклатура.Наименование КАК Номенклатура1,
| ЗаказПокупателяЗапасы.Сумма КАК Цена1
|ИЗ
| Документ.ЗаказПокупателя.Запасы КАК ЗаказПокупателяЗапасы
|ГДЕ
| ЗаказПокупателяЗапасы.Ссылка = &Ссылка";
РезультатЗапроса2 = Запрос2.Выполнить();
ВыборкаДетальныеЗаписи2 = РезультатЗапроса2.Выбрать();
Пока ВыборкаДетальныеЗаписи2.Следующий() Цикл
ОбластьМакета.Параметры.Номенклатура = ВыборкаДетальныеЗаписи2.Номенклатура1;
ОбластьМакета.Параметры.Сумма = ВыборкаДетальныеЗаписи2.Цена1;
ТабличныйДокумент.Вывести(ОбластьМакета);
СуммаОбщая = СуммаОбщая + ВыборкаДетальныеЗаписи2.Цена1;
КонецЦикла;
Запрос3 = Новый Запрос;
Запрос3.УстановитьПараметр("Ссылка", ВыборкаДетальныеЗаписи1.Ссылка);
Запрос3.Текст =
"ВЫБРАТЬ
| ЗаказПокупателяЗапасы.Номенклатура.Наименование КАК Номенклатура2,
| ЗаказПокупателяЗапасы.Сумма КАК Цена2
|ИЗ
| Документ.ЗаказПокупателя.Работы КАК ЗаказПокупателяЗапасы
|ГДЕ
| ЗаказПокупателяЗапасы.Ссылка = &Ссылка";
РезультатЗапроса3 = Запрос3.Выполнить();
ВыборкаДетальныеЗаписи3 = РезультатЗапроса3.Выбрать();
Пока ВыборкаДетальныеЗаписи3.Следующий() Цикл
ОбластьМакета.Параметры.Номенклатура = ВыборкаДетальныеЗаписи3.Номенклатура2;
ОбластьМакета.Параметры.Сумма = ВыборкаДетальныеЗаписи3.Цена2;
ТабличныйДокумент.Вывести(ОбластьМакета);
СуммаОбщая = СуммаОбщая + ВыборкаДетальныеЗаписи3.Цена2;
КонецЦикла;
КонецЦикла;
ПоказатьА можете вкрадце рассказать как нужно было?) Можно ли было всё это вместить в один запрос?)
(16) В один можно, но не рационально
У тебя все хорошо, только запросы по табличным частям надо делать не в цикле, а получить сразу все табличные части по всем документам - выгрузить массив ссылок из результата первого запроса и передать его в условия запросов табличных частей. А в цикле только обходить их результаты, выбирая данные табличных частей нужных документов. Как именно обходить - по вкусу:
1) добавить в запросы по табличным частям ИТОГИ по ссылке на документ, тогда выборку можно будет обходить иерархически
2) выгрузить результат запроса в таблицу значений и фильтровать ее по ссылкам на документы (через НайтиСтроки(), например)
У тебя все хорошо, только запросы по табличным частям надо делать не в цикле, а получить сразу все табличные части по всем документам - выгрузить массив ссылок из результата первого запроса и передать его в условия запросов табличных частей. А в цикле только обходить их результаты, выбирая данные табличных частей нужных документов. Как именно обходить - по вкусу:
1) добавить в запросы по табличным частям ИТОГИ по ссылке на документ, тогда выборку можно будет обходить иерархически
2) выгрузить результат запроса в таблицу значений и фильтровать ее по ссылкам на документы (через НайтиСтроки(), например)
Можно и в одном
"ВЫБРАТЬ
| ЗаказПокупателяЗапасы.Номенклатура.Наименование КАК Номенклатура,
| ЗаказПокупателяЗапасы.Сумма КАК Цена
|ИЗ
| Документ.ЗаказПокупателя.Запасы КАК ЗаказПокупателяЗапасы
|ГДЕ
| ЗаказПокупателяЗапасы.Ссылка.ДокументОснование = &Ссылка
|
| ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗаказПокупателяРаботы.Номенклатура.Наименование,
| ЗаказПокупателяРаботы.Сумма
|ИЗ
| Документ.ЗаказПокупателя.Работы КАК ЗаказПокупателяРаботы
|ГДЕ
| ЗаказПокупателяРаботы.Ссылка.ДокументОснование = &Ссылка"
"
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот