Имя: Пароль:
1C
1С v8
Парсер форматной строки хочу
0 Garykom
 
гуру
22.03.20
22:21
Понадобился сабж для анализа/парсинга форматной строки.

В смысле на входе есть форматная строка (которая как в функции "Формат" и "Конструктор форматной строки").
И надо разобрать программно сколько в ней указано знаков после запятой, какой разделитель и т.д.

Самому ваять гм, может уже готовая функция есть где?
Которая структуру возвращает по входящей форматной строке.
1 NcSteel
 
22.03.20
22:27
А через выполнить не проще?
2 Garykom
 
гуру
22.03.20
22:31
(1) Думаю ты не понял.
Мне надо редкостный изврат сделать в плане показывать числа целые без нулей сзади, а вот если дробные то с нужным числом знаков после запятой до последнего значащего.

1,000 надо показать как 1
1,0100000 надо показать как 1,01
1,0000000 надо показать как 1
1,1000000 как 1,1
и т.д.
3 Garykom
 
гуру
22.03.20
22:32
(2)+ И не просто показать а свой диалог ввода наваять в т.ч. дробных чисел
4 NcSteel
 
22.03.20
22:37
(2) Ты говоришь, что есть форматная строка, которую надо разобрать. Но зачем непонятно.
И зачем разбирать, если просто возьми число и по форматной строке получи число строкой. И показывай пользователю
5 Garykom
 
гуру
22.03.20
22:42
(4) Есть форматная строка "ЧДЦ=3; ЧРД=,"

Мне надо узнать что КоличествоЗнаков=3 и что РазделительДробной="," остальное не важно.

Парсер готовый есть?
6 Garykom
 
гуру
22.03.20
22:43
(5)+ Потому что я буду динамически менять ФорматРедактирования для поля, сам конструируя форматную строку по нужным параметрам.
7 Сияющий в темноте
 
22.03.20
23:04
Я делал проще,везде,где числа использовал тип Число:Целая.Дробная
и писал преобразование в конструктор описания типа и обратно-остальное,нафиг не нужно,в принципе,так как форматная строка задает много чего лишнего,например,как выводить ноль.
8 takefive
 
22.03.20
23:12
НСтр("ЧДЦ=3; ЧРД=,", "ЧРД")
9 RomanYS
 
22.03.20
23:48
(8) красиво
10 Garykom
 
гуру
22.03.20
23:54
(8) Грязный хак.

Но надо проверить что возвращает если нет такого "кода языка".
И очень некрасиво если все "коды языков" = параметрам в форматной строке пробовать получить.
11 RomanYS
 
23.03.20
00:00
(10)
1. Возвращает пустую строку
2. Не понял
12 Garykom
 
гуру
23.03.20
00:07
(11) 2. Я не знаю сколько там параметров в форматной строке, мне надо все получить.

с НСтр придется все перепробовать:

ЧРД = НСтр("ЧДЦ=3; ЧРД=,", "ЧРД");
ЧДЦ = НСтр("ЧДЦ=3; ЧРД=,", "ЧДЦ");
//и т.д.
13 D_E_S_131
 
23.03.20
11:27
(10) СтрРазделить() вроде бы не хак, а как раз для этого.