|
v7: Доступ к свойству контрагента в запросе | ☑ | ||
---|---|---|---|---|
0
Palll
17.03.15
✎
17:07
|
Пытаюсь запросом получить реализации с группировкой по свойству контрагента. На выходе получаю строки с пустым свойством и строки со всеми остальными контрагентами без отгрузок но с проставленным свойством. Помогите найти ошибку в запросе.
Период С ВыбДата1 По ВыбДата1; ЮрЛицо = Справочник.СвойстваКонтрагентов.Владелец, Документ.Реализация.ТекущийДокумент.Контрагент; ТекущийДокумент= Документ.Реализация.ТекущийДокумент; ДатаПродажи = Документ.Реализация.ТекущийДокумент.ДатаДок; Свойство = Справочник.СвойстваКонтрагентов.ВидСвойства; Район = Справочник.СвойстваКонтрагентов.ЗначениеСвойства; Родитель = Документ.Реализация.Контрагент.Родитель; ПродСтоимость = Документ.Реализация.Сумма; Количество = Документ.Реализация.Количество; Условие(Свойство = ЗначениеСвойства); Функция КоличествоВсего = Сумма(Количество); Функция СтоимостьВсего = Сумма(ПродСтоимость); Группировка Район без групп; Группировка Родитель без групп; Группировка ЮрЛицо упорядочить по ЮрЛицо.Наименование без групп; |
|||
1
palpetrovich
17.03.15
✎
17:57
|
смешались в кучу, кони, люди... :)
хотелось-бы конечно как-то так Владелец = Справочник.СвойстваКонтрагентов.Владелец; ЮрЛицо = Документ.Реализация.ТекущийДокумент.Контрагент; Условие(Владелец = ЮрЛицо); но думаю не прокатит |
|||
2
Palll
17.03.15
✎
18:20
|
(1) Нет, не прокатило. Похоже в запросе подобного не реализовать.
|
|||
3
palpetrovich
17.03.15
✎
18:40
|
(2) я тат накидал, копрокодик :) ...работать будет, про оптимальность - промолчу :)
Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = " |без Итогов; |Владелец = Справочник.СвойстваКонтрагентов.Владелец; |ВидСвойства = Справочник.СвойстваКонтрагентов.ВидСвойства; |ЗначениеСвойства = Справочник.СвойстваКонтрагентов.ЗначениеСвойства; |Условие(ВидСвойства = ВыбВидСвойства); |Группировка ЗначениеСвойства; |Группировка Владелец без групп; |"; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; тз = создатьОбъект("ТаблицаЗначений"); Запрос.Выгрузить(тз, 1); сз = создатьОбъект("СписокЗначений"); тз.Выгрузить(сз,,,"Владелец"); тзСвойств = создатьОбъект("ТаблицаЗначений"); тз.Выгрузить(тзСвойств,,,"ЗначениеСвойства"); тзСвойств.Свернуть("ЗначениеСвойства",); Запрос2 = СоздатьОбъект("Запрос"); ТекстЗапроса = " |Период с ВыбНачПериода по ВыбКонПериода; |ТекущийДокумент = Документ.Реализация.ТекущийДокумент; |Контрагент = Документ.Реализация.Контрагент; |Сумма = Документ.Реализация.Сумма; |Функция СуммаСумма = Сумма(Сумма); | |Группировка Контрагент; | |Условие(Контрагент В сз); |"; Если Запрос2.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; тз2 = создатьОбъект("ТаблицаЗначений"); Запрос2.Выгрузить(тз2, 1); тзСвойств.ВыбратьСтроки(); Пока тзСвойств.ПолучитьСтроку() = 1 Цикл сообщить("ЗначениеСвойства "+тзСвойств.ЗначениеСвойства); тз.ВыбратьСтроки(); Пока тз.ПолучитьСтроку() = 1 Цикл Если тзСвойств.ЗначениеСвойства = тз.ЗначениеСвойства Тогда тз2.ВыбратьСтроки(); Пока тз2.ПолучитьСтроку() = 1 Цикл Если тз2.Контрагент <> тз.Владелец Тогда продолжить; КонецЕсли; сообщить(" Контрагент "+ тз2.Контрагент +" Сумма = " +тз2.СуммаСумма); КонецЦикла; КонецЕсли; КонецЦикла; КонецЦикла; |
|||
4
Palll
17.03.15
✎
18:46
|
(3) Так то да, можно сделать. Тут вся закоывка в том что нужно было именно в запросе.
|
|||
5
Ёпрст
17.03.15
✎
18:49
|
если несколько значений свойств для одного вида свойства, тогда, какое брать ?
|
|||
6
palpetrovich
17.03.15
✎
18:50
|
(4) если "именно в запросе", то смотри в сторону прямых запросов
1sqlite или 1spp те в руки ...вот как-раз и спец в этом деле (5) подтянулся :) |
|||
7
Palll
17.03.15
✎
19:06
|
(5) У контрагента для одного вида свойства только одно значение. Изначально была необходимость группировать реализации по регионам. Я пытался получить эту информацию из дерева контрагентов, но конструкция Родитель.Родитель в запросе не срабатывала. Потом решил взять эту информацию из подчиненного контрагентам справочника свойств. И на этом застрял.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |