В отчете на СКД выделить предпоследнее слово

1. user_2010 984 03.02.17 09:57 Сейчас в теме
Добрый день!

Запросом выбирается строки типа
"Поездка в Москву 25/01/2017-28/01/2017 5 д."
"Поездка в Нижний Новгород 23/01/2017 1 д."

Нужно из строки выделить количество дней. Хочет запросом, но как я понимаю, в запросе этого сделать нельзя.
Но ведь можно в СКД для вычисляемого поля использовать функции из глобальных общих модулей?

Может быть 1С уже написала функцию, делящая строку по словам, позволяющая выбрать нужное слово?
Или есть еще какие-то варианты?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
18. Степной 27 03.02.17 12:25 Сейчас в теме
(1) Как вариант добавляете вычисляемое поле и в выражении указываете

 <ИмяОбщегоМодуля>.ПолучитьФрагментСтроки(Наименование) 


где Наименование - Ваше текстовое поле.

Функция располагается в общем модуле. Текст, примерно, такой:

Функция ПолучитьФрагментСтроки(Наименование) Экспорт

	МассивСтрок					= СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СокрЛП(Наименование), " ");
	КоличествоЭлементовВМассиве	= МассивСтрок.Количество();
	
	Если КоличествоЭлементовВМассиве = 0 Тогда
		Возврат ""; // если на входе пустая строка или не найден разделитель " ", тогда возвращаем пустую строку (как вариант)
	Иначе
		Возврат МассивСтрок[КоличествоЭлементовВМассиве-1];
	КонецЕсли;
		
КонецФункции
Показать
19. user_2010 984 03.02.17 13:29 Сейчас в теме
2. dj_serega 393 03.02.17 10:03 Сейчас в теме
Хм... Может как-то поиграться через Подстрока() ? Найти 2017 и взять все что дальше.
3. user_2010 984 03.02.17 10:04 Сейчас в теме
да, думала про это... но как выделить потом слово? ведь Найти - такой функции нет...
4. user_2010 984 03.02.17 10:05 Сейчас в теме
5. chock23 2 03.02.17 10:06 Сейчас в теме
Можно для вычисляемого поля использовать функция из глобальных общих модулей.
dj_serega; +1 Ответить
6. user_2010 984 03.02.17 10:22 Сейчас в теме
(5) это понятно! возможно кто-то знает такие функции, 1С же для себя должна была написать функции для работы со строками в СКД?
7. chock23 2 03.02.17 10:37 Сейчас в теме
(6) Какая у вас конфигурация? Если количество дней у вас всегда отображается в конце строки 3 символами можно попробовать обойтись без функций модуля, а использовать следующее: Подстрока(ВашаСтрока,ДлинаСтроки(ВашаСтрока)-3,3).
8. user_2010 984 03.02.17 10:46 Сейчас в теме
(7) да, сейчас так и делаю. Теперь задача преобразовать полученную строку к числу - чтобы использовать в арифм выражении.
Строка получается типа " 1" "15"
Пытаюсь так:
Выразить( Подстрока(МояСтрока, ДлинаСтроки(МояСтрока) - 6, 2), "Число(2,0)")
не работает
11. PhoenixAOD 62 03.02.17 10:50 Сейчас в теме
(8)Выразить( Подстрока(МояСтрока, ДлинаСтроки(МояСтрока) - 6, 2) как Число(2,0)) попробуйте
12. user_2010 984 03.02.17 10:57 Сейчас в теме
(11) ругается на синтаксическую ошибку
у меня же выразить в вычисляемом поле, а ВЫЧИСЛИТЬ КАК это же в запросе
13. PhoenixAOD 62 03.02.17 10:59 Сейчас в теме
(12) тогда думаю, проще все же как Вы в (10) сказали сделать)
14. user_2010 984 03.02.17 11:18 Сейчас в теме
15. antz 03.02.17 11:23 Сейчас в теме
(11) не работает это в запросе 1С. Ни выразить число как строку, ни выразить строку как число.
alex-l19041; +1 Ответить
16. user_2010 984 03.02.17 11:32 Сейчас в теме
17. chock23 2 03.02.17 12:04 Сейчас в теме
(16) Попробуйте в вычисляемом поле получить просто строку, а в ресурсах СКД уже пробовать выражать или сразу писать формулу
9. user_2010 984 03.02.17 10:47 Сейчас в теме
10. user_2010 984 03.02.17 10:50 Сейчас в теме
похоже проще подготовить данные, а потом их передать в скд...
Оставьте свое сообщение

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