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

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 7850 26.08.15 14:52 Сейчас в теме
30. sokol_6630 3 20.04.20 07:59 Сейчас в теме
Привет. Пользуйся СоединитьСтроки!!!
Оставьте свое сообщение
Вакансии
Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день