Sharepoint: вычисляемый столбец заменяет все пробелы - PullRequest
2 голосов
/ 31 марта 2009

Похоже, на самом деле это будет просто (и может быть), но я пытаюсь взять строковые данные столбца, а затем через вычисляемый столбец заменить все пробелы на% 20, чтобы HTML ссылка в электронном письме, создаваемом рабочим процессом, на самом деле не прервется при первом пробеле.

Например, у нас есть это в нашем столбце источника:

file: /// Z: / data / Это наш отчет.rpt

И хотел бы закончить с этим в вычисляемом столбце:

Файл: /// Z: /data/This%20is%20our%20report.rpt

Уже использовал REPLACE и составил ужасную супер вложенную версию REPLACE / SEARCH, но проблема в том, что вам нужно вкладывать в КАЖДОЕ потенциальное пространство, и если вы не знаете, сколько впереди, это не работает, или пропустит.

Кто-нибудь из вас сталкивался с этим сценарием и как вы справились с ним?

Заранее спасибо!

Ответы [ 4 ]

4 голосов
/ 31 марта 2009

Насколько я знаю, не существует универсального решения, использующего синтаксис вычисляемых столбцов. Стандартное решение для этой ситуации заключается в использовании события ItemAdded (/ ItemUpdated) и инициализации значения поля из кода.

0 голосов
/ 22 мая 2019

Вы можете использовать эту формулу (Начальная обрезка для 1, в моем случае было 4):

=IF(ISBLANK([EUR Amount]),"",(TRIM(MID([EUR Amount],4,2))&TRIM(MID([EUR Amount],6,2))&TRIM(MID([EUR Amount],8,2))&TRIM(MID([EUR Amount],10,2))&TRIM(MID([EUR Amount],12,2))&TRIM(MID([EUR Amount],14,2)))*1)
0 голосов
/ 13 мая 2017

, чтобы HTML-ссылка в электронном письме, создаваемом рабочим процессом, фактически не разрывалась при первом пробеле.

Браузер делает это только в том случае, если вы не заключили вашу ссылку в кавычки

Если вы заключите ссылку в кавычки, она не обрезается в первом пробеле

В формуле SharePoint это будет:

="""file:///Z:/data/This is our report.rpt"""

, потому что две кавычки являются escape-нотацией SP для вывода кавычки

0 голосов
/ 02 апреля 2017

Мне удалось решить эту проблему для моих обстоятельств с помощью ряда вычисляемых столбцов.

В первом вычисляемом столбце (C1) я ввел формулу для удаления первого пробела, что-то вроде этого:

=IF(ISNUMBER(FIND(" ",[Title])),REPLACE([Title],FIND(" ",[Title]),1,"%20"),[Title])

Во втором вычисляемом столбце (C2) я использовал:

=IF(ISNUMBER(FIND(" ",[C1])),REPLACE([C1],FIND(" ",[C1]),1,"%20"),[C1]).

В моем случае я хотел закодировать до четырех пробелов, поэтому я использовал 3 вычисленных столбца (C1, C2, C3) таким же образом и получил желаемый результат.

Это не так эффективно, как использование одного вычисляемого столбца, но если SUBSTITUTE не будет работать в вашей среде SharePoint, и вы не можете использовать обработчик событий или рабочий процесс, он может предложить работоспособную альтернативу.

На самом деле я использовал немного другую формулу, но она была на рабочей машине, к которой у меня сейчас нет доступа, поэтому я просто взял эту формулу из аналогичного S.O. вопрос. Будет работать любая формула, которая заменит первое вхождение пробела на «% 20». Хитрость заключается в том, чтобы: а) убедиться, что формула возвращает исходную строку без изменений, если в ней нет больше пробелов, и , тестовое задание. Создайте представление вашего списка, в котором есть поле, которое вы пытаетесь кодировать, плюс вычисляемые поля, и посмотрите, получаете ли вы нужные результаты.

...