Добрый день.
Не могу найти информацию об объединение в запросе даты и номера документа.
Вот простой запрос.
"ВЫБРАТЬ
| ПоступлениеТоваровУслуг.Ссылка,
| ПоступлениеТоваровУслуг.Номер,
| ПоступлениеТоваровУслуг.Дата
|ИЗ
| Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг"
Мне на выходе надо получить "Документ №000000153 от 01.08.2013".
Как, подскажите?
Не могу найти информацию об объединение в запросе даты и номера документа.
Вот простой запрос.
"ВЫБРАТЬ
| ПоступлениеТоваровУслуг.Ссылка,
| ПоступлениеТоваровУслуг.Номер,
| ПоступлениеТоваровУслуг.Дата
|ИЗ
| Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг"
Мне на выходе надо получить "Документ №000000153 от 01.08.2013".
Как, подскажите?
По теме из базы знаний
- Как определить дату последнего документа в 8ке.
- Подсистема "COMExchange", консоль запросов, сервис обработки выборки запроса: корректируем регистры или «Берём банк, кассу, экспроприируем экспроприаторов».
- Загрузка документов из Excel в 1С: УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы
- Смотрим запросы 1С через Microsoft SQL Profiler по следам ошибок разработчиков, приводящих к проблемам производительности
- Решение некоторых задач с помощью "Отладчика запросов"
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Ежели уж очень хочется, то можно сделать так:
только муторно столько писать...
ВЫБРАТЬ
ПоступлениеТоваровУслуг.Ссылка,
ПоступлениеТоваровУслуг.Представление,
ПоступлениеТоваровУслуг.Номер,
ПоступлениеТоваровУслуг.Дата,
ВЫБОР
КОГДА ДЕНЬ(ПоступлениеТоваровУслуг.Дата) = 1
ТОГДА "01"
КОГДА ДЕНЬ(ПоступлениеТоваровУслуг.Дата) = 2
ТОГДА "02"
КОГДА ДЕНЬ(ПоступлениеТоваровУслуг.Дата) = 3
ТОГДА "и т.д."
ИНАЧЕ "хх"
КОНЕЦ КАК ДеньСтрокой,
ВЫБОР
КОГДА МЕСЯЦ(ПоступлениеТоваровУслуг.Дата) = 1
ТОГДА "01"
КОГДА МЕСЯЦ(ПоступлениеТоваровУслуг.Дата) = 2
ТОГДА "02"
КОГДА МЕСЯЦ(ПоступлениеТоваровУслуг.Дата) = 3
ТОГДА "и т.д."
ИНАЧЕ "хх"
КОНЕЦ КАК МесяцСтрокой,
ВЫБОР
КОГДА ГОД(ПоступлениеТоваровУслуг.Дата) = 2012
ТОГДА "2012"
КОГДА ГОД(ПоступлениеТоваровУслуг.Дата) = 2013
ТОГДА "2013"
КОГДА ГОД(ПоступлениеТоваровУслуг.Дата) = 2014
ТОГДА "и т.д."
ИНАЧЕ "хххх"
КОНЕЦ КАК ГодСтрокой
ПОМЕСТИТЬ ВТ
ИЗ
Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
ГДЕ
ПоступлениеТоваровУслуг.Дата >= &Дата
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ.Ссылка,
ПРЕДСТАВЛЕНИЕ(ВТ.Ссылка),
ВТ.Номер,
ВТ.ДеньСтрокой,
ВТ.МесяцСтрокой,
ВТ.ГодСтрокой,
"Документ №" + ВТ.Номер + " от " + ВТ.ДеньСтрокой + "." + ВТ.МесяцСтрокой + "." + ВТ.ГодСтрокой КАК Хотелка
ИЗ
ВТ КАК ВТ
Показатьтолько муторно столько писать...
В языке запросов 1С (текущей версии) невозможно соединять значения колонок, отличающихся от типа строка в одну строку.
Например, можно написать (при условии, что код текстовый):
Но нельзя написать:
Также не прокатит выражение типа
Более того я делал так:
Также не сработало (по крейней мере у меня).
На ИС есть несколько примеров как приводить дату,число к строке, но все они не очень простые и требуют дополнительных запросов.
Например, можно написать (при условии, что код текстовый):
Таб.Код + "_" + Таб.Наименование КАК Поле1,
Но нельзя написать:
Таб.Дата + Таб.Наименование.
Также не прокатит выражение типа
ВЫРАЗИТЬ(Таб.Дата КАК СТРОКА) + Таб.Наименование
Более того я делал так:
ВЫБРАТЬ Представление(Дата) КАК ДатаСтрокой,
Наименование КАК Наименование
ПОМЕСТИТЬ ВремТабл
;
ВЫБРАТЬ ДатаСтрокой + Наименование КАК Поле 1
ИЗ ВремТабл
Также не сработало (по крейней мере у меня).
На ИС есть несколько примеров как приводить дату,число к строке, но все они не очень простые и требуют дополнительных запросов.
(11) Craig,
в запросе, как я и писал ранее, у меня не получилось никак.
А по поводу почему 1С не сделал такую простую вещь в языке запросов,то это вопрос риторический.
К этому же вопросу же можно отнести (из того к чему я привык на MSSQL)
- остутствие кореллированых подзапросов, например таких:
- отутствие возможности добавлять колонку IDENTITY во временную таблицу
- получение текстовой ссылки (ГУИД) на объект
- update, хотя бы для временных таблиц
Это уже не говоря про все расширения языка SQL, поддерживаемые MSSQL, например CROSS APPLY )
в запросе, как я и писал ранее, у меня не получилось никак.
А по поводу почему 1С не сделал такую простую вещь в языке запросов,то это вопрос риторический.
К этому же вопросу же можно отнести (из того к чему я привык на MSSQL)
- остутствие кореллированых подзапросов, например таких:
ВЫБРАТЬ Таб.*,
(ВЫБРАТЬ ПЕРВЫЕ 1 Поле
ИЗ Таб2
ГДЕ Таб2.Ссылка = Таб.Ссылка
УПОРЯДОЧИТЬ ПО Таб2.Дата) КАК ПервоеЗначение
ИЗ Таб
- отутствие возможности добавлять колонку IDENTITY во временную таблицу
- получение текстовой ссылки (ГУИД) на объект
- update, хотя бы для временных таблиц
Это уже не говоря про все расширения языка SQL, поддерживаемые MSSQL, например CROSS APPLY )
Если СКД, используй вычисляемые поля. Если построитель, то можно макет перед выводом перехватить и в макете исправить.
А так в запросе, "Документ" и номер просто слепить, а вот дату к строке тяжело преобразовать. Можно поизвращаться с Выбором, отдельно для дня, месяца и года.
ВЫБОР КОГДА ДЕНЬ(ПоступлениеТоваровУслуг.Дата)=1 ТОГДА "01"
КОГДА ДЕНЬ(ПоступлениеТоваровУслуг.Дата)=2 ТОГДА "02"
и т.д.
Или с ВЫРАЗИТЬ(... КАК Строка) попробуй поиграть, но скорее всего не получиться, т.к. Выразить преобразование между типами не делает.
А так в запросе, "Документ" и номер просто слепить, а вот дату к строке тяжело преобразовать. Можно поизвращаться с Выбором, отдельно для дня, месяца и года.
ВЫБОР КОГДА ДЕНЬ(ПоступлениеТоваровУслуг.Дата)=1 ТОГДА "01"
КОГДА ДЕНЬ(ПоступлениеТоваровУслуг.Дата)=2 ТОГДА "02"
и т.д.
Или с ВЫРАЗИТЬ(... КАК Строка) попробуй поиграть, но скорее всего не получиться, т.к. Выразить преобразование между типами не делает.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот