Объединить строки табличной части 1с

Обновлено: 04.07.2024

Моя конфигурация - 1С Университет ПРОФ, редакция 1.1 (1.1.7.1), хотя в данном вопросе суть не в этом.

Создание отчета выполняется через систему компоновки данных.

Моя задача была вот в чем:

Отчет создается через Систему компоновки данных.

На вкладке "Связи" настраиваем связь между этими наборами данных.

Источник связи - НаборДанных1, приемник связи - НаборДанных2, Выражение источник - Ссылка из НаборДанных1, Выражение приемник - Ссылка из НаборДанных2.

Для того, чтобы в поле табличной части (Авторы.Автор) вывести всех авторов через запятую, переходим на вкладку Ресурсы.

Выбираем поле Авторы.Автор и в части "Выражение" пишем:

то есть мы указываем, что объединяем массив данных и размещаем записи через ", ".

В настройках отчета создаем группировку, я поле не выбирала, т.е. добавила ДетальныеЗаписи.

Ну, и как обычно выбираем поля, которые отчет должен отражать, и добавляем отборы.

Внешний отчет с выводом ТЧ в одну ячейку через запятую

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Эх, стыдоба, я внешнюю функцию сделал в общем модулея для этого :)) Спасибо! Ээээ. Это ж типовая тема - ничего нового и хитрого. В мануалах все описано Удивляет, что появлении незнакомой задачи люди пытаются перерыть множество сайтов, но не документацию.

Выложить разработкой простейшее использование базовых возможностей СКД это круто.

Но раз люди плюсуют, значит, кому-то действительно полезно.

Где-то на сайте уже было описано года два назад. Я помню, потому что мы тогда делали серию похожих отчетов с выводом данных из ТЧ.

1. Адский баян.
2. Достаточно просто использовать Массив, без СоединитьСтроки, тогда ещё и расшифровка будет работать. (Если не нужны экзотические разделители.)

(6) Я бы сказал, это описано в документации по СКД (F1) N лет назад.

(10) dock, F1 в конфигураторе

"1С:Предприятие 8" - "Система компоновки данных" - "Язык выражений системы компоновки данных"

СоединитьСтроки (JoinStrings)
Предназначена для объединения строк в одну строку.
Синтаксис:
СоединитьСтроки (Значение, РазделительЭлементов, РазделителиКолонок)
Параметры:
Значение - выражения, которые нужно объединить в одну строку. Если является Массивом, то в строку будут объединяться элементы массива. Если является ТаблицаЗначений, то в строку будут объединяться все колонки и строки таблицы;
РазделительЭлементов - строка, содержащая текст, который нужно использовать в качестве разделителя между элементами массива и строками таблицы значений. По умолчанию – символ перевода строк;
РазделителиКолонок -строка, содержащая текст, который нужно использовать в качестве разделителя между колонками таблицы значений. По умолчанию "; ".
Пример:
СоединитьСтроки(ТаблицаЗначений(НомерТелефона, Адрес));

Массив (Array)
Функция формирует массив, содержащий для каждой детальной записи значение параметра.
Синтаксис:
Массив([Различные] Выражение)
В качестве параметра можно использовать таблицу значений. При этом результатом работы функции будет массив, содержащий значения первой колонки таблицы значений, переданной в качестве параметра.
Если выражение содержит функцию Массив, то считается, что данное выражение является агрегатным.
Если указано ключевое слово Различные, то получаемый массив не будет содержать дублирующихся значений.
Пример:
Массив(Контрагент)

т.е. повторящиеся строки по наименованию объединить, а их значение времени через запятую перечислить.

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

1C 8.3 Перенос строки из первой таблице значений в другую таблицу значений
Добрый день! Нужно написать обработчик, который переносил бы строку таблицы значений в другую.

1C 8.3 Удаление строк в таблице значений в которых нет значений
Добрый день! Нужно написать обработчик, которые удаляет все строки в которых нет значений из.

Отбор в таблице значений по условию четных и нечетных значений
Здравствуйте, учусь работать с таблицами значений, дали задачу, написать форму и что бы в одной тч.


Объединить несколько значений из формы
Есть форма с несколькими полями, например: <input type="text" name="stroka" .

Denzo, а с типом поля Время что сейчас и что будет? Строкой будете делать? Да строчный элемент будет. Потом это просто напечать пойдет. Denzo, это как надо реализовать?, просто преобразовать, или есть условия чем можно пользоваться? Phil, У табличной части(ТаблицаЗначений) таких методов нет! Поэтому нужно делать ручками. Jackshi, так можно таблицу считать, сгруппировать, отсортировать как нужно, а потом перезаполнить.

В данном случае приблизительно вот так:

Решение

Спасибо. То что нужно.

Добавлено через 4 минуты
Единственное! Как расшифровать эту строку

Denzo, если СтрокаТЧ2.Время - пустая, то просто записываем Стр.Время, если не пустая - добавляем перед значением запятую.

SQL. Вывод значений из таблицы и подсчет количества этих значений в другой таблице
Задание звучит так: Для таблиц user и phones, где соответствие записей определяется равенством.

Вывод в список значений поля, одновременно допускающем несколько значений
Есть таблицы, 6 штук. Как через запрос вывести в список информацию о СМУ? например, выбираю объект.

Сопоставление значений в таблице со значениями в другой таблице
Добрый день! Помогите, пожалуйста, решить следующий пример: Существуют две таблицы: в первой.


Объединить одинаковые ИД с суммированием значений
Добрый день! Имеется у меня такая таблица: 1 столбик ИД; 2,3,4 столбики числовые. Но вот проблема.

Объединить строки с отбором значений ячеек
Добрый день. Есть таблица №, тариф, ФИО, адрес, НачПоказ, КонПоказ причем в таком варианте .


Объединить таблицы в exel для повторяющихся значений
Добрый день. Нужна помощь. Есть файл exel, где в столбце повторяются значения. Под этим значением.

Meest --> Meest



Просмотр профиля

Возникла проблема с дублированием номенклатуры в табличной части документа, так как пользователи нечего не хотят слушать и знать, пытаюсь решить проблему объединением строк табличной части документа, но у вы все попытки увенчались полным провалом.
Может кто-то сталкивался с данной проблемой, дайте пенок в нужное направление.
Конфигурация не типовая, платформа (8.1.11.67).
Заранее благодарен.

pablo --> pablo



Просмотр профиля В какой момент должно происходить объединение и, самое главное, как? Ответите на эти 2 вопроса и сразу будет виден алгоритм требуемых действий.
Могу только предположить, что нужно будет просуммировать в одинаковых строчках поле количество, а остальные поля - пересчитать. Правильно поставленный вопрос содержит до 90% ответа. Meest --> Meest



Просмотр профиля В какой момент должно происходить объединение и, самое главное, как? Ответите на эти 2 вопроса и сразу будет виден алгоритм требуемых действий.
Могу только предположить, что нужно будет просуммировать в одинаковых строчках поле количество, а остальные поля - пересчитать.

Нужно объединить все строки ТЧ по определенной номенклатуре (Услуга) и просуммировать не только количество но еще пару числовых полей.

pablo --> pablo



Просмотр профиля Правильно поставленный вопрос содержит до 90% ответа. Meest --> Meest



Просмотр профиля

При окончании редактирования табличного поля

zay --> zay



Просмотр профиля

Вам нужно найти номенклатуру с похожим, но не идентичным наименованием? Посмотрите алгоритм сравнения лексем на основании расстояния Левенштейна
Если это вам подходит - могу выложить обработку по поиску дублей контрагентов, которая использует этот алгоритм.

Вообще, я думаю вы себе большую проблему создаете

так как пользователи нечего не хотят слушать и знать
Сейчас проблема из-за того, что пользователи создают дубли номенклатуру.
После того как вы реализуете механизм свертки - любое дублирование номенклатуры будет уже из-за того что вы что-то сделали, но все равно ничего не работает. Вне зависимости, работает алгоритм свертки как надо или нет. Люди, которые "ничего не хотят слушать и знать", с большим удовольствием сделают свою вину - вашей. Meest --> Meest



Просмотр профиля

Вам нужно найти номенклатуру с похожим, но не идентичным наименованием? Посмотрите алгоритм сравнения лексем на основании расстояния Левенштейна
Если это вам подходит - могу выложить обработку по поиску дублей контрагентов, которая использует этот алгоритм.

Вообще, я думаю вы себе большую проблему создаете

Сейчас проблема из-за того, что пользователи создают дубли номенклатуру.
После того как вы реализуете механизм свертки - любое дублирование номенклатуры будет уже из-за того что вы что-то сделали, но все равно ничего не работает. Вне зависимости, работает алгоритм свертки как надо или нет. Люди, которые "ничего не хотят слушать и знать", с большим удовольствием сделают свою вину - вашей.

Со слов пользователей я и так во всех бедах виноват.
Сворачивать номенклатуру нужно только по одному элементу спр.номенклатура, он всегда один и он не меняется (у тех самых пользователей прав чуть не хватает).
Вся беда в том что данная позиция номенклатуры является услугой, при выборе ее необходимо указывать такие параметры как вес, длина, ширина и высота, вот собственно из чего весь сыр-бор, при заполнении перечня номенклатуры пользователю удобно указывать в разных строках разные параметры так как вес может быть от 0,01кг до 20000 тон и таких позиций может быть 20.


Несколько запросов можно объединить в один запрос. Для этого между двумя запросами нужно указать ключевое слово ОБЪЕДИНИТЬ ВСЕ.

Например, есть 3 таблицы:




Для того чтобы в одном запросе получить все записи из трех таблиц можно выполнить следующий запрос:


Таблиц в объединении может быть сколько угодно.

Количество полей в объединяемых запросах должно совпадать. Если попытаться выполнить следующий запрос:

У каждого запроса объединения свои секции ВЫБРАТЬ, ИЗ, СГРУППИРОВАТЬ ПО, ГДЕ. А секции УПОРЯДОЧИТЬ ПО и ИТОГИ общие.

Псевдоним для поля таблицы указывается только для первого запроса объединения. Если в разных таблицах одно поле имеет разный тип данных, то в результате запроса тип этого поля будет составным.

ОБЪЕДИНИТЬ ВСЕ и ОБЪЕДИНИТЬ

Помимо ОБЪЕДИНИТЬ ВСЕ для объединения можно использовать ключевое слово ОБЪЕДИНИТЬ. Например, если нужно выбрать только код справочника и выполнить запрос с ОБЪЕДИНИТЬ ВСЕ, то результат будет следующим:


То есть были выбраны все коды элементов из всех таблиц.

Если заменить ОБЪЕДИНИТЬ ВСЕ на ОБЪЕДИНИТЬ, то результат изменится:


В результате запроса остались только неповторяющиеся записи. То есть результат запроса был свернут по всем полям запроса. При этом достаточно, чтобы только в одном объединении было указано просто ОБЪЕДИНИТЬ, чтобы весь результат объединения был свернут:

//несмотря на то что здесь указано ВСЕ результат был свернут


Разница между соединением и объединением

Разница между соединением и объединением заключается в том, что при соединении будет выполнено горизонтальное соединение колонок разных таблиц. А при объединении будет выполнено вертикальное объединение строк разных таблиц, количество колонок останется без изменений.

В данной статье будет рассмотрено как реализовано соединение строк / строки с числом внутри запроса системы 1С, и как производится соединение полей с различными типами в строку СКД. Кроме того, поговорим о массовой конкатенации строк в 1С.

1. Соединение строк

Пусть у нас имеется какое-то количество строк, с которыми нужно сделать группировку строк, как в примере таблицы ниже:



Рис. 1 Строки до соединения

Необходимо провести группировку так, чтобы результат выглядел следующим образом:



Рис. 2 Результат соединения строк

Для этого нужно обратиться к полю «Строковое число», после чего привить его к ресурсам, используя следующее выражение: «СоединитьСтроки(строковое_поле)».

Как было в примере до каких-либо действий:



Рис. 3 Пример до соединения

И вот какой результат получился после первых манипуляций:



Рис. 4 После использования поля Строковое число

В данном примере «Информация» – это вычисляемое поле, но вместо него может быть использован любой иной вид поля.

2. Соединение полей в строку в запросе в системе компоновки данных

Пусть необходимо создать строку путем сложения трёх различных полей (Поле1, Поле2 и Поле3) в системе компоновки данных. Но не у всех полей тип соответствует типу «Строка».

В таком случае наиболее очевидное действие – это преобразование численного типа в строчный тип внутри запроса. Для этого надо использовать оператор «Представление(Числовое_поле)», но это не будет полноценной строкой, следовательно, объединение строк не сможет быть осуществлено, то есть будет возникать ошибка, как показано на скриншоте с примером ниже:



Рис. 5 Ошибка при соеднинении строк

Внутри запроса поля не следует трогать, а чтобы произвести объединение строк воспользуемся разделом «Вычисляемые поля», после чего всё становится реализуемым, как показано ниже:




Рис. 6 Объединение строк с использованием Вычисляемых полей

То есть решением будет форматирование исходного типа с данными в строчный тип, это можно делать при помощи оператора «Формат» для придания необходимого вида, например, удалив разделители, как демонстрируется в примере ниже:



Рис. 7 Результат форматирования данных в строчный тип

3. Массовая конкатенация строк в 1С

Операция конкатенации может применяться как в управляемом приложении, так и в обычном, и в мобильном приложениях.

Для того чтобы произвести массовую конкатенацию строк в 1С, необходимо воспользоваться методами «СтрРазделить» и «СтрСоединить». Например, соединение строк будет выглядеть следующим образом:

Рис. 8 Операция конкатенации

Подобная обработка данных имеет довольно быстрое исполнение, а также уменьшает нагрузку и потребление оперативной памяти.

Замечание: данная операция используется при 1000 и более строк, либо при меньшем количестве строк, но большой их длине.

Читайте также: