СКД СоединитьСтроки
Помогите пж побороть) не соединяются в одну ячейку данные колонки из ТЧ, выводится отдельно задваивая данные отчета(( Есть док ЧекККА, в нем несколько ТЧ мне нужно вывести данные с трех ТЧ сгуппировав по складу, ДисконтнойКарте с владельцем, а потом уж группировка по номенклатуре с детализацией разной из ТЧ Товары, с ТЧ Акции получить вид акции, тут может быть несколько строк в целом на данный док поэтому нужно сгруппировать в одно значение и выводить напротив каждой номенклатуры этого документа, пока он выводит столько раз номенклатуру сколько строк на в этой ТЧ_Акции(( Пытаюсь это решить так, на закладке ВычисляемоеПоле, добавила ПутьКДанным-МассивАкции; Выражение- Массив(Вид_Акции) и в Ресурсы:Поле- МассивАкции;выражение-СоединитьСтроки(Вид_Акции,»,»,»») но пока без хэппиэнда..
Вот и код моего отчета если что.
ВЫБРАТЬ
ЧекККМТовары.Номенклатура,
СУММА(ВЫБОР
КОГДА ЧекККМТовары.Ссылка.ВидОперации <> &Возврат
ТОГДА ЧекККМТовары.Количество
ИНАЧЕ -ЧекККМТовары.Количество
КОНЕЦ) КАК Количество,
ЧекККМТовары.Ссылка.Склад,
ЧекККМТовары.Ссылка.Дата,
ВЫБОР
КОГДА ЧекККМТовары.Ссылка.ДисконтнаяКарта ЕСТЬ NULL
ТОГДА 0
ИНАЧЕ ЧекККМТовары.Ссылка.ДисконтнаяКарта
КОНЕЦ КАК ДисконтнаяКарта,
ЧекККМТовары.ХарактеристикаНоменклатуры,
ЧекККМТовары.Ссылка КАК Документ,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЧекККМТовары.Ссылка.ИспользованиеБонусов) КАК ИспользованиеБонусов,
СУММА(ВЫБОР
КОГДА ЧекККМТовары.Ссылка.ВидОперации <> &Возврат
ТОГДА ЧекККМТовары.Сумма
ИНАЧЕ -ЧекККМТовары.Сумма
КОНЕЦ) КАК Сумма,
СУММА(ВЫБОР
КОГДА ЧекККМТовары.Ссылка.ВидОперации <> &Возврат
ТОГДА -ЧекККМТовары.СкидкаСуммойРучная
ИНАЧЕ ЧекККМТовары.СкидкаСуммойРучная
КОНЕЦ) КАК СкидкаРучнаяСуммой,
СУММА(ВЫБОР
КОГДА ЧекККМТовары.Ссылка.ВидОперации <> &Возврат
ТОГДА -ЧекККМТовары.СкидкаПроцентомАвто
ИНАЧЕ ЧекККМТовары.СкидкаПроцентомАвто
КОНЕЦ) КАК СкидкаАвтоматическая,
СУММА(ВЫБОР
КОГДА ЧекККМТовары.Ссылка.ВидОперации <> &Возврат
ТОГДА -ЧекККМТовары.СкидкаПроцентомРучная
ИНАЧЕ ЧекККМТовары.СкидкаПроцентомРучная
КОНЕЦ) КАК СкидкаРучнаяПроцентом,
СУММА(ВЫБОР
КОГДА ЧекККМТовары.Ссылка.ВидОперации <> &Возврат
ТОГДА ЧекККМТовары.СуммаБонусы
ИНАЧЕ -ЧекККМТовары.СуммаБонусы
КОНЕЦ) КАК БонусыНачисленные,
СУММА(ВЫБОР
КОГДА ЧекККМТовары.Ссылка.ВидОперации <> &Возврат
ТОГДА -ЧекККМТовары.СкидкаСуммойБонус
ИНАЧЕ ЧекККМТовары.СкидкаСуммойБонус
КОНЕЦ) КАК СкидкаИспользованыБонусы,
СУММА(ВЫБОР
КОГДА ЧекККМТовары.Ссылка.ВидОперации <> &Возврат
ТОГДА -ЧекККМТовары.СуммаСертификата
ИНАЧЕ ЧекККМТовары.СуммаСертификата
КОНЕЦ) КАК Сертификат,
СУММА(ЧекККМТовары.Цена * ВЫБОР
КОГДА ЧекККМТовары.Ссылка.ВидОперации <> &Возврат
ТОГДА ЧекККМТовары.Количество
ИНАЧЕ -ЧекККМТовары.Количество
КОНЕЦ) КАК СуммаБезСкидки,
СУММА(ВЫБОР
КОГДА ЧекККМТовары.Ссылка.ВидОперации <> &Возврат
ТОГДА -ЧекККМТовары.СписанноБонусовВозврат
ИНАЧЕ ЧекККМТовары.СписанноБонусовВозврат
КОНЕЦ) КАК СписанноБонусовВозврат,
ЧекККМТовары.СА_Продавец,
ЧекККМТовары.ПроцентБонус,
СУММА(ВЫБОР
КОГДА ЧекККМТовары.Ссылка.ВидОперации <> &Возврат
ТОГДА ЧекККМТовары.СуммаБонусы
ИНАЧЕ -ЧекККМТовары.СуммаБонусы
КОНЕЦ) КАК СуммаБонусовНачислено,
ВЫБОР
КОГДА ЧекККМТовары.Ссылка.ВладелецДисконтнойКарты ЕСТЬ NULL
ТОГДА 0
ИНАЧЕ ЧекККМТовары.Ссылка.ВладелецДисконтнойКарты
КОНЕЦ КАК ВладелецДК,
ЧекККМТовары.Номенклатура.Артикул КАК Артикул,
ЧекККМТовары.Ссылка.КассаККМ КАК Касса,
ЧекККМТовары.Номенклатура.Модель КАК Модель,
ВЫБОР
КОГДА ЧекККМТовары.Ссылка.ВидОперации <> &Возврат
ТОГДА ЧекККМТовары.Цена
ИНАЧЕ -ЧекККМТовары.Цена
КОНЕЦ КАК Цена,
ВЫБОР
КОГДА ЧекККМТовары.Ссылка.ВидОперации <> &Возврат
ТОГДА ЧекККМТовары.Сумма / ЧекККМТовары.Количество
ИНАЧЕ -(ЧекККМТовары.Сумма / ЧекККМТовары.Количество)
КОНЕЦ КАК ЦенаСоСкидкой
ПОМЕСТИТЬ ТаблицаЧеков
ИЗ
Документ.ЧекККМ.Товары КАК ЧекККМТовары
ГДЕ
ЧекККМТовары.Ссылка.Проведен = ИСТИНА
И ЧекККМТовары.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
СГРУППИРОВАТЬ ПО
ЧекККМТовары.Номенклатура,
ЧекККМТовары.Ссылка.Склад,
ЧекККМТовары.Ссылка.Дата,
ЧекККМТовары.ХарактеристикаНоменклатуры,
ЧекККМТовары.Ссылка,
ЧекККМТовары.СА_Продавец,
ЧекККМТовары.ПроцентБонус,
ЧекККМТовары.Номенклатура.Артикул,
ВЫБОР
КОГДА ЧекККМТовары.Ссылка.ДисконтнаяКарта ЕСТЬ NULL
ТОГДА 0
ИНАЧЕ ЧекККМТовары.Ссылка.ДисконтнаяКарта
КОНЕЦ,
ВЫБОР
КОГДА ЧекККМТовары.Ссылка.ВладелецДисконтнойКарты ЕСТЬ NULL
ТОГДА 0
ИНАЧЕ ЧекККМТовары.Ссылка.ВладелецДисконтнойКарты
КОНЕЦ,
ВЫБОР
КОГДА ЧекККМТовары.Ссылка.ВидОперации <> &Возврат
ТОГДА ЧекККМТовары.Цена
ИНАЧЕ -ЧекККМТовары.Цена
КОНЕЦ,
ЧекККМТовары.Ссылка.КассаККМ,
ЧекККМТовары.Номенклатура.Модель,
ВЫБОР
КОГДА ЧекККМТовары.Ссылка.ВидОперации <> &Возврат
ТОГДА ЧекККМТовары.Сумма / ЧекККМТовары.Количество
ИНАЧЕ -(ЧекККМТовары.Сумма / ЧекККМТовары.Количество)
КОНЕЦ
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЧекККМАкции.Ссылка КАК Ссылка,
ЧекККМАкции.ВидАкции КАК ВидАкции,
ЧекККМАкции.ТипАкции КАК ТипАкции,
ЧекККМАкции.Ссылка.Дата,
ЧекККМАкции.Ссылка.Склад,
ЧекККМАкции.Ссылка.КассаККМ,
ЧекККМАкции.Ссылка.ДисконтнаяКарта,
ЧекККМАкции.Ссылка.ВладелецДисконтнойКарты,
ЧекККМАкции.Номенклатура,
ЧекККМАкции.ХарактеристикаНоменклатуры
ПОМЕСТИТЬ Акция
<ВЫБРАТЬ
ВидАкции.*,
ТипАкции.*>
ИЗ
Документ.ЧекККМ.Акции КАК ЧекККМАкции
ГДЕ
ЧекККМАкции.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
И ЧекККМАкции.Ссылка.Проведен
СГРУППИРОВАТЬ ПО
ЧекККМАкции.Ссылка,
ЧекККМАкции.ВидАкции,
ЧекККМАкции.ТипАкции,
ЧекККМАкции.Ссылка.Дата,
ЧекККМАкции.Ссылка.Склад,
ЧекККМАкции.Ссылка.КассаККМ,
ЧекККМАкции.Ссылка.ДисконтнаяКарта,
ЧекККМАкции.Ссылка.ВладелецДисконтнойКарты,
ЧекККМАкции.Номенклатура,
ЧекККМАкции.ХарактеристикаНоменклатуры
ИНДЕКСИРОВАТЬ ПО
Ссылка
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1
АктивацияДисконтныхКартДисконтныеКарты.Ссылка КАК ДокАктивацииДК,
АктивацияДисконтныхКартДисконтныеКарты.ДисконтнаяКарта,
АктивацияДисконтныхКартДисконтныеКарты.Телефон,
АктивацияДисконтныхКартДисконтныеКарты.Пол,
АктивацияДисконтныхКартДисконтныеКарты.КодСтраны,
АктивацияДисконтныхКартДисконтныеКарты.КодОператора,
АктивацияДисконтныхКартДисконтныеКарты.ДатаРождения,
АктивацияДисконтныхКартДисконтныеКарты.ЭлектронныйАдрес
ИЗ
Документ.АктивацияДисконтныхКарт.ДисконтныеКарты КАК АктивацияДисконтныхКартДисконтныеКарты
ГДЕ
АктивацияДисконтныхКартДисконтныеКарты.Ссылка.Дата Pchelinka
Источник
СоединитьСтроки() — как?
Привет!
Не совсем понимаю, что делает СоединитьСтроки()
У меня две строки:
Город Сеть Цена
Товар1 5,70
— В языке выражений системы компоновки данных реализована функция «Массив()». Результатом работы функции является массив, в котором элементом является значение параметра для каждой детальной записи. Если выражение системы компоновки данных содержит функцию «Массив()», то такое выражение считается агрегатным.
Перед параметром функции допустимо указывать ключевое слово «Различные», в этом случае получаемый массив не будет содержать одинаковых значений.
В качестве параметра функция может принимать выражение, возвращающее таблицу значений. В этом случае результатом работы функции «Массив()» будет массив, содержащий значения первой колонки переданной таблицы значений.
— В языке выражений системы компоновки данных реализована функция «ТаблицаЗначений()». Результатом работы функции является таблица значений, в которой количество колонок равно количеству параметров функции, а данные в колонках получаются из детальных записей. Если выражение системы компоновки данных содержит функцию «ТаблицаЗначений()», то такое выражение считается агрегатным.
Перед параметром функции допустимо указывать ключевое слово «Различные», в этом случае получаемая таблица значений не будет содержать строк, содержащих одинаковые данные.
В языке выражений системы компоновки данных реализована функция «СоединитьСтроки()», предназначенная для объединения строк в одну.
__________________________
Возможно, что СоединитьСтроки() является агрегатной функцией для значений Массива или ТЗ ?
Вот примеры из СП:
Например, для пользовательского поля с выражением:
компоновщик макета сгенерирует для вывода следующее выражение:
Например, пользовательского поля с выражением:
Компоновщик макета сгенерирует для вывода следующее выражение:
СоединитьСтроки(ПолучитьЧасть(Упорядочить(ВычислитьВыражениеСГруппировкойТаблицаЗначений («НаборДанных.Контрагент, НаборДанных.КонтрагентПредставление, Сумма(НаборДанных.СуммаОборот), Представление(НаборДанных.СуммаОборот), НаборДанных.ПолеУпорядочивание», «НаборДанных.Контрагент»), «5, 1, 3»), «2, 4»))
А вот собственно и описание из СП:
СоединитьСтроки (JoinStrings)
Предназначена для объединения строк в одну строку.
СоединитьСтроки (Значение, РазделительЭлементов, РазделителиКолонок)
Значение — выражения, которые нужно объединить в одну строку. Если является Массивом, то в строку будут объединяться элементы массива. Если является ТаблицаЗначений, то в строку будут объединяться все колонки и строки таблицы;
РазделительЭлементов — строка, содержащая текст, который нужно использовать в качестве разделителя между элементами массива и строками таблицы значений. По умолчанию – символ перевода строк;
РазделителиКолонок -строка, содержащая текст, который нужно использовать в качестве разделителя между колонками таблицы значений. По умолчанию «; «.
Пример:
Источник
1с скд соединить строки
Допустим, в вашем отчете на СКД есть ресурс типа Строка, и вам в итогах по группировкам необходимо объединить значения этого ресурса. Для решения этой задачи следует использовать функцию языка выражений СоединитьСтроки.
СОЕДИНИТЬСТРОКИ (JOINSTRINGS)- агрегатная функция, позволяющая объединять строки в одну строку.
- Значения, которые нужно объединить в одну строку. Если является массивом, то в строку будут объединяться элементы массива. Если является таблицей значений, то в строку будут объединяться все колонки и строки таблицы;
- Разделитель элементов. Строка, содержащая текст, который нужно использовать в качестве разделителя между элементами массива и строками таблицы значений. По умолчанию – символ перевода строк;
- Разделители колонок. Строка, содержащая текст, который нужно использовать в качестве разделителя между колонками таблицы значений. По умолчанию «;».
Отчет вводит данные табличной части Товары документа Реализация товаров и услуг. Необходимо в итогах по документу выводить наименования всех товаров присутствующих в нем.
На закладке Ресурсы, схемы компоновки данных отчета, укажем выражение СоединитьСтроки(Номенклатура, “,”) для ресурса Номенклатура.
На закладке Настройки зададим поля и группировки нужные нам в отчете.
Нужно сделать строку из полей: поле1+поле2+поле3. Но тип значений в полях не везде «строка»
Рассмотрим все варианты как соединить строку с другими типами:
1 вариант нужно просто преобразовать число в строку в запросе
используйте Представление(Ваше_числовое_поле) — только это все равно не строка т.к. со строкой не сможете далее объединить.
Плохо то, что все равно дальше объединить со строкой не получится. Всегда будет ошибка.
Почитав немного темы с теми же проблемами не увидел ничего внятного кроме извращений.
И реализовал так:
В запросе вообще не трогаем поля. Для объединения используем раздел вычисляемые поля. Все становится очень просто и понятно.
Вот и все решение. Просто форматируем исходный тип данных в строку, можно даже использовать «Формат» чтобы сделать нужный вид(например убрать разделители как в примере).
СоединитьСтроки — используется в СКД для получения ресурса (объединяет строки в одну строку)
Функция доступна на платформах, начиная с версии 8.2.14.
Для примера рассмотрим задачу, вывести в одной ячейке документ, а в другой всю номенклатуру этого документа в одной ячейке.
В СКД создаем набор данных, и переходим на вкладку «Ресурсы» и создаем необходимые ресурсы с использование функции СоединитьСтроки().
В отчете это будет выглядеть так:
Добрый день!
Спасибо за статью!
Сделал следующим образом: в отчете СКД использовал 2 набора данных «Запрос». В первом присутствуют документы; во втором — данные табличных частей. Соединил наборы по ссылке. Далее сделал, как указано на скрине.
Но в отчет выводится только первая строка табличной части. Подскажите пожалуйста, что я сделал не так?
Источник
1с скд соединить строки не работает
Нужно сделать строку из полей: поле1+поле2+поле3. Но тип значений в полях не везде «строка»
Рассмотрим все варианты как соединить строку с другими типами:
1 вариант нужно просто преобразовать число в строку в запросе
используйте Представление(Ваше_числовое_поле) — только это все равно не строка т.к. со строкой не сможете далее объединить.
Плохо то, что все равно дальше объединить со строкой не получится. Всегда будет ошибка.
Почитав немного темы с теми же проблемами не увидел ничего внятного кроме извращений.
И реализовал так:
В запросе вообще не трогаем поля. Для объединения используем раздел вычисляемые поля. Все становится очень просто и понятно.
Вот и все решение. Просто форматируем исходный тип данных в строку, можно даже использовать «Формат» чтобы сделать нужный вид(например убрать разделители как в примере).
- Главная
- Блог
- В помощь 1с программисту
- Соединить строки или строку с числом в запросе скд. Соединить поля любых типов в строку в СКД
Google+
Источник