8.х Функция "Формат"

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем bvg, 21 дек 2007.

Статус темы:
Закрыта.
  1. TopicStarter Overlay
    bvg
    Offline

    bvg

    Регистрация:
    3 окт 2007
    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    1
    у справочника есть реквизит с типом строка, в данном реквизите сохраняются пятизначные номера, причем тетрады разделены неразрывным пробелом ... пытаюсь убрать пробел с помощью функции формат, но все равно все остается по прежнему ... Саму функцию смотрел в хелпе ... если даже ставлю "ЧГ=0" то же самое (ничего не изменяется)
    Поделитесь опытом, как сделать обычную строку без неразрывного пробела? ... буду признателен ...

    Сам код:
    ............
    Код:
    пока выборка.Следующий() цикл
    Стр=выборка.инвентарныйномер;
    номер=формат(стр,"ЧРГ=0");
    если инвномер=номер тогда
    ссылка=выборка.ссылка;
    прервать;
    КонецЕсли;
    
    КонецЦикла;
    
    Используйте тэг
    Код:
    [/color]
  2. ЧКДзержинский
    Offline

    ЧКДзержинский Опытный в 1С

    Регистрация:
    7 дек 2006
    Сообщения:
    487
    Симпатии:
    3
    Баллы:
    29
    Если пробелы по краям строки, то - СокрЛП, иначе можно цикл написать, например:
    Код:
             Слова = "слова слова и пробелы";
    ст = "";
    Для ин = 1 По СтрДлина(Слова) Цикл
    буква = Сред(Слова,ин,1);
    Если буква <> " " Тогда
    ст = ст+буква;
    КонецЕсли;
    КонецЦикла;           
    Сообщить(ст);
    
    Ой, забыл, что я в форуме 8.0, но идея думаю понятна
  3. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    На самом деле вот в чем суть - там не пробел, а другой символ (его можно в отладчике посмотреть и скопировать).
    Если вам убрать эти пробелы надо, лучше используйте
    СтрЗаменить(ИсхСтрока," ","");
    Тогда все пробелы ваши просто уйдут.
  4. TopicStarter Overlay
    bvg
    Offline

    bvg

    Регистрация:
    3 окт 2007
    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    1
    ЧКДзержинский: .... я же написал что там неразрывный пробел посередине числовой строки, отделяющий тетрады числа ...

    Эмин: там не обычный пробел, а неразрывный ... поэтому данное решение не работает
  5. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Вы знаете, у всех работает, а почему у вас нет?
    Наберите в Сервис-Табло, например, 1000, скопируйте результат - он будет такой "1 000".
    Вот этот символ между 1 и 0 скопируйте и заменяйте на пустую строку. Я делал это десятки раз и никогда проблем не было.

    Да, если вам не удается скопировать этот символ ниоткуда, воспользуйтесь кодом:
    СтрЗаменить(ИсхСтрока, Символ(160), "");
  6. TopicStarter Overlay
    bvg
    Offline

    bvg

    Регистрация:
    3 окт 2007
    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    1
    Написал функцию ... но посмотреть пока не могу ... в базе пользователи ... наверно правильно :

    Код:
    функция УдалениеНеразрывногоПробела (ИсходнаяСтрока) экспорт
    Стр=СокрЛП(Строка(ИсходнаяСтрока));
    ДлинаСтроки=СтрДлина(Стр); 
    Позиция=Найти(Стр,Символ(160));
    если позиция=0 тогда
    возврат стр;
    КонецЕсли;
    
    ЦифрыНомера1 = Сред(Стр, 1, Позиция-1); 
    Стр=Сред(Стр, Позиция+1, ДлинаСтроки-Позиция); 
    Стр=ЦифрыНомера1+стр;
    возврат стр;    
    КонецФункции
    
    
    Всем спасибо за помощь :)
  7. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Зря вы не слушаете советов, функция ваша в 10 строчек записывается одной:
    СтрЗаменить(ИсхСтрока, Символ(160), "");

    И все ваши неразрывные пробелы заменятся пустой строкой - в результате быстро, красиво и лаконично, а главное понятно.

    Более того - проверить ее можно прямо в Сервисе - Табло

    Но если вы не хотите это использовать, ваше право. Просто не стоит такой функцией смущать остальных пользователей форума, а то ведь начнут такие же штамповать.
  8. sstvit
    Offline

    sstvit

    Регистрация:
    7 апр 2007
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Когда то так-же делал... теперь НужнаяСтрока = Формат(СтрокаСПробеламиЮникод, "ЧГ=")
  9. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Тоже вариант :)

    Правда на каком-то релизе у меня не срабатывал и я от него отошел ;) А так - совершенно нормально рабоатет, во всяком случае на всех новых платформах.
  10. TopicStarter Overlay
    bvg
    Offline

    bvg

    Регистрация:
    3 окт 2007
    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    1
    Спасибо за советы ... в будущем учту ... но надо было сделать все по быстрому, начальство наседало поэтому сделал как сделал, но все же ...

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

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

    но все равно всем спасибо, даже за критику :)
Статус темы:
Закрыта.

Поделиться этой страницей