По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Monah1 пишет:
Спасибо, а можно поподробнее описать процесс соединение строк в СКД?
Спасибо, а можно поподробнее описать процесс соединение строк в СКД?
Значит так .. Заходим в СКД .. выбираем поле, которое будем отображать как надо .. поле "Выражение упорядочивания" .. точечки там .. нажимаем .. вводим .. допустим, попробуйте .. ВЫБОР КОГДА ВЫРАЗИТЬ (Регистратор. "Документ.ПаспортныеДанные") ЕСТЬ НЕ NULL ТОГДА "Паспорт" КОНЕЦ + " № " + СТРОКА(Регистратор.Номер) + СТРОКА(Регистратор.Серия) + " от " + ФОРМАТ(Регистратор.Дата, "ДФ=dd.MM.yyyy") .. это пример! Данным примером изменяем отображение поля "Регистратор" со стандартного на наш. Будет "Паспорт № ХХХХ ХХХХ от ХХ.ХХ.ХХХХ". Идея .. для решения подобных задач применяется метод ВЫРАЗИТЬ().
Значит так .. Заходим в СКД .. выбираем поле, которое будем отображать как надо .. поле "Выражение упорядочивания" .. точечки там .. нажимаем .. вводим .. допустим, попробуйте .. ВЫБОР КОГДА ВЫРАЗИТЬ (Регистратор. "Документ.ПаспортныеДанные") ЕСТЬ НЕ NULL ТОГДА "Паспорт" КОНЕЦ + " № " + СТРОКА(Регистратор.Номер) + СТРОКА(Регистратор.Серия) + " от " + ФОРМАТ(Регистратор.Дата, "ДФ=dd.MM.yyyy") .. это пример! Данным примером изменяем отображение поля "Регистратор" со стандартного на наш. Будет "Паспорт № ХХХХ ХХХХ от ХХ.ХХ.ХХХХ". Идея .. для решения подобных задач применяется метод ВЫРАЗИТЬ().
Что то ничего не понял... А может кто-нибудь прислать мини-базку, где можно наглядно посмотреть как это сделано?
Ну Батенька эт Вы зря. Если хотите еще проще способ, то соединяйте строки непосредственно в запросе, если в СКД не понятно.
Используем подобный механизм: Заходим на вкладке "Таблицы и поля" окно "поля" .. выбираем поле, которое будем редактировать, либо добавьте новое поле ..жмем Ф2 заходим в окно "Произвольное выражение" .. начинаем колдовать ..
ВЫБОР
КОГДА Не ЕстьNull(Документ.ПаспортныеДанные.Ссылка) ТОГДА Документ.ПаспортныеДанные.Серия + " " + Документ.ПаспортныеДанные.Номер
Иначе 0
КОНЕЦ Как СтрокаСДаннымиПаспорта .. например .. поле будет содержать необходимые данные .. ;)
Используем подобный механизм: Заходим на вкладке "Таблицы и поля" окно "поля" .. выбираем поле, которое будем редактировать, либо добавьте новое поле ..жмем Ф2 заходим в окно "Произвольное выражение" .. начинаем колдовать ..
ВЫБОР
КОГДА Не ЕстьNull(Документ.ПаспортныеДанные.Ссылка) ТОГДА Документ.ПаспортныеДанные.Серия + " " + Документ.ПаспортныеДанные.Номер
Иначе 0
КОНЕЦ Как СтрокаСДаннымиПаспорта .. например .. поле будет содержать необходимые данные .. ;)
Обратите внимание на дату моего сообщения. Я на данный момент не нашел решения конкатенации строк прямо в запросе. Все конструкции вида
у меня не работают, пробовал
Тоже не работает.
"Строка "+ВЫРАЗИТЬ( как Строка(ЧЧ))
у меня не работают, пробовал
"Строка "+Представление(Выражение)
Тоже не работает.
Зы... Нее в SQL такой возможности. Если делать не через СКД, а через конструктор выходной формы, тогда можно программно слепитьвсё в одно. На скоряк такой вариант:
Всё построенно через конструктор, добавлена 1 строчка, которая собирает в текст. Она между коментами.
Для тех, кто решит поругать то, что я написал: 1. это просто пример, 2. если есть другие соображения - делитесь, 3. Все сделано за 5 минут на скорую руку )
Процедура Отчет(ТабДок, Дата) Экспорт
Макет = ВнешнийОтчетОбъект.ПолучитьМакет("Отчет");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ФизическиеЛица.Ссылка,
| ФизическиеЛица.Представление,
| ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид как Док,
| ПРЕДСТАВЛЕНИЕ(ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид),
| ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия как Серия,
| ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер Как Ном,
| ПаспортныеДанныеФизЛицСрезПоследних.ДокументДатаВыдачи как Дата,
| ПаспортныеДанныеФизЛицСрезПоследних.ДокументКемВыдан как Кто,
| """" КАК Итог
|ИЗ
| РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних(&Дата, ) КАК ПаспортныеДанныеФизЛицСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
| ПО ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо = ФизическиеЛица.Ссылка";
Запрос.УстановитьПараметр("Дата", Дата);
Результат = Запрос.Выполнить();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
ТабДок.НачатьАвтогруппировкуСтрок();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
/////////
ОбластьДетальныхЗаписей.Параметры.Результат = Строка(ВыборкаДетальныеЗаписи.Док)+", "+ ВыборкаДетальныеЗаписи.Серия+", " + ВыборкаДетальныеЗаписи.Ном +", "+ Строка(ВыборкаДетальныеЗаписи.Дата) +", "+ Строка(ВыборкаДетальныеЗаписи.Кто);
////////
ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
КонецЦикла;
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.Вывести(ОбластьПодвалТаблицы);
ТабДок.Вывести(ОбластьПодвал);
КонецПроцедуры
ПоказатьВсё построенно через конструктор, добавлена 1 строчка, которая собирает в текст. Она между коментами.
Для тех, кто решит поругать то, что я написал: 1. это просто пример, 2. если есть другие соображения - делитесь, 3. Все сделано за 5 минут на скорую руку )
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот