|
Обращение к "вложенным" полям запросов | ☑ | ||
---|---|---|---|---|
0
oduvanchikyan
10.08.21
✎
13:40
|
Добрый день!
Хочу обращаться к полям запроса, проблема возникла в полях которые являются, так сказать, "вложенными". Запрос.Текст = "ВЫБРАТЬ | СчетНаОплатуПокупателю.Номер, | СчетНаОплатуПокупателю.Дата, | СчетНаОплатуПокупателю.Товары.( | Номенклатура.Наименование КАК ТоварыНаименование, | Цена, | Сумма, | Количество | ), | СчетНаОплатуПокупателю.Услуги.( | Номенклатура.Наименование КАК УслугиНаименование, | Количество, | Цена, | Сумма | ), | СчетНаОплатуПокупателю.Организация.НаименованиеПолное КАК ОрганизацияНаименование, | СчетНаОплатуПокупателю.Организация.Код КАК ОрганизацияКод, | СчетНаОплатуПокупателю.Контрагент.НаименованиеПолное КАК КонтрагентНаименование, | СчетНаОплатуПокупателю.Контрагент.КодПоЕДРПОУ КАК КонтрагентКодПоЕДРПОУ, | СчетНаОплатуПокупателю.Контрагент.ИНН КАК КонтрагентКодИНН |ИЗ | Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю | |ГДЕ | СчетНаОплатуПокупателю.Ссылка = &ТекущийДокумент"; Пожалуйста подскажите как обращаться к полям по типу СчетНаОплатуПокупателю.Товары () или СчетНаОплатуПокупателю.Услуги!? |
|||
1
1Сергей
10.08.21
✎
13:42
|
Лучше не оперировать конструкцией со скобками. Соединяйте таблицы Документ.СчетНаОплатуПокупателю, Документ.СчетНаОплатуПокупателю.Товары и Документ.СчетНаОплатуПокупателю.Услуги
|
|||
2
oduvanchikyan
10.08.21
✎
13:48
|
(1) А как их соединять ? Я пробовал указывать через создание отдельных таблиц для таких конструкций, но информация не подтягивается в таком случае, ведь информация берется уже с двух таблиц или я уже путаю, что-то ?
|ИЗ | Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю | Документ.СчетНаОплатуПокупателю.Товары КАК СчетНаОплатуПокупателюТовары Примерно так При этом это единственное, что я меняю ... |
|||
3
Mankubus
10.08.21
✎
13:50
|
|
|||
4
ДенисЧ
10.08.21
✎
13:51
|
Из Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
левое соединение Документ.СчетНаОплатуПокупателю.Товары КАК СчетНаОплатуПокупателюТовары по СчетНаОплатуПокупателю.ссылка = СчетНаОплатуПокупателюТовары.ссылка. Это конструктор запрос же сам сделает... |
|||
5
oduvanchikyan
10.08.21
✎
14:09
|
(4) Спасибо, но результат пустой, то есть поля неопределенны, с чем может быть проблема? А так же жалуется на СчетНаОплатуПокупателюТовары.Номенклатура.Наименование КАК ТоварыНаименование --- "Поле объекта не обнаружено".
|
|||
6
1Сергей
10.08.21
✎
14:33
|
(5) весь запрос покажите
|
|||
7
hhhh
10.08.21
✎
14:55
|
(5) Наименование сразу выбросьте, его никогда не пишут. Пишите
Номенклатура КАК Номенклатура |
|||
8
oduvanchikyan
10.08.21
✎
15:53
|
(6) (7) (4) Решил проблему, все работает. Хотел уточнить по поводу вопроса обхода по результату запроса. Почему первый товар не отображается, а берется 2 и 3 товары, да и 3 дублируется :
Пока Результат.Следующий() Цикл ОбластьМакетТаблица.Параметры.НомерСтроки = НомерСтроки; ОбластьМакетТаблица.Параметры.Товар = Результат.ТоварыНаименование; ОбластьМакетТаблица.Параметры.Количество = Результат.Количество; ОбластьМакетТаблица.Параметры.Цена = Результат.Цена; ОбластьМакетТаблица.Параметры.Сумма = Результат.Сумма; НомерСтроки = НомерСтроки+1; Сообщить(НомерСтроки); ТабДокумент.Вывести(ОбластьМакетТаблица); КонецЦикла; |
|||
9
1Сергей
10.08.21
✎
17:39
|
(8) Что делается до цикла?
|
|||
10
oduvanchikyan
10.08.21
✎
17:49
|
(9) Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | СчетНаОплатуПокупателю.Номер, | СчетНаОплатуПокупателю.Дата, | СчетНаОплатуПокупателю.Ссылка, | СчетНаОплатуПокупателюТовары.Цена, | СчетНаОплатуПокупателюТовары.Сумма, | СчетНаОплатуПокупателюТовары.Количество, | СчетНаОплатуПокупателюТовары.Номенклатура.Наименование КАК ТоварыНаименование, | СчетНаОплатуПокупателю.Услуги.( | Номенклатура.Наименование КАК УслугиНаименование, | Количество, | Цена, | Сумма | ), | СчетНаОплатуПокупателю.Организация.НаименованиеПолное КАК ОрганизацияНаименование, | СчетНаОплатуПокупателю.Организация.Код КАК ОрганизацияКод, | СчетНаОплатуПокупателю.Контрагент.НаименованиеПолное КАК КонтрагентНаименование, | СчетНаОплатуПокупателю.Контрагент.КодПоЕДРПОУ КАК КонтрагентКодПоЕДРПОУ, | СчетНаОплатуПокупателю.Контрагент.ИНН КАК КонтрагентКодИНН |ИЗ | Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю, | ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетНаОплатуПокупателю.Товары КАК СчетНаОплатуПокупателюТовары | ПО СчетНаОплатуПокупателю.Ссылка = СчетНаОплатуПокупателюТовары.Ссылка |ГДЕ | СчетНаОплатуПокупателю.Ссылка = &ТекущийДокумент"; Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); //используем в качестве параметра реквизит обработки СсылкаНаОбъект Результат = Запрос.Выполнить().Выбрать(); //Результат.Следующий(); //Созданим и заполним табличный документ ТабДокумент = Новый ТабличныйДокумент; Макет = ПолучитьМакет("Макет"); //Область Заголовок ОбластьМакетаЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьМакетаЗаголовок.Параметры.ТекстЗаголовка = "Счет на оплату №" + Результат.Номер + " от " + Результат.Дата; ТабДокумент.Вывести(ОбластьМакетаЗаголовок); //Область Реквизит //Наименование Поставщика ОбластьМакетаРеквизит = Макет.ПолучитьОбласть("Реквизит"); ОбластьМакетаРеквизит.Параметры.ПредставлениеПоставщика = Результат.ОрганизацияНаименование; //Код Поставщика ОбластьМакетаРеквизит.Параметры.РеквизитПоставщика = Результат.ОрганизацияКод; //Наименование Покупателя ОбластьМакетаРеквизит.Параметры.ПредставлениеПокупатель = Результат.КонтрагентНаименование; Если Результат.КонтрагентКодПоЕДРПОУ = Неопределено Тогда //Код покупателя ИНН ОбластьМакетаРеквизит.Параметры.РеквизитПокупателя = Результат.КонтрагентКодИНН; Иначе //Код Покупателя ЕГРПОУ ОбластьМакетаРеквизит.Параметры.РеквизитПокупателя = Результат.КонтрагентКодПоЕДРПОУ; КонецЕсли; ТабДокумент.Вывести(ОбластьМакетаРеквизит); //Область Шапка таблицы ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ТабДокумент.Вывести(ОбластьШапкаТаблицы); //Область Тело таблицы ОбластьМакетТаблица = Макет.ПолучитьОбласть("ТелоТаблицы"); НомерСтроки = 0; Сообщить("Номер результата = "+Результат.Номер); Сообщить("Номер результата = "+Результат.Дата); Сообщить(Результат.Количество()); Для Номерстроки = 2 По Результат.Количество() Цикл Результат.Следующий(); ОбластьМакетТаблица.Параметры.НомерСтроки = НомерСтроки; ОбластьМакетТаблица.Параметры.Товар = Результат.ТоварыНаименование; ОбластьМакетТаблица.Параметры.Количество = Результат.Количество; ОбластьМакетТаблица.Параметры.Цена = Результат.Цена; ОбластьМакетТаблица.Параметры.Сумма = Результат.Сумма; Сообщить("Номер = "+НомерСтроки); ТабДокумент.Вывести(ОбластьМакетТаблица); КонецЦикла; |
|||
11
1Сергей
10.08.21
✎
17:54
|
(10)
Результат.Сбросить(); Пока Результат.Следующий() Цикл ... |
|||
12
oduvanchikyan
10.08.21
✎
17:59
|
(11) Большое человеческое спасибо!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |