Объединить строки табличной части 1с
Моя конфигурация - 1С Университет ПРОФ, редакция 1.1 (1.1.7.1), хотя в данном вопросе суть не в этом.
Создание отчета выполняется через систему компоновки данных.
Моя задача была вот в чем:
Отчет создается через Систему компоновки данных.
На вкладке "Связи" настраиваем связь между этими наборами данных.
Источник связи - НаборДанных1, приемник связи - НаборДанных2, Выражение источник - Ссылка из НаборДанных1, Выражение приемник - Ссылка из НаборДанных2.
Для того, чтобы в поле табличной части (Авторы.Автор) вывести всех авторов через запятую, переходим на вкладку Ресурсы.
Выбираем поле Авторы.Автор и в части "Выражение" пишем:
то есть мы указываем, что объединяем массив данных и размещаем записи через ", ".
В настройках отчета создаем группировку, я поле не выбирала, т.е. добавила ДетальныеЗаписи.
Ну, и как обычно выбираем поля, которые отчет должен отражать, и добавляем отборы.
Внешний отчет с выводом ТЧ в одну ячейку через запятуюСпециальные предложения
Выложить разработкой простейшее использование базовых возможностей СКД это круто.
Но раз люди плюсуют, значит, кому-то действительно полезно.
Где-то на сайте уже было описано года два назад. Я помню, потому что мы тогда делали серию похожих отчетов с выводом данных из ТЧ.1. Адский баян.
2. Достаточно просто использовать Массив, без СоединитьСтроки, тогда ещё и расшифровка будет работать. (Если не нужны экзотические разделители.)
(6) Я бы сказал, это описано в документации по СКД (F1) N лет назад.
(10) dock, F1 в конфигураторе
"1С:Предприятие 8" - "Система компоновки данных" - "Язык выражений системы компоновки данных"
СоединитьСтроки (JoinStrings)
Предназначена для объединения строк в одну строку.
Синтаксис:
СоединитьСтроки (Значение, РазделительЭлементов, РазделителиКолонок)
Параметры:
Значение - выражения, которые нужно объединить в одну строку. Если является Массивом, то в строку будут объединяться элементы массива. Если является ТаблицаЗначений, то в строку будут объединяться все колонки и строки таблицы;
РазделительЭлементов - строка, содержащая текст, который нужно использовать в качестве разделителя между элементами массива и строками таблицы значений. По умолчанию – символ перевода строк;
РазделителиКолонок -строка, содержащая текст, который нужно использовать в качестве разделителя между колонками таблицы значений. По умолчанию "; ".
Пример:
СоединитьСтроки(ТаблицаЗначений(НомерТелефона, Адрес));
Массив (Array)
Функция формирует массив, содержащий для каждой детальной записи значение параметра.
Синтаксис:
Массив([Различные] Выражение)
В качестве параметра можно использовать таблицу значений. При этом результатом работы функции будет массив, содержащий значения первой колонки таблицы значений, переданной в качестве параметра.
Если выражение содержит функцию Массив, то считается, что данное выражение является агрегатным.
Если указано ключевое слово Различные, то получаемый массив не будет содержать дублирующихся значений.
Пример:
Массив(Контрагент)
т.е. повторящиеся строки по наименованию объединить, а их значение времени через запятую перечислить.
__________________Помощь в написании контрольных, курсовых и дипломных работ здесь
1C 8.3 Перенос строки из первой таблице значений в другую таблицу значений
Добрый день! Нужно написать обработчик, который переносил бы строку таблицы значений в другую.
1C 8.3 Удаление строк в таблице значений в которых нет значений
Добрый день! Нужно написать обработчик, которые удаляет все строки в которых нет значений из.
Отбор в таблице значений по условию четных и нечетных значений
Здравствуйте, учусь работать с таблицами значений, дали задачу, написать форму и что бы в одной тч.
Объединить несколько значений из формы
Есть форма с несколькими полями, например: <input type="text" name="stroka" .
В данном случае приблизительно вот так:
Решение
Спасибо. То что нужно.
Добавлено через 4 минуты
Единственное! Как расшифровать эту строку
SQL. Вывод значений из таблицы и подсчет количества этих значений в другой таблице
Задание звучит так: Для таблиц user и phones, где соответствие записей определяется равенством.
Вывод в список значений поля, одновременно допускающем несколько значений
Есть таблицы, 6 штук. Как через запрос вывести в список информацию о СМУ? например, выбираю объект.
Сопоставление значений в таблице со значениями в другой таблице
Добрый день! Помогите, пожалуйста, решить следующий пример: Существуют две таблицы: в первой.
Объединить одинаковые ИД с суммированием значений
Добрый день! Имеется у меня такая таблица: 1 столбик ИД; 2,3,4 столбики числовые. Но вот проблема.
Объединить строки с отбором значений ячеек
Добрый день. Есть таблица №, тариф, ФИО, адрес, НачПоказ, КонПоказ причем в таком варианте .
Объединить таблицы в exel для повторяющихся значений
Добрый день. Нужна помощь. Есть файл exel, где в столбце повторяются значения. Под этим значением.
Возникла проблема с дублированием номенклатуры в табличной части документа, так как пользователи нечего не хотят слушать и знать, пытаюсь решить проблему объединением строк табличной части документа, но у вы все попытки увенчались полным провалом.
Может кто-то сталкивался с данной проблемой, дайте пенок в нужное направление.
Конфигурация не типовая, платформа (8.1.11.67).
Заранее благодарен.
Могу только предположить, что нужно будет просуммировать в одинаковых строчках поле количество, а остальные поля - пересчитать. Правильно поставленный вопрос содержит до 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 и более строк, либо при меньшем количестве строк, но большой их длине.
Читайте также: