8.х Маска отбора

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

  1. TopicStarter Overlay
    antonio1985
    Offline

    antonio1985

    Регистрация:
    30 дек 2009
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Добрый день! Столкнулся со следующей проблемой: как задать условия:


    Если N = "ЧислоИз11ЦифрБезБукв" то Действие1

    Иначе

    Действие2
    КонецЕсли;

    Интересует возможность создания маски "ЧислоИз11ЦифрБезБукв".
    При том, что тип данных, в которых надо выбирать число из 11 цифр - строка. Как быть? Очень нужно задать эту маску.
  2. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Во первых, маску можно наложить на ПолеВвода(куда пользователь вводит информацию), тогда вам проверка не нужна
    а все остальное из синтаксис помошника

    ПолеВвода (TextBox)
    Маска (Mask)
    Использование:
    Чтение и запись.
    Описание:
    Тип: Строка. Содержит посимвольную строку маски интерактивного ввода текста в поле.
    В строке маски допустимо использование следующих специальных символов:
    ! - любой введенный символ преобразуется в верхний регистр;
    9 - допустимо ввести произвольный символ цифры;
    # - допустимо ввести произвольный символ цифры или - (знак минус) или + (знак плюс) или пробел;
    N - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры);
    U - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) и любой введенный символ преобразуется в верхний регистр;
    X (латинского алфавита) - допустимо ввести произвольный символ;
    ^ - не допустимо вводить этот символ интерактивно пользователем, он может устанавливаться только из языка;
    h - допустим ввод символов обозначения шестнадцатеричных цифр;
    @ – допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) в верхнем регистре или пробел.
    При помещении значения из поля ввода с маской в текстовый реквизит, связанный с этим полем ввода, происходит следующее преобразование: на тех позициях, где в маске стоит символ "@", а в строке пробел – пробел удаляется. Если в маске из специальных символов используются только символы "@", то все символы текста, соответствующие символам маски, не являющимся специальными символами, удаляются после по-следнего непустого блока из символов "@". Например, при маске "@@.@@.@@." текст "41. 2. ." преобразуется в "41.2".
    Для того, чтобы использовать в маске один из специальных символов, нужно использовать перед ним символ "\".
    Допускается указание нескольких масок в одном параметре. Маски разделяются символом ";". В этом случае использоваться будет та маска, к которой подходит введенный текст.
    Недоступно на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
  3. TopicStarter Overlay
    antonio1985
    Offline

    antonio1985

    Регистрация:
    30 дек 2009
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    А во вторых? У меня УЖЕ есть справочник на 14 тыс. строк, из которого мне надо выбрать всё, кроме тех, номер которых состоит из 11 цифр :(
  4. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    НУ так это вообще проще. Зачем тебе маска. Тут смекалка нужна.
    1 Проверяем длину строки СтрДлина Если более равна 11 то идем к 2.
    2 Преобразуем строку в число ЧИСЛО(твоя строка из справочника)
    3 Пытамемся поделмить полученное число например на 10
    Если делится то соответсвенно у нас строка состояла из 11 цмфр и она спокойно преобразовалась в чило иначе Извините там есть буквы
    Все это делается в попытка - исключение и в исключении выводим коды справчника или ссылки на те элементы которы не прохляли
  5. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Тогда так:
    Код:
    Функция РеквизитУдовлетворяетУсловиям(Реквизит)
    Если СтрДлина(СокрЛП(Реквизит))<>11 Тогда
    Возврат Ложь;
    КонецЕсли;
    Для А = 1 По 11 Цикл
    Если (Сред(Реквизит,А,1)<"0") или (Сред(Реквизит,А,1)>"9") Тогда
    Возврат Ложь;
    КонецЕсли;
    КонецЦикла;
    Возврат Истина;
    КонецФункции
    
    ...
    Если РеквизитУдовлетворяетУсловиям(N) Тогда
    Действие1;
    Иначе
    Действие2;
    КонецЕсли;
    
    
    

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