Сложение строк в запросе

1. sbern1 9 05.06.12 13:02 Сейчас в теме
К примеру есть таблица "Приход"
|номенклатура|№ Накладной|Сумма|
--------------------------------
|Стул |14 |100 |
--------------------------------
|шкаф |21 |250 |
--------------------------------
|Стул |32 |110 |

Как правильно написать текст запроса, чтобы получить вот такой результат:

|номенклатура|№ Накладной|Сумма|
--------------------------------
|Стул |№14, №32 |220 |
--------------------------------
|шкаф |№21 |250 |

Заранее всем спасибо
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
15. Leoon 3 06.06.12 14:44 Сейчас в теме
(1) Вроде бы только заполнением ТЗ в цикле.
Типа итоги по Номенклатуре и с помощью методов выборки СледующийПоЗначениюПоля(), НайтиСледующий() и Сбросить() собираем ТЗ.
2. AlexO 135 05.06.12 13:05 Сейчас в теме
Сгруппируйте одинаковую номенклатуру в запросе, а потом обходом пилите из результирующей ТЗ в новую ТЗ все, что угодно, и по каким угодно условиям и форматам вывода.
3. AlexO 135 05.06.12 13:07 Сейчас в теме
(0) НИ ОДИН ЗАПРОС (да и ни одна реляционная таблица) не позволит Вам сделать вот это:
|Стул |№14, №32

т.е. всунуть в один тип данных (определенный полем таблицы) совершенно другой.
31. Kernelbug 34 29.12.22 14:44 Сейчас в теме
(3) Простите, но почти во всех РСУБД существует агрегатная функция, которая делает именно то, что нужно автору. И лично мне её ой как не хватает в 1С...

В Постгре это -- string_agg, в Файрбёрд -- list, в Оракл -- listagg и т. д.
4. sbern1 9 05.06.12 13:10 Сейчас в теме
Это понятно, но в данном случаи не подходит. Хотелось бы получить результат в запросе, так как отчет пишется в СКД, и данный результат это промежуточная таблица, которая потом будет соединена с другой.
6. necropunk 9 05.06.12 13:15 Сейчас в теме
(4) sbern1, А нельзя результат СКД выгрузить в ТЗ, там его соехинить программно как хотите с другой ТЗ, с какими угодно преобразованиями, а потом получившуюся ТЗ запихать в схему компоновки (другую) и по ней уже строить отчет?
usercool; sbern1; +2 Ответить
8. AlexO 135 05.06.12 13:18 Сейчас в теме
(6) necropunk,
а потом получившуюся ТЗ запихать в схему компоновки (другую)

зачем же в "другую" - это пусть будет первоначальный запрос "другой" для формирования промежуточного ТЗ, а отчет будет тот же самый :)
10. necropunk 9 05.06.12 16:04 Сейчас в теме
(8) AlexO, Да, я что-то загнался немного - ТЗ туда сюда по СКД гонять :) Да, просто сам весь в коде, голова кругом немного.
7. AlexO 135 05.06.12 13:15 Сейчас в теме
(4) sbern1,
так сделайте свое уникальное ТЗ на основе запроса, и используйте его как внешний источник для запроса в СКД.
Заодно и внешними источниками запроса научитесь работать :)
5. necropunk 9 05.06.12 13:13 Сейчас в теме
Да, AlexO прав. В запросе даже строки суммировать нельзя насколько помню, а вы хотите кучу типов в одно поле запихать... Пруф:
http://www.nashe1c.ru/materials-view.jsp?id=46#oultine_9
13. bforce 481 06.06.12 14:10 Сейчас в теме
(5) necropunk, получается строки суммировать можно, причем работает даже без ВЫРАЗИТЬ.
9. sbern1 9 05.06.12 14:08 Сейчас в теме
Уже так и думал подготовить ТЗ и передать в СКД. Просто думал есть более простой способ
11. AlexO 135 06.06.12 13:37 Сейчас в теме
(9) sbern1,
да куда уж проще-то :)
12. bforce 481 06.06.12 14:08 Сейчас в теме
А, мне кажется, что можно сделать отдельное поле и в него объединять СТРОКОВЫЕ значения.

Как пример
ВЫБРАТЬ
	ВЫРАЗИТЬ(Номенклатура.Наименование + " " + Номенклатура.Код КАК Строка)
ИЗ Справочник.Номенклатура КАК Номенклатура
Dimbayyyy; KAV2; Andy_NTG; +3 Ответить
14. AlexO 135 06.06.12 14:15 Сейчас в теме
(12) bforce,
согласитесь, что
К примеру есть таблица "Приход"
|номенклатура|№ Накладной|Сумма|
--------------------------------
|Стул |14 |100 |
--------------------------------

Как правильно написать текст запроса, чтобы получить вот такой результат:

|номенклатура|№ Накладной|Сумма|
--------------------------------
|Стул |№14, №32 |220 |

и
ВЫБРАТЬ
   ВЫРАЗИТЬ(Номенклатура.Наименование + " " + Номенклатура.Код КАК Строка)
ИЗ Справочник.Номенклатура КАК Номенклатура

- это не одно и то же?
В первом случае у вас номер - число, во-втором - "номер" вдруг стал "Код", который еще и должен быть тип "строка" :)
1С не делает в запросах преобразование между типами.
Даже через ВЫРАЗИТЬ.
Это главное.
Alex-krk; iott; sbern1; +3 Ответить
16. bforce 481 06.06.12 14:52 Сейчас в теме
(14) AlexO, будьте точнее. У реквизита документа Номер тип строка. То же самое относится и к справочникам (если Вы специально не изменяли тип).

В своем примере я могу легко объединить Номенклатуру и Номер документа. Ничего мне в этом не мешает.

Про преобразование типов я не упоминал и не спорил, так что, демонстрация уровня Вашего IQ с треском провалилась.
17. AlexO 135 06.06.12 15:44 Сейчас в теме
18. AlexO 135 13.06.12 22:16 Сейчас в теме
(16) bforce,
сложил, что-ли, строки свои ? :))
сначала шапками закидаем, потом разбираются....
что хоть понаделал-то?
Alexey_A; +1 Ответить
19. nilabs 8 14.06.12 14:51 Сейчас в теме
при приведении к строке в запросе, указывайте размер: Строка(50), Строка(100) и т.д., иначе могут быть проблемы с конкатенацией строк неограниченной длины
20. man99 18.06.12 15:56 Сейчас в теме
В запросе такое нереально. А кто мешает для СКД в качестве таблицы данных указать нужную ТЗ?
21. djonm 19.06.12 15:49 Сейчас в теме
можно еще получить sql структуру базы данных и ваять прямые запросы. здесь подробней:

ПолучитьСтруктуруХраненияБазыДанных (GetDBStorageStructureInfo)
Глобальный контекст
ПолучитьСтруктуруХраненияБазыДанных (GetDBStorageStructureInfo)
Синтаксис:
ПолучитьСтруктуруХраненияБазыДанных(<Объекты метаданных>, <Имена базы данных>)
Параметры:
<Объекты метаданных> (необязательный)
Тип: Массив. Массив имен объектов метаданных или массив объектов метаданных, для которых требуется получить структуру таблиц базы данных.
<Имена базы данных> (необязательный)
Тип: Булево. Определяет, в каких терминах выдается информация о структуре хранения.
Истина - в терминах СУБД
Ложь - в терминах SDBL.
Значение по умолчанию: Ложь
Возвращаемое значение:
Тип: ТаблицаЗначений. Возвращает таблицу значений с описаниями структуры таблиц, индексов и полей базы данных в терминах SDBL или используемой СУБД, в зависимости от значения параметра "Имена базы данных".
Если параметр не используется, то возвращаемая таблица значений содержит информацию о структуре таблиц базы данных всех объектов метаданных.
Таблица значений включает следующие колонки:
ИмяТаблицыХранения(StorageTableName) – имя таблицы SDBL или базы данных;
ИмяТаблицы(TableName) – имя таблицы в терминах языка запросов (для тех у кого оно есть);
Метаданные(Metadata) – полное имя объекта метаданных;
Назначение(Purpose) – назначение таблицы:
Основная(Main) - основная;
Константы(Constants) - константы;
Итоги(Totals) - итоги;
ИтогиПоСчетам(TotalsByAccounts) - итоги по счетам;
ИтогиПоСчетамССубконто(TotalsByAccountsWithExtDim) - итоги по счетам с субконто;
ИтогиМеждуСчетами(TotalsBetweenAccounts) - итоги между счетами;
ВидыСубконто(ExtDimensionTypes) - виды субконто;
ЗначенияСубконто(ExtDimensionsValues) - значения субконто;
ВытесняющиеВидыРасчета(DisplacingCalculationTypes) - вытесняющие виды расчета;
ПорядокВытеснения(DisplacementOrder) - порядок вытеснения;
ВедущиеВидыРасчета(LeadingCalculationTypes) - ведущие виды расчета;
БазовыеВидыРасчета(BaseCalculationTypes) - базовые виды расчета;
ПериодыДействия(ActionPeriods) - периоды действия;
ГраницыПоследовательности(SequenceBoundaries) - границы последовательности;
ТочкиМаршрута(RoutePoints) - точки маршрута бизнес-процесса;
ТабличнаяЧасть(TabularSection) - табличная часть;
РегистрацияИзменений(ChangeRecord) - регистрация изменений;
РегистрацияИзмененийКонстант(ConstantsChangeRecord) - регистрация изменений констант;
РегистрацияИзмененийКонфигурации(ConfigChangeRecord) - регистрация изменений конфигурации;
РегистрацияИзмененийВнешнихСвойствКонфигурации(ConfigExtPropertiesChangeRecord) - регистрация изменений внешних свойств конфигурации;
ТаблицаНастроекХраненияИтоговРегистровНакопления(AccumulationRegistersOptionsTable) - таблица настроек хранения итогов регистров накопления;
ТаблицаНастроекХраненияИтоговРегистровБухгалтерии(AccountRegistersOptionsTable) - таблица настроек хранения итогов регистров бухгалтерии;
Поля(Fields) - таблица значений с полями таблицы базы данных;
ИмяПоляХранения(StorageFieldName) - имя поля SDBL или базы данных;
ИмяПоля(FieldName) - имя поля в терминах языка запросов (для тех у кого оно есть);
Метаданные(Metadata) – полное имя объекта метаданных;
Индексы(Indexes) – таблица значений с индексами таблицы базы данных;
ИмяИндексаХранения(StorageIndexName) - имя индекса SDBL или базы данных;
ПоляИНдекса(IndexFields) - таблица значений с полями индекса;
ИмяПоляХранения(StorageFieldName) - имя поля SDBL или базы данных;
ИмяПоля(FieldName) - имя поля в терминах языка запросов (для тех у кого оно есть);
Метаданные(Metadata) – полное имя объекта метаданных.
Описание:
Получает информацию о структуре таблиц базы данных для переданных в качестве параметра массива имен объектов метаданных или массива объектов метаданных для административных действий с ней.
Если параметр не используется, то возвращаемая таблица значений содержит информацию о структуре таблиц базы данных всех объектов метаданных.
Примечание:
Следует использовать метод только для административных задач обслуживания базы данных и анализа записей технологического журнала. Не рекомендуется применять метод для реализации какой-либо части прикладной функциональности.
Пример:
МассивИменМетаданных = Новый Массив();
МассивИменМетаданных.Добавить("Справочник.Номенклатура");
МассивИменМетаданных.Добавить("Документ.РасходнаяНакладная");
СтруктБД=ПолучитьСтруктуруХраненияБазыДанных(МассивИменМетаданных);
22. AlexO 135 11.08.12 23:28 Сейчас в теме
(21) djonm,
куда, простите, вы прямые запросы ваять собрались?
23. NittenRenegade 108 17.10.13 13:30 Сейчас в теме
Если разговор шел за СКД, можно использовать вычисляемые поля и конкатенировать там самым безобразным образом

ВЫБОР КОГДА ВалютаКт <> &Рубли  И ВалютаДт <> &Рубли И ВалютаКт <> ВалютаДт 
ТОГДА Строка(ВалютнаяСуммаДт)+"/"+Строка(ВалютнаяСуммаКт) 
КОГДА ВалютаКт <> &Рубли ТОГДА ВалютнаяСуммаКт 
КОГДА ВалютаДт <> &Рубли ТОГДА ВалютнаяСуммаДт  
КОНЕЦ
NN2P; pavelqq; +2 Ответить
24. apkholding 11.02.15 12:37 Сейчас в теме
ВычислитьВыражениеСГруппировкойМассив(...)
25. alex_4x 85 26.08.15 14:28 Сейчас в теме
Как в запросе преобразовать ЧИСЛО в СТРОКУ и ДАТУ в СТРОКУ без извращений ?
Возможно как-то через временные таблицы это можно сделать ???
28. antz 26.08.15 14:43 Сейчас в теме
(25) alex_4x, не далее чем сегодня проскакивала тема.
26. antz 26.08.15 14:40 Сейчас в теме
Зачем огород-то городить? Есть же в СКД прекрасные Массив и СоединитьСтроки.
27. PetroP 26.08.15 14:40 Сейчас в теме
А что говорит поиск по ресурсу?
29. ildarovich 7861 26.08.15 14:52 Сейчас в теме
30. sokol_6630 3 20.04.20 07:59 Сейчас в теме
Привет. Пользуйся СоединитьСтроки!!!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот