Имя: Пароль:
1C
1С v8
В запись поля СКД получить конкатенацию данных из полей другого запроса?
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 (((
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.