Как осуществить конкатенацию строк?

1. Monah1 19.01.11 19:54 Сейчас в теме
Здравствуйте. Задача такова: Необходимо сделать отчет, где одним из полей является поле "ПаспортныеДанные", которое должно формироваться из 4 полей: Серия, Номер, КемВыдан и ДатаВыдачи. Как соединить 4 поля в 1? В запросе или в СКД?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. WiseSnake 1520 19.01.11 20:35 Сейчас в теме
Однозначно в СКД
А конкатенацию сделаете как Вам хочется в вычисляемом поле СКД без шума и пыли ;)
3. Monah1 19.01.11 20:42 Сейчас в теме
Спасибо, а можно поподробнее описать процесс соединение строк в СКД?
4. DoctorRoza 19.01.11 22:28 Сейчас в теме
Monah1 пишет:

Спасибо, а можно поподробнее описать процесс соединение строк в СКД?


Значит так .. Заходим в СКД .. выбираем поле, которое будем отображать как надо .. поле "Выражение упорядочивания" .. точечки там .. нажимаем .. вводим .. допустим, попробуйте .. ВЫБОР КОГДА ВЫРАЗИТЬ (Регистратор. "Документ.ПаспортныеДанные") ЕСТЬ НЕ NULL ТОГДА "Паспорт" КОНЕЦ + " № " + СТРОКА(Регистратор.Номер) + СТРОКА(Регистратор.Серия) + " от " + ФОРМАТ(Регистратор.Дата, "ДФ=dd.MM.yyyy") .. это пример! Данным примером изменяем отображение поля "Регистратор" со стандартного на наш. Будет "Паспорт № ХХХХ ХХХХ от ХХ.ХХ.ХХХХ". Идея .. для решения подобных задач применяется метод ВЫРАЗИТЬ().
chemezov; Gadzhalik; Monah1; +3 Ответить
5. Monah1 20.01.11 23:14 Сейчас в теме
Значит так .. Заходим в СКД .. выбираем поле, которое будем отображать как надо .. поле "Выражение упорядочивания" .. точечки там .. нажимаем .. вводим .. допустим, попробуйте .. ВЫБОР КОГДА ВЫРАЗИТЬ (Регистратор. "Документ.ПаспортныеДанные") ЕСТЬ НЕ NULL ТОГДА "Паспорт" КОНЕЦ + " № " + СТРОКА(Регистратор.Номер) + СТРОКА(Регистратор.Серия) + " от " + ФОРМАТ(Регистратор.Дата, "ДФ=dd.MM.yyyy") .. это пример! Данным примером изменяем отображение поля "Регистратор" со стандартного на наш. Будет "Паспорт № ХХХХ ХХХХ от ХХ.ХХ.ХХХХ". Идея .. для решения подобных задач применяется метод ВЫРАЗИТЬ().


Что то ничего не понял... А может кто-нибудь прислать мини-базку, где можно наглядно посмотреть как это сделано?
6. DoctorRoza 21.01.11 15:09 Сейчас в теме
Ну Батенька эт Вы зря. Если хотите еще проще способ, то соединяйте строки непосредственно в запросе, если в СКД не понятно.
Используем подобный механизм: Заходим на вкладке "Таблицы и поля" окно "поля" .. выбираем поле, которое будем редактировать, либо добавьте новое поле ..жмем Ф2 заходим в окно "Произвольное выражение" .. начинаем колдовать ..
ВЫБОР
КОГДА Не ЕстьNull(Документ.ПаспортныеДанные.Ссылка) ТОГДА Документ.ПаспортныеДанные.Серия + " " + Документ.ПаспортныеДанные.Номер
Иначе 0
КОНЕЦ Как СтрокаСДаннымиПаспорта .. например .. поле будет содержать необходимые данные .. ;)
7. alex_shkut 62 01.03.12 16:04 Сейчас в теме
Обратите внимание на дату моего сообщения. Я на данный момент не нашел решения конкатенации строк прямо в запросе. Все конструкции вида
"Строка "+ВЫРАЗИТЬ( как Строка(ЧЧ))

у меня не работают, пробовал
"Строка "+Представление(Выражение)

Тоже не работает.
8. cubic 17 03.03.12 23:24 Сейчас в теме
Зы... Нее в SQL такой возможности. Если делать не через СКД, а через конструктор выходной формы, тогда можно программно слепитьвсё в одно. На скоряк такой вариант:
Процедура Отчет(ТабДок, Дата) Экспорт
	Макет = ВнешнийОтчетОбъект.ПолучитьМакет("Отчет");
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ФизическиеЛица.Ссылка,
	|	ФизическиеЛица.Представление,
	|	ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид как Док,
	|	ПРЕДСТАВЛЕНИЕ(ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид),
	|	ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия как Серия,
	|	ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер Как Ном,
	|	ПаспортныеДанныеФизЛицСрезПоследних.ДокументДатаВыдачи как Дата,
	|	ПаспортныеДанныеФизЛицСрезПоследних.ДокументКемВыдан как Кто,
	|	"""" КАК Итог
	|ИЗ
	|	РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних(&Дата, ) КАК ПаспортныеДанныеФизЛицСрезПоследних
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
	|		ПО ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо = ФизическиеЛица.Ссылка";

	Запрос.УстановитьПараметр("Дата", Дата);

	Результат = Запрос.Выполнить();

	ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
	ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
	ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
	ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
	ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

	ТабДок.Очистить();
	ТабДок.Вывести(ОбластьЗаголовок);
	ТабДок.Вывести(ОбластьШапкаТаблицы);
	ТабДок.НачатьАвтогруппировкуСтрок();

	
	ВыборкаДетальныеЗаписи = Результат.Выбрать();
   	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
		/////////
		ОбластьДетальныхЗаписей.Параметры.Результат = Строка(ВыборкаДетальныеЗаписи.Док)+", "+ ВыборкаДетальныеЗаписи.Серия+", " + ВыборкаДетальныеЗаписи.Ном +", "+ Строка(ВыборкаДетальныеЗаписи.Дата) +", "+ Строка(ВыборкаДетальныеЗаписи.Кто);
		////////
		ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
	КонецЦикла;

	ТабДок.ЗакончитьАвтогруппировкуСтрок();
	ТабДок.Вывести(ОбластьПодвалТаблицы);
	ТабДок.Вывести(ОбластьПодвал);

КонецПроцедуры
Показать

Всё построенно через конструктор, добавлена 1 строчка, которая собирает в текст. Она между коментами.

Для тех, кто решит поругать то, что я написал: 1. это просто пример, 2. если есть другие соображения - делитесь, 3. Все сделано за 5 минут на скорую руку )
9. natarezn 25.12.13 11:33 Сейчас в теме
спасибо! прикрепляю как вы мне помогли и может и для вас будет полезно?
представление(должность)+представление(";")+представление(подразделениеорганизации) в вычисляемые поля СКД
10. Andy_NTG 5 27.10.19 11:37 Сейчас в теме
(9) не заработало. Платформа 8.3.15.1700. Пишу такое выражение: Представление(ДнейОтсрочки) + Представление(Календарь)
11. cyv 29 22.12.20 15:21 Сейчас в теме
(10) "Представление" нужно использовать для полей с объектным значением, для числовых и даты "Формат". Работает.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот