V8.0 Как в результате запроса получить поле = сумме двух других, при условии что #108008


#0 by Said_We
Есть таблица Т.У этой таблице есть три поля: Поле1, Поле2, СуммаТипы значений Поле1 и Поле2 не строковые....Тип поля Сумма - число.Результат должен быть таким:Поле1, Поле2, СуммаНо итоги должны быть сгруппированны по Строка(Поле1) + Строка(Поле2)И результат запроса отсортирован по Поле1, Поле2.В 1С 8.0 в запросах есть такая внутренние функции:1. Представление(<Значение>)2. Выразить(<Значение> КАК <Тип>).Вторая не подходит так как применяется для значений составного типа, а не для преоброзования типов.Первая возвращает строку, но проблема в том, что сделать с этой строкой потом не чего нельзя. Т.е. написать выражение типа:"А_"+ Представление(<Значение>) невозможно.Подозреваю что реально представление получается уже после выполнения запроса, а не во время выполнения, поэтому на момент выполнения запроса функция Представление не отрабатывает.....Подзапросом тоже не получается. Т.е. объявить два поля строковые, которые получаются с помощью функции Предсталение, а потом во внешнем запросе сложить два уже как должно бы быть строковое поле, но... они строковыми становяться....Кто как боролся с подобным счастьем и какие идеи есть?
#1 by Said_We
(all) Я хоть вопрос понятно задал?
#2 by Said_We
:-(((Либо задал вопрос не понятно, либо нет решения...
#3 by A
никак, IMHO
#4 by Said_We
Тогда до завтра..... :-(((
#5 by mig747
группирование Поле1, Поле2 не отличается от группированияСтрока(Поле1) + Строка(Поле2)(если конечно лидир. пробелы у Строка(Поле2) не откидываешь),так что просто группируй Поле1, Поле2, а выводи Представление
#6 by Said_We
В идет речь об итогах ПО, а они 100% отличаются так как потом мне это счастье надо будет еще сортировать...Не нужно мне представление как таковое, мне нужно только по некой строке полученной из представления и еще одного поля получить итоги....
#7 by Said_We
Реально поле1 - это документ, а поле2 - это некая дата. Заранее говорючто это дата не имеет отношения к дате документа.Пусть в таблице Т три строки1. Док1 Дата1 1002. Док1 Дата1 503. Док2 Дата1 70после группировки По (Поле1)+(Поле2) и сортировки по убыванию я должен получитьследующие:1. Док2 Дата1 702. Док1 Дата1 503. Док1 Дата1 100...Так как 70 меньше чем 150 (100 + 50), и 50 меньше чем 100.
#8 by Said_We
а аргументы можно?
#9 by mig747
Сделай два запроса - в одном группируй, другой - просто полный,соедини их по полям группировки, сортирни по полям группировки и итогам - мне кажется, получится, то что нужно
#10 by Said_We
Честно говоря не понял...
#11 by mig747
выбратьз1.поле1,з1.поле2з2.цифраиз(выбратьПоле1,Поле2,из Таблицасгруппировать по поле1, поле2) з1,(выбратьПоле1,Поле2,Цифра) з2гдесортироватьз1.Поле1,з1.поле2,з1.цифра по убыванию.В синтаксисе могу ошибаться - я его не просто помню, особенно как сортировка делается, но, думаю, теперь понятно
#12 by mig747
Нет, так не получится, похоже но не то
#13 by mig747
В сортироке ошибся.нужно так :)СортироватьЗ1.Цифра убыван, з1.Поле1, з1.Поле2, з2.цифраВот теперь наверно правильно
#14 by Said_We
Да получилось. Спасибо.Конечно правда изврат получается. Запросы на самом деле просто огромные и потом еще их два раза вызывать и еще потом.... А все это из за того что 1С 8.0 не умеет вызывать методы объектов в запросе не умеет складывать по нормальному строки и т.д.
#15 by mig747
В любой реляц. базе пришлось бы так делать.сложение строк в данном случае не помогло бы.могли бы помочь коррелирующие запросы, но их в 1с нет, и это не меньший, а скорее больший изврат :),
#16 by Said_We
Почему бы не помогло...? В принципе мы получили тоже самое что если бы сгруппировали бы по составному полю....
#17 by mig747
Не понимаю...После группирования у тебя не было бы отдельных сумм.
#18 by Said_We
Итоги Сумма ПОТут же тоже есть группировки.....
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С