|
В запись поля СКД получить конкатенацию данных из полей другого запроса? | ☑ | ||
---|---|---|---|---|
0
vdeemer
24.03.14
✎
11:03
|
Доброе время суток!
Две таблицы, Таблица1 (1) -> Таблица2 (многие) Таблица1 (Поле1_1, Поле1_2) Таблица2 (Поле2_1, Поле1_1) Запрос выбирает все записи из Таблицы1 и к каждой из них все соответствующие записи из Таблицы 2, соединенные через #13 (одна большая строка). Вычитал, что можно сделать функцию в вычисляемом поле и в ней запросом выбирать и соединять, возвращать строку. Но топорное решение какое-то... Можно ли сделать это умнее? Спасибо. |
|||
1
Жан Пердежон
24.03.14
✎
11:06
|
Массив()
|
|||
2
Maxus43
24.03.14
✎
11:15
|
МАССИВ(Ресурс)
|
|||
3
vdeemer
24.03.14
✎
11:18
|
Ага, вроде даже пример нашел на Массив () и СоединитьСтроки (), спасибо
|
|||
4
vdeemer
24.03.14
✎
11:24
|
Какой-то неудачный пример попался, непонятно ничего (((
|
|||
5
Нерезидент РФ
24.03.14
✎
11:32
|
а СоединитьСтроки это что? не нашел в СП
|
|||
6
vdeemer
24.03.14
✎
11:33
|
СоединитьСтроки (JoinStrings)
Предназначена для объединения строк в одну строку. Синтаксис: СоединитьСтроки (Значение, РазделительЭлементов, РазделителиКолонок) Параметры: Значение - выражения, которые нужно объединить в одну строку. Если является Массивом, то в строку будут объединяться элементы массива. Если является ТаблицаЗначений, то в строку будут объединяться все колонки и строки таблицы; РазделительЭлементов - строка, содержащая текст, который нужно использовать в качестве разделителя между элементами массива и строками таблицы значений. По умолчанию – символ перевода строк; РазделителиКолонок -строка, содержащая текст, который нужно использовать в качестве разделителя между колонками таблицы значений. По умолчанию "; ". Пример: СоединитьСтроки(ТаблицаЗначений(НомерТелефона, Адрес)); |
|||
7
vdeemer
24.03.14
✎
11:34
|
Только вот не пойму, как (6) применить к моим баранам
|
|||
8
Нерезидент РФ
24.03.14
✎
11:42
|
блин, СП упорно не находит Массив(), СоединитьСтроки(), ТаблицаЗначений()...
проверил в конфигураторе на платформе .3 |
|||
9
Нерезидент РФ
24.03.14
✎
11:42
|
8.3
|
|||
10
vdeemer
24.03.14
✎
11:43
|
(8) надо не в СП, а в справке искать
|
|||
11
vdeemer
24.03.14
✎
11:44
|
Массив (Array)
Функция формирует массив, содержащий для каждой детальной записи значение параметра. Синтаксис: Массив([Различные] Выражение) В качестве параметра можно использовать таблицу значений. При этом результатом работы функции будет массив, содержащий значения первой колонки таблицы значений, переданной в качестве параметра. Если выражение содержит функцию Массив, то считается, что данное выражение является агрегатным. Если указано ключевое слово Различные, то получаемый массив не будет содержать дублирующихся значений. Пример: Массив(Контрагент) |
|||
12
Нерезидент РФ
24.03.14
✎
11:47
|
а по сабжу, чтобы использовать выражение ВычислитьВыражениеСГруппировкойТаблицаЗначений нужно в запросе соединить две таблицы и получить вида:
Таблица1.Поле1, Таблица2.Поле1, Таблица2.Поле2, Таблица2.Поле3, в СКД группировку по Таблица1.Поле1, а в ресурсы добавить следующее выражение ВычислитьВыражениеСГруппировкойТаблицаЗначений(Таблица2.Поле1,Таблица2.Поле2, Таблица2.Поле3). и в итоговом табличном документе должен получить в первой колонке - Таблица1.Поле1, а во второй - значения трех колонок второй таблицы через запятую |
|||
13
Нерезидент РФ
24.03.14
✎
11:47
|
в справке тоже искал
|
|||
14
vdeemer
24.03.14
✎
11:49
|
(12) сейчас-сейчас...
(13) Конфигуратор-Справка-1С-СКД-Язык выражений СКД-Агрегатные функции |
|||
15
Нерезидент РФ
24.03.14
✎
11:50
|
(14) ооооо благодарствую. сцууко через поиск не мог на это выйти, не догадался по содержанию найти )
|
|||
16
vdeemer
24.03.14
✎
11:56
|
(12) "в ресурсы" имеется в виду "вычисляемое поле"?
|
|||
17
Нерезидент РФ
24.03.14
✎
11:58
|
(16 ошибся, в вычисляемое поле.
|
|||
18
Нерезидент РФ
24.03.14
✎
12:06
|
кому интересно, вот пример макета СКД, который покажет работу "конкатенации строк"
<?xml version="1.0" encoding="UTF-8"?> <DataCompositionSchema xmlns="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcscom="http://v8.1c.ru/8.1/data-composition-system/common" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <dataSource> <name>ИсточникДанных1</name> <dataSourceType>Local</dataSourceType> </dataSource> <dataSet xsi:type="DataSetQuery"> <name>НаборДанных1</name> <field xsi:type="DataSetFieldField"> <dataPath>Номенклатура</dataPath> <field>Номенклатура</field> <role> <dcscom:dimension>true</dcscom:dimension> </role> </field> <field xsi:type="DataSetFieldField"> <dataPath>Склад</dataPath> <field>Склад</field> <role> <dcscom:dimension>true</dcscom:dimension> </role> </field> <field xsi:type="DataSetFieldField"> <dataPath>Количество</dataPath> <field>Количество</field> </field> <dataSource>ИсточникДанных1</dataSource> <query>ВЫБРАТЬ ПЕРВЫЕ 200 ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, ТоварыНаСкладахОстатки.Склад КАК Склад, ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество {ВЫБРАТЬ Номенклатура.*, Склад.*, Количество} ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(, ) КАК ТоварыНаСкладахОстатки {ГДЕ ТоварыНаСкладахОстатки.Номенклатура.*, ТоварыНаСкладахОстатки.Склад.*}</query> <autoFillFields>false</autoFillFields> </dataSet> <calculatedField> <dataPath>ОстаткиНаСкладахСводно</dataPath> <expression>СоединитьСтроки(ТаблицаЗначений(Склад, Количество),, ":")</expression> <title xsi:type="v8:LocalStringType"> <v8:item> <v8:lang>ru</v8:lang> <v8:content>Остатки на складах сводно</v8:content> </v8:item> </title> </calculatedField> <totalField> <dataPath>ОстаткиНаСкладахСводно</dataPath> <expression>ОстаткиНаСкладахСводно</expression> </totalField> <settingsVariant> <dcsset:name>Основной</dcsset:name> <dcsset:presentation xsi:type="xs:string">Основной</dcsset:presentation> <dcsset:settings xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows"> <dcsset:selection> <dcsset:item xsi:type="dcsset:SelectedItemField"> <dcsset:field>ОстаткиНаСкладахСводно</dcsset:field> </dcsset:item> </dcsset:selection> <dcsset:item xsi:type="dcsset:StructureItemGroup"> <dcsset:groupItems> <dcsset:item xsi:type="dcsset:GroupItemField"> <dcsset:field>Номенклатура</dcsset:field> <dcsset:groupType>Items</dcsset:groupType> <dcsset:periodAdditionType>None</dcsset:periodAdditionType> <dcsset:periodAdditionBegin xsi:type="xs:dateTime">0001-01-01T00:00:00</dcsset:periodAdditionBegin> <dcsset:periodAdditionEnd xsi:type="xs:dateTime">0001-01-01T00:00:00</dcsset:periodAdditionEnd> </dcsset:item> </dcsset:groupItems> <dcsset:order> <dcsset:item xsi:type="dcsset:OrderItemAuto"/> </dcsset:order> <dcsset:selection> <dcsset:item xsi:type="dcsset:SelectedItemAuto"/> </dcsset:selection> </dcsset:item> </dcsset:settings> </settingsVariant> </DataCompositionSchema> должен работать на любой типовой с регистром ТоварыНаСкладах |
|||
19
vdeemer
24.03.14
✎
13:30
|
Ошибка разбора XML (((
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |