|
Вывод результата запроса в одну строку Бычье сердце, Fedor-1971, nick86, elka302, Участковый, Silgis, Александр111, maxab72, ALCAPONA, serega2671, Max57, piter3, DiMel_77, RVN, realptrm, U4Me2, Mraque, Prog_man, Chameleon1980, Гипервизор, PuhUfa, Stepashkin, ADirks, Amfiaray, Кирпич, Metman, Андрей_Андреич, SleepyHead, dchumak, Argo, craxx, PR, whitedi, kubik_live
| ☑ | ||
---|---|---|---|---|
0
ОМЭЗ
21.01.25
✎
15:45
|
Есть примитивный запрос:
ВЫБРАТЬ ПродажиН.Сделка, ПродажиН.Регистратор.ВидДопСоглашения ИЗ РегистрНакопления.ПродажиН.Обороты(, &ДатаОтчета, Авто, ) КАК ПродажиН ГДЕ ПродажиН.Регистратор ССЫЛКА Документ.ДС Подскажите как-то можно вывести данные ВидДопСоглашения в одну строку например Сделка №1 | Скидка1 Скидка2 Скидка3 | Сделка №2 | Скидка1 Скидка2| Спасибо! |
|||
1
alexela
21.01.25
✎
15:49
|
(0) в запросе "ВидДопСоглашения", в строке "Скидка"...куда смотреть?
|
|||
2
ОМЭЗ
21.01.25
✎
15:56
|
Колонки : Сделка | ВидДопСоглашения
Строки : Сделка №1 Скидка1 Скидка2 Скидка3 Сделка №2 Скидка1 Скидка2 Стандартно оно выводит так: Сделка №1 Скидка1 Сделка №1 Скидка2 Сделка №1 Скидка3 Сделка №2 Скидка1 Сделка №2 Скидка2 |
|||
3
craxx
21.01.25
✎
15:57
|
(0) с помощью СКД элементарно
|
|||
4
Игорь_МММ
21.01.25
✎
16:02
|
ИТОГИ По Сделка
|
|||
5
ОМЭЗ
21.01.25
✎
16:09
|
(3) Ватсон Как с помощью СКД ?
(4) Не работает |
|||
6
Garykom
21.01.25
✎
16:12
|
(0) Не зная заранее максимальное кол-во колонок?
|
|||
7
Garykom
21.01.25
✎
16:12
|
Поищи уже было неоднократно
|
|||
8
ОМЭЗ
21.01.25
✎
16:14
|
(6) к сожалению не зная
|
|||
9
ОМЭЗ
21.01.25
✎
16:14
|
(7) Да тут как - бы и не понятно как искать :)
|
|||
10
zenik
21.01.25
✎
16:21
|
(9) ВычислитьВыражениеСГруппировкойМассив
|
|||
11
alexela
21.01.25
✎
16:24
|
(0) ответ в (4) и пару строк кода
|
|||
12
ОМЭЗ
21.01.25
✎
16:34
|
(10) функция хороша , но мне бы готовый результат поместить во временную таблицу
(11) Открой тайну |
|||
13
Fedor-1971
21.01.25
✎
16:47
|
(8) По факту, кодом формируешь текст запроса
примерно так: инф = новый Запрос; инф.МенеджерВременныхТаблиц = новый МенеджерВременнныхТаблиц; инф.Текст = "ВЫБРАТЬ ПродажиН.Сделка как Сделка, ПродажиН.Регистратор.ВидДопСоглашения как Скидка поместить таб ИЗ РегистрНакопления.ПродажиН.Обороты(, &ДатаОтчета, Авто, ) КАК ПродажиН ГДЕ ПродажиН.Регистратор ССЫЛКА Документ.ДС ; Выбрать Различные таб.Скидка из таб" выб = выб.выполнить()Выбрать(); текст = ""; текстСоединений = ""; кол = 1; Пока выб.Следующий() цикл стрНомер = "Скидка" + Строка(кол); // замени на Формат если точно известно, что количество скидок может быть больше 1000 текст = текст+" IsNull(таб"+стрНомер+".Скидка, Неопределено) как "+ стрНомер + ","; текстСоединений = текстСоединений + " Левое Соединение таб как таб" + стрНомер+ " по ТБ.Сделка = таб" + стрНомер+ ".Сделка И "таб" + стрНомер+ ".Скидка = &"+ стрНомер; инф.УстановитьПараметр(стрНомер, выб.Скидка); КонецЦикла; дальше зачищаешь лишнюю "," в Текст текстЗапроса = "Выбрать ТБ.Сделка как Сделка," + Текст + " ИЗ таб как ТБ " + текстСоединений; Поиграйся, тут будет вопрос, что нужно отобрать сделки иначе будут двоиться строки |
|||
14
alexela
21.01.25
✎
16:53
|
(12) как-то так, дальше думаю разберешься
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПродажиН.Сделка, ПродажиН.Регистратор.ВидДопСоглашения ИЗ РегистрНакопления.ПродажиН.Обороты(, &ДатаОтчета, Авто, ) КАК ПродажиН ГДЕ ПродажиН.Регистратор ССЫЛКА Документ.ДС ИТОГИ ПО ПродажиН.Сделка" Результат = Запрос.Выполнить(); ВыборкаПоСделкам = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); Пока ВыборкаПоСделкам.Следующий() Цикл Выборка = ВыборкаПоСделкам.Выбрать; СтрокаСкидок = ""; Пока Выборка.Следующий() Цикл СтрокаСкидок = СтрокаСкидок + Выборка.Скидка; КонецЦикла; ИтоговаяСтрока = "" + ВыборкаПоСделкам.Сделка + "|" + СтрокаСкидок + "|" КонецЦикла; |
|||
15
ОМЭЗ
21.01.25
✎
16:52
|
(13) (14) Спасибо конечно , а все в запросе нельзя это сделать ? без лишнего кода?
|
|||
16
Fedor-1971
21.01.25
✎
16:57
|
(11) не такая уж и пара строк
идея такая: 1. Создаём схему компоновки данных 2. Приклеиваем оной запрос 3. Делаем настройку отчёта в виде таблицы с колонками Скидка п.п. 1-3 дешевле сделать отдельным отчётом 4. вклиниваемся в формирование отчёта после получения табличного документа (до того есть только выборка как в (0)) 5. Жуём оный как мыши кактус |
|||
17
Fedor-1971
21.01.25
✎
17:06
|
(14) ТС нужно получить поля во временной таблице запроса, а не для печатной формы
(15) Нет, у тебя неизвестно количество Скидок, сиречь, сколько колонок тебе надо под скидки? И каждая скидка должна стать в свою колонку |
|||
18
arsik
21.01.25
✎
17:00
|
(17) Так можно сначала посчитать запросом количество различных вариантов скидок. И создать запрос на основании выборки с нужным количеством столбцов.
|
|||
19
Fedor-1971
21.01.25
✎
17:09
|
(18) Я в (13) расписал алгоритм, надо чуть поправить напильником
|
|||
20
Garykom
21.01.25
✎
17:22
|
(0) основа нумерация строк с разными ВидДопСоглашения внутри группировки Сделка
https://forum.infostart.ru/forum9/topic299837/ |
|||
21
Garykom
21.01.25
✎
17:25
|
(20)+ вот мастер класс от Ильдаровича
https://infostart.ru/1c/articles/200275/ |
|||
22
Fedor-1971
21.01.25
✎
17:33
|
(20) А сможет потом использовать АвтоНомер при соединении таблиц?
Тут больше проблема в том, что нам неизвестно количество колонок для Скидок |
|||
23
Asmody
21.01.25
✎
17:28
|
(0) СКД, Массив() в выражении ресурса
|
|||
24
PR
21.01.25
✎
18:17
|
(22) Проблема тут не в этом, а в том, что нихрена непонятно, к чему так остро нужен сабж именно в запросе
|
|||
25
Garykom
21.01.25
✎
20:01
|
(24) Банально быстродействие
Как это ни странно но чем кодом большую ТЗ обрабатывать - быстрее ее передать в запрос как ВТ и фигачить там запросом Уже неоднократно тесты были Даже с учетом затрат на передачу |
|||
26
PR
21.01.25
✎
20:22
|
(25) Ой, да ладно, пофигу, где обрабатывать 100 записей
|
|||
27
Garykom
21.01.25
✎
20:29
|
(26) Где увидел что записей 100?
А не 100 000? |
|||
28
PR
21.01.25
✎
20:40
|
(27) А ты где увидел, что 100 000, а не 100, любитель домыслить?
Я же ТС по сути спросил, нахрена ему это, а не тебя, к чему мне твои фантазии |
|||
29
Garykom
21.01.25
✎
21:42
|
(28) А другим зачем твои фантазии про "100 записей" ?
И в (26) ты на мой пост (25) хрень написал, не на пост ТС |
|||
30
PR
21.01.25
✎
22:34
|
(29) Ну так ты просто не писал бы (25) и не было бы вообще никаких ничьих фантазий
|
|||
31
Garykom
21.01.25
✎
23:38
|
(30) Ты спросил зачем нужно
Я ответил зачем - для быстродействия например Что не так? |
|||
32
PR
22.01.25
✎
02:04
|
(31) То, что я спросил не тебя и твои например меня не интересуют
Как пример я и так понимаю, что быстродействие может быть причиной, но вообще, учитывая (15), причина скорее всего в том, что ТС просто впадлу что-то писать Поэтому я его и спросил, но нет, нужно было влезть тебе, ага |
|||
33
Fedor-1971
22.01.25
✎
09:12
|
(24) Например, ТС делает отчёт на макете с подвижным количеством колонок. Можно кодом с танцами и бубном (сначала формируем заголовок, потом каждую строку с контролем пропуска колонок), а можно запросом - малость пошаманить с кодом составления запроса и имеем счастье в виде линейного вывода информации
(32) что уж, прямо так уж. Походу, ТС всё понял после (17) и отправился работать (я надеюсь) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |