Имя: Пароль:
1C
 
1с и js
Ø (Волшебник 02.06.2023 23:57)
,
0 semiluki
 
31.05.23
18:52
Подскажите пожалуйста. Есть функция на js проверяет валидность номера телефона. Кто знает как ее прикрутить к 1с
function ValidPhone() {
    var re = /^[\d\+][\d\(\)\ -]{4,14}\d$/;
    var myPhone = document.getElementById('phone').value;
    var valid = re.test(myPhone);
    if (valid) output = 'Номер телефона введен правильно!';
    else output = 'Номер телефона введен неправильно!';
    document.getElementById('message').innerHTML = document.getElementById('message').innerHTML+'<br />'+output;
    return valid;
}
1 PR
 
31.05.23
19:02
(0) Очень просто
Переписать в виде кода 1С
2 sitex
 
naïve
31.05.23
19:19
(0) Чем Алгоритм на 1С в типовых не подходит или самому по шаблону сделать ввод номера ?!
3 sitex
 
naïve
31.05.23
19:20
(0) Прикрутить то можно ,спрашивается наф*я.
4 lubitelxml
 
31.05.23
19:28
(0) в чем проблема? Гуглишь про регулярные выражения в 1с и прикручиваешь.
5 Казуар
 
31.05.23
19:34
(0) если форма ввода номера телефона документHTML - без проблем
6 sitex
 
naïve
31.05.23
19:38
(5) Про платформу не забыл написать наверно да !?
7 Казуар
 
31.05.23
20:17
(6) на 8.3.23 без проблем
на предыдущих по-другому, но тоже без проблем
8 sitex
 
naïve
01.06.23
20:02
(7) Так отработай за Автора Топика ) , раз без проблем , или вы одно лицо с ним
9 Казуар
 
01.06.23
20:45
(8) Ищите и обрящете
10 Хранимая Процедура
 
01.06.23
23:03
Дезинформация
А когда-то давно в программисты шли люди, которые могли зарегистроваться на сайтах, требующих зарубежные симки

Вот эквивалентный код на языке 1С:

Функция ВалидныйТелефон()
    Перем re, myPhone, valid, output;
    
    re = /^[\d\+][\d\(\)\ -]{4,14}\d$/;
    myPhone = ТекстФормы.ЭлементыФормы.Телефон.Значение;
    valid = re.Тест(myPhone);
    
    Если valid Тогда
        output = "Номер телефона введен правильно!";
    Иначе
        output = "Номер телефона введен неправильно!";
    КонецЕсли;
    
    Сообщение = ДобавитьСтрокуHTML(Форма.ЭлементыФормы.Сообщение, "<br />" + output);
    
    Возврат valid;
КонецФункции;

Обратите внимание, что в коде на 1С используются специфические конструкции и методы, которые отличаются от JavaScript. В этом примере я предположил, что на форме есть элемент "Телефон" для ввода номера телефона и элемент "Сообщение" для вывода результата проверки. Вы должны заменить эти имена элементов на соответствующие в вашей 1С форме.
11 Волшебник
 
01.06.23
23:03
(10) Это деза, а не код. Просьба не постить глупости от ChatGPT
12 Salimbek
 
01.06.23
23:03
(10) Не, так не интересно, интереснее другой запрос:

А что означает код JS  var re = /^[\d\+][\d\(\)\ -]{4,14}\d$/;

ChatGPT

В коде JavaScript var re = /^[\d\+][\d\(\)\ -]{4,14}\d$/; переменная re представляет собой регулярное выражение (regular expression), которое используется для проверки вводимого значения на соответствие определенному шаблону.

Давайте разберем эту регулярку по частям:

    ^ - Символ начала строки.
    [\d\+] - Символ класса символов, который соответствует одной цифре (\d) или символу плюс (+).
    [\d\(\)\ -]{4,14} - Символ класса символов, который соответствует от 4 до 14 символов, состоящих из цифр (\d), скобок (\( и \)) и пробела ( ) или дефиса (-).
    \d - Символ, соответствующий одной цифре.
    $ - Символ конца строки.

Таким образом, данное регулярное выражение проверяет, что вводимое значение начинается с одной цифры или символа плюс, за которым следует от 4 до 14 символов, состоящих из цифр, скобок, пробелов или дефисов, и заканчивается цифрой.

Это регулярное выражение может использоваться, например, для проверки правильности ввода номера телефона.
13 Волшебник
 
01.06.23
23:05
(12) ну более-менее, даже полезно
14 Salimbek
 
01.06.23
23:33
(13) Ага, а потом его дальше если помучить, он мне выдал какую-то фигню с придуманной функцией СтрЧислоПоз, после указания на это, выдал уже более приличное (надо только добавить проверку на длину строки и еще кое-что подправить):

Как написать код в 1С, который будет проверять строку на соответствие такому шаблону: "значение начинается с одной цифры или символа плюс, за которым следует от 4 до 14 символов, состоящих из цифр, скобок, пробелов или дефисов, и заканчивается цифрой." Код должен быть без использования регулярных выражений

ChatGPT

Вот пример кода на языке 1С, который проверяет строку на соответствие заданному шаблону без использования регулярных выражений:

Функция ВалидныйТелефон(Телефон)
    Перем valid, firstChar, lastChar, i;
    valid = Ложь;

    Если НЕ ПустаяСтрока(Телефон) Тогда
        firstChar = Сред(Телефон, 1, 1);
        lastChar = Сред(Телефон, СтрДлина(Телефон), 1);

        Если (СтрНайти("0123456789", firstChar) > 0 ИЛИ firstChar = "+") И СтрНайти("0123456789", lastChar) > 0 Тогда
            valid = Истина;

            Для i = 2 По (СтрДлина(Телефон) - 1) Цикл
                Если НЕ (СтрНайти("0123456789()- ", Сред(Телефон, i, 1)) > 0) Тогда
                    valid = Ложь;
                    Прервать;
                КонецЕсли;
            КонецЦикла;
        КонецЕсли;
    КонецЕсли;

    Возврат valid;
КонецФункции
15 vovastar
 
01.06.23
23:41
(11) Пацан к успеху шел, не получилось, не фортануло)))
16 DJ Anthon
 
02.06.23
06:24
(14) в номере телефона официально находится +. не вижу вас его
17 DJ Anthon
 
02.06.23
06:25
а, сорян, в глаза долблюсь
18 Salimbek
 
02.06.23
10:46
(16) Это не у меня, это я ИИ мучал полчаса, чтобы он хоть какой-то приемлемый результат выдал. Если еще помучать, то и остальное он подрихтует, но пинать его нужно в правильном направлении.
19 Волшебник
 
02.06.23
10:46
(18) Проще самому написать
20 Хранимая Процедура
 
02.06.23
18:47
(10) - это не деза, первая итерация парного программирования.

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

Используй информацию по ссылке:
https://wonderland.v8.1c.ru/blog/podderzhka-regulyarnykh-vyrazheniy-vo-vstroennom-yazyke/

Вот ответ:

Да, вы можете использовать функцию `СтрПодобнаПоРегулярномуВыражению` для проверки строки на соответствие регулярному выражению в 1С. Эта функция проверяет указанную строку на соответствие заданному регулярному выражению【6†source】.

Вот пример кода, который вы можете использовать как отправную точку для своей задачи:

```1C:Enterprise
Перем РегулярноеВыражение, Строка, Результат;

Строка = "+9(999)999 99-99";  // Замените эту строку на ту, которую вы хотите проверить
РегулярноеВыражение = "^[\d\+][\d\(\)\ -]{4,14}\d$";  // Ваше регулярное выражение

Результат = СтрПодобнаПоРегулярномуВыражению(Строка, РегулярноеВыражению);

Если Результат Тогда
    Сообщить("Номер телефона введен правильно!");
Иначе
    Сообщить("Номер телефона введен неправильно!");
КонецЕсли;
```

Примечание: Пожалуйста, проверьте, что версия 1С, которую вы используете, поддерживает функцию `СтрПодобнаПоРегулярномуВыражению`【5†source】【7†source】.


Теперь очередь за верификацией (фактчекингом) нового решения со стороны человека.
21 Хранимая Процедура
 
02.06.23
18:51
ChatGPT Driven Development очень похож на TDD
22 Волшебник
 
02.06.23
21:35
(20) Я этой жестянке ничего не должен
23 Волшебник
 
02.06.23
21:37
(20) Пусть сама возьмёт и проверит свой программный код. Нам нужен РАБОТАЮЩИЙ программный код, а не ПРИБЛИЗИТЕЛЬНЫЙ
24 sitex
 
naïve
02.06.23
22:47
(11) Надо этот говно код пора от таких пользаков помечать что использовали ГОвноChatGPT
25 sitex
 
naïve
02.06.23
22:50
Это ЛЕНЬ Мозга пользака или Лень разработчика или хуже использовать ГОвноChatGPT в 1С.
Так дойдет до того что как Байден под ноги не смотрит что у него и совершая ошибки.
26 Хранимая Процедура
 
02.06.23
23:39
(23) я так и подозревал, что в 1Сники идут люди, понятия не имеющие о программировании.

Открой для себя итерации.