Версия для печати темы (https://pro1c.org.ua/index.php?showtopic=29733)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ Использование спецсимвола 9, как обычной цифры 9 в маске 1с 7.7

Автор: danil2304 11.05.16, 4:32

Добрый день. Есть 3 переключателя, такой код:

Процедура ПриВыбореПерек()
    Если (ИП245 = 1) Тогда
        Форма.ИПАдрес1.Маска("173.234.14.999");    
    КонецЕсли;
     Если (ИП245 = 2) Тогда
            Форма.ИПАдрес1.Маска("10.156.187.999");
    КонецЕсли;
     Если (ИП245 = 3) Тогда
            Форма.ИПАдрес1.Маска("192.168.3.999");  
    КонецЕсли;
КонецПроцедуры; //ПриВыбореПерек

При выборе последней маски в числе "192" 9-ка используется как спец символ, каким образом сделать так, чтобы она была частью маски?(То есть просто цифрой 9)

Автор: pablo 11.05.16, 9:37

переписать обработку маски так, чтобы она их искала/заменяла только в последнем октете адреса

Автор: danil2304 11.05.16, 10:57

pablo @ Сегодня, 9:37 *,
А где она находится? Не могу найти.

Автор: pablo 11.05.16, 14:45

Вероятно, в модуле конфигурации "Управление космическими полетами"

Автор: danil2304 12.05.16, 4:31

pablo @ Вчера, 14:45 *,
А если серьезно? Перерыл все модули, не могу найти код, где присутствует маска

Автор: pablo 12.05.16, 8:42

Вы используете типовой механизм работы с встроенной функцией Маска(). Он вас не устраивает. В таком случае возможно изменить поведение функции только в случае, когда вы будете использовать не типовые элементы управления (из каких-либо внешних компонент). Стандартная Маска() весьма убога, но для Ваших старых айпишников - вполне годилась. Тут уже определяйтесь, что дешевле - сменить айпишники или подключить, настроить и использовать ВК.

Автор: danil2304 12.05.16, 12:37

pablo @ Сегодня, 8:42 http://pro1c.org.ua/index.php?act=findpost&pid=112372

подключить, настроить и использовать ВК.


Автор: volodya1122 12.05.16, 14:24

Можно сделать не совсем красиво но эффективно. (например так, два варианта)
1. Так как пользователю в любом случае нужно вводить только три последних символа, то и разрешить вводить только три последних символа. а преффикс на форме выводить "текстом" А потом в модуле склеить эти два значения.
2. В маске заменить девятку на латинскую букву "g". А после ввода сделать преобразование этой строки СтрЗаменить(ИРАдрес1,"g",9)

Автор: danil2304 13.05.16, 4:51

volodya1122 @ Вчера, 14:24 *,
о 1ом я уже думал, а вот второй вариант у меня не выходит. Помещал СтрЗаменить и в функцию выбора и в процедуру "ПриЗаписи" - не меняет, по факту записывает букву g, строчку писал и СтрЗаменить("ИПАдрес1,"g",9);(тут, на сколько я понимаю ИПАДрес1 будет простро строкой, а не переменной) и СтрЗаменить(ИПАдрес1,"g",9);, а так решение понравилось.

Автор: volodya1122 13.05.16, 15:09

danil2304 @ Сегодня, 5:51 *,

Только что проверил.
Формулу

ИПАдр=СтрЗаменить(ИПАдр,"g",9);

нужно повесить на реквизит на форме, в процеедуру ПриОткритии() и в процедуру ПриЗаписи()
На форме будет отображаться как должно быть по маске, а в бузу запишется с девяткой (проверил в форме списка сравочника)

Но в таком случае есть один существенный минус; каждый раз появляется запрос на сохранения справочника (Даже если реально изменений справочника небыло.
Можно сделать по другому: оставлять в базе с "g". В во всех отчетах, документах,..... где используется этот ИПАдрес делать замену g на 9.

Еще можно в справочнике ИР записывать через промежуточную переменную. (тоисть на форме выродить не реквизит справочника, а переменную. корорую связать с нужным реквизитом) - у меня именно так сделано - но немножко для другого случая. В таком случае 1с не задает лишних вопросов

Автор: danil2304 16.05.16, 5:55

volodya1122 @ 13.05.16, 15:09 *,
Отлично работает, спасибо. Даже все проверки, которые идут после этой замены и проверка на уникальность ИП работает. Спасибо.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua