Обновить отображение данных в соответсвии с форматом реквизита

1. Tron77 30.08.20 16:29 Сейчас в теме
Здравствуйте.
Конфа - мелкая самописка. Выгрузка списков в ЕГИССО. УФ. 15 платформа.

Имеется текстовый реквизит справочника.
Длинной 11 символов.
СНИЛС если точнее.
По просьбе пользователя изменил Маску на 999-999-999 99 для удобства отображения.

Справочник частично заполнен элементами.
При открытии имеющихся внутри справочника реквизит СНИЛС отражается как задано в формате. Но при просмотре списка элементов справочника в столбце СНИЛС реквизит отображается строкой - в старом формате.
При открытии, изменении реквизита (допустим удалить одну цифру и добавить ее назад) и сохранении в списке справочника все становится как надо.
Как программно обновить формат реквизита?
По теме из базы знаний
Найденные решения
8. Fox-trot 163 30.08.20 17:54 Сейчас в теме
в теории хранение и отображение информации - это две большие разницы
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user958326 30.08.20 17:22 Сейчас в теме
(1)
Писали конфигурацию на основе какой? Или полностью самописная? Если самопис, то какие БСП использовали?
3. Tron77 30.08.20 17:25 Сейчас в теме
(2)
то какие БСП использовали

Полностью самописная.
Никакие не использовались. Требовалось просто справочник в один документ выбирать и в Эксель сохранять. Ну и бесплатно соответственно.
Потому там просто на основе стандартной конфы для разработки.
4. Tron77 30.08.20 17:29 Сейчас в теме
Длинна снилс 11 Знаков, но для выставления маски 999-999-999 99 пришлось выставить 15 знаков.
В итоге имеющиеся и забитые ранее СНИЛСЫ идут как 11 значные.
В итоге чую придется обработку по перебору документов и по изменению формата старых записей делать.
5. starik-2005 3086 30.08.20 17:43 Сейчас в теме
У Вас старые СНИЛСы остались старыми. В итоге после того, как новый СНИЛС вводите, он у вас дополняется дефисами и пробелом. Так и должно быть? Потом Вы с ним что делаете?

Вообще, чтобы старые и новые СНИЛСы были в том виде, в котором Вы их хотели бы видеть, достаточно было бы в запросе динамического списка прописать что-то типа:
ВЫБРАТЬ
...
ПОДСТРОКА(Спр.СНИЛС, 1, 3) + "-" + ПОДСТРОКА(Спр.СНИЛС, 4, 3) + ... КАК Снилс,
...
ИЗ Справочник.ФизикиСотрудники КАК Спр


Ну и в форме тоже в поле отображать СНИЛС так, как Вы хотели бы - с помощью реквизита формы, а перед записью и при создании на сервере копировать Объект.СНИЛС в/из реквизита формы, удаляя или добавляя дефисы и пробелы. Кстати, чтобы убрать список символов из строки, достаточно написать:
СтрБезСимволов = СтрСоединить(СтрРазделить("- "));
6. Tron77 30.08.20 17:50 Сейчас в теме
(5)
У Вас старые СНИЛСы остались старыми. В итоге после того, как новый СНИЛС вводите, он у вас дополняется дефисами и пробелом. Так и должно быть? Потом Вы с ним что делаете?

Ничего не делаем. Просто бухгалтеру удобнее их видеть в варианте с дефисами и пробелом.
Так вышло, что маску реквизита я добавил уже после того как бухгалтера набили 500+ элементов в формате без дефисов. А добавив не сразу глянул что старые не изменились, по итогу имеются еще 400+ элементов уже в новом формате. И теперь и у тех и у тех длинна 15 соответственно.

Теперь просто ломаю голову как старые к новому формату привести, не спотыкаясь о новые.
7. Tron77 30.08.20 17:52 Сейчас в теме
Ну и в форме тоже в поле отображать СНИЛС так, как Вы хотели бы - с помощью реквизита формы, а перед записью и при создании на сервере копировать Объект.СНИЛС в/из реквизита формы, удаляя или добавляя дефисы и пробелы. Кстати, чтобы убрать список символов из строки, достаточно написать:

СтрБезСимволов = СтрСоединить(СтрРазделить("- "));

Спасибо буду пробовать.
8. Fox-trot 163 30.08.20 17:54 Сейчас в теме
в теории хранение и отображение информации - это две большие разницы
9. Tron77 30.08.20 17:56 Сейчас в теме
(8)
Уже это понял)
Сначала уберу уже имеющиеся дефисы, потом отформатирую в нужный вариант.
10. Tron77 30.08.20 18:44 Сейчас в теме
Сначала через

Спр = Выборка.Ссылка.ПолучитьОбъект();
Спр.СНИЛС=СтрЗаменить(Выборка.СНИЛС,"-","");
Спр.Записать();

убрал все дефисы.

Затем через
Спр.СНИЛС=Строка(Лев(Спр.СНИЛС,3)+"-"+Сред(Спр.СНИЛС,4,3)+"-"+Сред(Спр.СНИЛС,7,3)+" "+Сред(Спр.СНИЛС,10,2));

проставил дефисы и пробелы.
Всем спасибо.
farengeit00; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот