|
Объединение запросов | ☑ | ||
---|---|---|---|---|
0
3463
08.08.13
✎
15:08
|
Добрый день!помогите пожалуйста объединить два запроса.первый выводит серию товара и количество,второй гарантию на товар.по отдельности они работают,но выводит таблицу так ,что верхняя строка пустая заполнено только поле гарантия,а вторая строка соответственно заполнено все кроме гарантии.помогите пожалуйста вообще уже вся замоталась
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслугТовары.Ссылка, | РеализацияТоваровУслугТовары.НомерСтроки, | РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура, | РеализацияТоваровУслугТовары.Количество, | РеализацияТоваровУслугТовары.ЕдиницаИзмерения, | СерииНоменклатуры.СерийныйНомер, | РеализацияТоваровУслугТовары.Номенклатура.Наименование |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатуры КАК СерииНоменклатуры | ПО РеализацияТоваровУслугТовары.СерияНоменклатуры = СерииНоменклатуры.Ссылка |ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект); Результат = Запрос.Выполнить(); ОбластьТаблицаДетали = Макет.ПолучитьОбласть("ТаблицаДетали"); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Если ВыборкаДетальныеЗаписи.Количество()<=0 Тогда Сообщить("В документе не найдены товары. Печать ГарантийногоТалона не возможна.", СтатусСообщения.Важное); Возврат Ложь; КонецЕсли; Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Для Ин = 1 по ВыборкаДетальныеЗаписи.Количество Цикл ОбластьТаблицаДетали.Параметры.Заполнить(ВыборкаДетальныеЗаписи); ОбластьТаблицаДетали.Параметры.Кол = 1; КонецЦикла; КонецЦикла; ЗапросГарантия = Новый Запрос; ЗапросГарантия.Текст = "ВЫБРАТЬ | ЗначенияСвойствОбъектов.Значение как Гарантия |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов"; ТаблицаЗапроса = ЗапросГарантия.Выполнить().Выгрузить(); Для Каждого Строка ИЗ ТаблицаЗапроса Цикл Область = Макет.ПолучитьОбласть("ТаблицаДетали"); Область.Параметры.Гарант = Строка.Гарантия; ТабДокумент.Вывести(Область); КонецЦикла; |
|||
1
magicSan
08.08.13
✎
15:15
|
да там пахнет левым соединением по объекту
|
|||
2
3463
08.08.13
✎
15:30
|
я правильно поняла?
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслугТовары.Ссылка, | РеализацияТоваровУслугТовары.НомерСтроки, | РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура, | РеализацияТоваровУслугТовары.Количество, | РеализацияТоваровУслугТовары.ЕдиницаИзмерения, | СерииНоменклатуры.СерийныйНомер, | РеализацияТоваровУслугТовары.Номенклатура.Наименование, | ЗначенияСвойствОбъектов.Значение как Гарантия |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатуры КАК СерииНоменклатуры | ПО РеализацияТоваровУслугТовары.СерияНоменклатуры = СерииНоменклатуры.Ссылка, | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов | ЛЕВОЕ СОЕДИНЕНИЕ ЗначенияСвойствОбъектов.Значение КАК Гарантия | ПО РеализацияТоваровУслугТовары.Номенклатура |ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект); Результат = Запрос.Выполнить(); ОбластьТаблицаДетали = Макет.ПолучитьОбласть("ТаблицаДетали"); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Если ВыборкаДетальныеЗаписи.Количество()<=0 Тогда Сообщить("В документе не найдены товары. Печать ГарантийногоТалона не возможна.", СтатусСообщения.Важное); Возврат Ложь; КонецЕсли; Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Для Ин = 1 по ВыборкаДетальныеЗаписи.Количество Цикл ОбластьТаблицаДетали.Параметры.Заполнить(ВыборкаДетальныеЗаписи); ОбластьТаблицаДетали.Параметры.Кол = 1; КонецЦикла; КонецЦикла; Для Каждого Строка ИЗ ВыборкаДетальныеЗаписи Цикл ОбластьТаблицаДетали = Макет.ПолучитьОбласть("ТаблицаДетали"); ОбластьТаблицаДетали.Параметры.Гарант = Строка.Гарантия; ТабДокумент.Вывести(ОбластьТаблицаДетали); КонецЦикла; |
|||
3
Капитан О
08.08.13
✎
15:34
|
(2) это не есть левое соединение по объекту
|
|||
4
Капитан О
08.08.13
✎
15:35
|
>ПО РеализацияТоваровУслугТовары.Номенклатура
а вот это вот вообще сомнительно булевское условие |
|||
5
3463
08.08.13
✎
15:36
|
что делать то?
|
|||
6
Капитан О
08.08.13
✎
15:36
|
(5) предлагаю (1)
|
|||
7
3463
08.08.13
✎
15:39
|
если это не как там,то я тогда,в полной растерянности.жизнь тлен
|
|||
8
dk
08.08.13
✎
15:42
|
думаю можно и через объединение с группировкой и МАКСИМУМ по гарантии
|
|||
9
Капитан О
08.08.13
✎
15:43
|
(7) я тебе ещё когда предлагал довериться профессионалу? или тебе непременно нужно стать программистом?
|
|||
10
palpetrovich
08.08.13
✎
15:45
|
так пробуй, не проверял:
ВЫБРАТЬ | РеализацияТоваровУслугТовары.Ссылка, | РеализацияТоваровУслугТовары.НомерСтроки, | РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура, | РеализацияТоваровУслугТовары.Количество, | РеализацияТоваровУслугТовары.ЕдиницаИзмерения, | РеализацияТоваровУслугТовары.СерияНоменклатуры.СерийныйНомер, | РеализацияТоваровУслугТовары.Номенклатура.Наименование, | ЗначенияСвойствОбъектов.Значение как Гарантия |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов | ПО РеализацияТоваровУслугТовары.Номенклатура = ЗначенияСвойствОбъектов.Объект |ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &Ссылка"; |
|||
11
3463
08.08.13
✎
15:46
|
сама хочу,все уже сделала,осталось это и я победю
|
|||
12
3463
08.08.13
✎
15:47
|
неее эт не пойдет ,у меня же он еще серию выводит
|
|||
13
Капитан О
08.08.13
✎
15:48
|
(12) сама хочешь? закрой глаза на (10) и доработай напильником ;)
|
|||
14
Ymryn
08.08.13
✎
15:50
|
А еще лучше вот так.
"ВЫБРАТЬ | РеализацияТоваровУслугТовары.Ссылка, | РеализацияТоваровУслугТовары.НомерСтроки, | РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура, | РеализацияТоваровУслугТовары.Количество, | РеализацияТоваровУслугТовары.ЕдиницаИзмерения, | СерииНоменклатуры.СерийныйНомер, | РеализацияТоваровУслугТовары.Номенклатура.Наименование, | Гарантия.Значение как Гарантия |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатуры КАК СерииНоменклатуры | ПО РеализацияТоваровУслугТовары.СерияНоменклатуры = СерииНоменклатуры.Ссылка, | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов как Гарантия | ПО РеализацияТоваровУслугТовары.Номенклатура = Гарантия.Объект | И Гарантия.Свойство = &Гарантия |ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &Ссылка" В установке параметра задать параметр Гарантия. А то регистр значений свойств много для чего использоваться может, лучше конкретно определять свойство которое хотим получить. Подскажу, что Гарантия обитает в ПланыВидовХарактеристик.СвойстваОбъектов |
|||
15
palpetrovich
08.08.13
✎
15:50
|
(12) тебе нужен СерийныйНомер что в документе?
если да, чем не устраивает РеализацияТоваровУслугТовары.СерияНоменклатуры.СерийныйНомер, ? зы: соединение 1с-ка и сама нарисует ;) |
|||
16
3463
08.08.13
✎
15:56
|
(14) сделала как вы сказали
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслугТовары.Ссылка, | РеализацияТоваровУслугТовары.НомерСтроки, | РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура, | РеализацияТоваровУслугТовары.Количество, | РеализацияТоваровУслугТовары.ЕдиницаИзмерения, | СерииНоменклатуры.СерийныйНомер, | РеализацияТоваровУслугТовары.Номенклатура.Наименование, | Гарантия.Значение как Гарантия |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатуры КАК СерииНоменклатуры | ПО РеализацияТоваровУслугТовары.СерияНоменклатуры = СерииНоменклатуры.Ссылка, | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов как Гарантия | ПО РеализацияТоваровУслугТовары.Номенклатура = Гарантия.Объект | И Гарантия.Свойство = &Гарантия |ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект); Запрос.УстановитьПараметр("Гарантия", ПланыВидовХарактеристик.СвойстваОбъектов); Результат = Запрос.Выполнить(); ОбластьТаблицаДетали = Макет.ПолучитьОбласть("ТаблицаДетали"); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Если ВыборкаДетальныеЗаписи.Количество()<=0 Тогда Сообщить("В документе не найдены товары. Печать ГарантийногоТалона не возможна.", СтатусСообщения.Важное); Возврат Ложь; КонецЕсли; Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Для Ин = 1 по ВыборкаДетальныеЗаписи.Количество Цикл ОбластьТаблицаДетали.Параметры.Заполнить(ВыборкаДетальныеЗаписи); ОбластьТаблицаДетали.Параметры.Кол = 1; КонецЦикла; КонецЦикла; Для Каждого Строка ИЗ ВыборкаДетальныеЗаписи Цикл Область = Макет.ПолучитьОбласть("ТаблицаДетали"); Область.Параметры.Гарант = Строка.Гарантия; ТабДокумент.Вывести(Область); КонецЦикла; выдал ошибку Не удалось сформировать внешнюю печатную форму! Ошибка при вызове метода контекста (Выполнить): {(16, 29)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля неограниченной длины и поля несовместимых типов. И Гарантия.Свойство <<?>>= &Гарантия |
|||
17
salvator
08.08.13
✎
15:59
|
(16) Ну, вроде по-русски написан текст ошибки... :/
|
|||
18
Ymryn
08.08.13
✎
16:00
|
Я сказал где искать, а не где точно находится. У тебя осталась последняя ступенька, которую надо преодолеть.
|
|||
19
3463
08.08.13
✎
16:12
|
я не понимаю,что надо сделать.я просто не соображаю уже.ткните меня носом,я туплю.я ненавижу этот гарантийный талон и эту гарантию противную,будь он проклят
|
|||
20
Ymryn
08.08.13
✎
16:25
|
Смотри, есть такой объект, как Справочник. Он содержит в себе все типы справочников, которые есть в базе. Мы к нему обращаемся как Справочники.КонкретныйСправочник. Если нас заинтересовал конкретный элемент конкретного справочника, мы обращаемся к нему как Справочники.КонкретныйСправочник.КонкретныйЭлемент (если он предопределенный) или Справочники.КонкретныйСправочник.НайтиПоКоду("ТекстСКодом"). Свойство объекта аналогично в этом плане. Но оно является не справочником, а Видом характеристики. И к нему можно обратиться по той же схеме или ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("КодСвойства") или ПланыВидовХарактеристик.СвойстваОбъектов.ИмяСвойства (если оно было предопределено в конфигураторе). Есть просветление?
|
|||
21
3463
08.08.13
✎
16:26
|
мне не надо свойство,мне надо значение
|
|||
22
salvator
08.08.13
✎
16:27
|
(21) ПланыВидовХарактеристик.СвойстваОбъектов.ИмяЗначения
Так легче? |
|||
23
Ymryn
08.08.13
✎
16:28
|
Значение тебе даст запрос. Но запрос идет по регистру ЗначенияСвойств, который содержит значения различных свойств, а не только Гарантийки. Поэтому если ты хочешь получить именно Гарантию, тебе надо указать какое свойство ты запрашиваешь. Собственно это ты и указываешь в параметрах. То свойство, которое хочешь получить.
|
|||
24
3463
08.08.13
✎
16:32
|
Поле объекта не обнаружено (Гарантия)
|
|||
25
Ymryn
08.08.13
✎
16:38
|
Посмотри, что я написал в (20) . Внимательно прочитай и определи, что тебе в написанном непонятно.
|
|||
26
Ymryn
08.08.13
✎
16:39
|
(25) Ты ейчас пытаешься в слепую нащупать решение. Без попытки понять, что же ты делаешь. Это могут позволить себе пользователи. Программист не имеет права так поступать.
|
|||
27
3463
08.08.13
✎
16:43
|
ну так я так и делаю,не работает
|
|||
28
3463
08.08.13
✎
16:44
|
Запрос.УстановитьПараметр("Гарантия", ПланыВидовХарактеристик.СвойстваОбъектов.Гарантия)
|
|||
29
3463
08.08.13
✎
16:45
|
наименование у свойства гарантия,получается что именно так,или я не понимаю опять
. |
|||
30
salvator
08.08.13
✎
16:48
|
(29) Это НЕпредопределенный элемент? Тогда ищи по коду.
|
|||
31
3463
08.08.13
✎
16:51
|
по коду тоже ни как
Метод объекта не обнаружен (НайтиПоКоду) |
|||
32
Ymryn
08.08.13
✎
16:52
|
А полностью строчку приведи, пожалуйста, а то есть определенные подозрения.
|
|||
33
3463
08.08.13
✎
16:53
|
Запрос.УстановитьПараметр("Гарантия", ПланыВидовХарактеристик.НайтиПоКоду("000000001"));
пожалуйста |
|||
34
Очкарик
08.08.13
✎
16:54
|
(33) внезапно!
|
|||
35
3463
08.08.13
✎
16:54
|
всмысле
|
|||
36
salvator
08.08.13
✎
16:54
|
(33) Перечитай (20) еще раз. Внимательно. До просветления.
|
|||
37
salvator
08.08.13
✎
16:55
|
Или в СП про метод НайтиПоКоду
|
|||
38
Ymryn
08.08.13
✎
17:01
|
Мы ищем среди СвойстваОбъектов, зачем ты от них избавляешься? Али они тебе грубили? Али угрожали? Не надо так. Они добрые и милые. И собственно НайтиПоКоду будет работать именно если вызывать у них.
|
|||
39
3463
09.08.13
✎
08:11
|
Господа,я справилась!Работает!спасибо за наставления!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |