#0
by Fragster
Типа как регулярное выражение (d+)$ (самой регуляркой через COM таки не катит, потому что может выполнятся на сервере под никсами)
#11
by IamAlexy
только там прикол.. допустим у вас хитро0пый номер и там дата и месяц стоят в префиксе... типа 0120/00001 тогда на печать уползет соответственно 120/00001 :) а в декабре будет соответственно 1120/000001 то есть типа некрасиво :)
#12
by Fragster
а БЫСТРО - это потому что количество обрабатываемых строк будет до 100000 на документ (серийные номера) :(
#13
by Fragster
+ хочу в базу писать: префикс такой-то, начальный номер такой-то, количество такое-то
#14
by IamAlexy
быстро это когда у тебя есть префикс заранее известной длины и ты просто через ПРАВ его отсекаешь.
#16
by Stepa86
Префикс всегда непредсказуем? если можно получить быстро префикс для хотя бы половины, то можно делать , для кого это не проканало, план Б (например как )... Ну и в первую очередь попробовать регекспом обработать, вдруг доступен... Если много повторений, то можно еще структуру заюзать в качестве кеша, но надо еще оценить будет ли выигрыш
#17
by smaharbA
//******************************************* Процедура Сформировать Стр="АБ00256"; Для Сч=0 По 9 Цикл Знак=Найти(Стр,Сч); Если (Знак>1) Тогда Код=Сред(Стр,Знак-1); Если КодСимв(Код)>57 Тогда Сообщить(Число(Сред(Код,2))); ИначеЕсли КодСимв(Код)<48 Тогда Сообщить(Число(Сред(Код,2))); КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры
#20
by andrewks
кусать цифири справа до тех, пока не встретим нецифровой литерал, затем - преобразование типа
#21
by trdm
[1C] Функция глВыделитьПрефиксНомера( псНомер, псОстЧисло = "" ) Экспорт ЗначВозврата= ""; вНомерСтар = СокрЛП(псНомер); псОстЧисло = ""; вНомерНов = ""; СЦ = 0; вЕщеЧисло = 1; Для СЦ = 1 По СтрДлина(вНомерСтар) Цикл вСимвол = Сред(вНомерСтар,СтрДлина(вНомерСтар)-СЦ+1,1); вСмещение = КодСимв("9") - КодСимв(вСимвол); Если вЕщеЧисло = 1 Тогда Если (вСмещение <= 9) И (вСмещение >= 0) Тогда псОстЧисло = вСимвол + псОстЧисло; Иначе вЕщеЧисло = 0; КонецЕсли; КонецЕсли; Если вЕщеЧисло = 0 Тогда ЗначВозврата = вСимвол + ЗначВозврата; КонецЕсли; КонецЦикла; Возврат ЗначВозврата; КонецФункции // глВыделитьПрефиксНомера [/1C]
#28
by smaharbA
[1C] //******************************************* Процедура НомерБезПрефикса(Стр) Для Сч=0 По 9 Цикл Знак=Найти(Стр,Сч); Если (Знак>1) Тогда Код=КодСимв(Сред(Стр,Знак-1)); Если Код>57 Тогда Стр=Число(Сред(Стр,Знак)); Прервать; ИначеЕсли Код<48 Тогда Стр=Число(Сред(Стр,Знак)); Прервать; КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры Процедура Сформировать Стр="АБ00256"; НомерБезПрефикса(Стр); Сообщить(Стр); Стр="0123456789аб123"; НомерБезПрефикса(Стр); Сообщить(Стр); КонецПроцедуры // Сформировать [/1C]
#30
by МихаилМ
пребирайте посимвольно и сравнивайте на > предврительно статистически (коли 100 тысяч) оцените размер префикса и размер строки и сответственно перебирайте с расчитанной статистически позиции незабывайте, что на сервере можно исполнить фоновые задания те распараллеить вычисления. если исходныйе данные хранятся в бд. то, учитывая жуткую тормознутость 1с8, может оказаться целесобразным даное преоразование совершить запросом на сервере бд. либо распаралелить часть считать на клиент (сервер 1с) часть расчитать на сервере субд
#34
by smaharbA
и Сред быстрее чем Лев/Прав (не уверен - кажется не логичным, но вроде проверял как то)
Тэги: Математика и алгоритмы
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Префикс или не префикс (косяки с автонумерацией)
- Как быстро очистить 1с 7.7. (dbf)от данных документов и регистров?
- Как в 1С зная номер дня года получить дату?
- Как быстро найти строку в ТЗ по нескольким колонкам?
- Как получить разность дат (Нужно получить количество дней)
- Как получить движение регистра по доку, зная номер строки?
- Как получить префикс номера?
- как получить значение ячейки тз зная строку и колонку
- Можно ли получить длину номера документа в запросе?
- Получить номер последнего документа с префиксом
- Можно ли получить номер уровня группы / элемента в запросе для СКД
- Как программно документам устанавливат нов код с префиксом впереди префикс код
В этой группе 1С
- ЗиУП коэф. индексации зп
- Выгрузить колонки в ТЗ из табличной части документа
- Масштаб через Screwdriver
- Подписка на событие VS мутабельные значения
- freenx через прокси
- 1C 77 + Ms SQL 2000 хронология операций в выборках
- Как выгрузить табличное поле в таблицу значений?
- v7: Как установить значение константы, зная ее наименование?
- Как спозиционировать курсор на определенную строку табличного поля
- Правила конвертации данных из БП в УПП
- Перенос данных из ЗиК (7.70.305) в ЗУП (2.5.30.4)
- Как изменить шрифт, без помощи конфигуратора?
- СКД расшифровка метод ПолучитьРодителей()
- Шаблон Ограничения #ПоЗначениям в БСП 8.2
- PostgreSQL. Как поменять путь к кластеру базы данных по умолчанию?
- ibcommon.v8i
- ФормаЗаписи регистра сведений
- гламурный розовый фон
- Ведомость по амортизации ОС в УПП 1.2.35.1
- v8: Прога "Документы ПУ 5". Как выгрузить данные из 1С