Определение длины строки в запросе методом половинного деления

27.12.15

Разработка - Запросы

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Обработка пример для УФ
.epf 8,51Kb
0
0 Скачать (1 SM) Купить за 1 850 руб.
Обработка сравнение способов
.epf 8,50Kb
0
0 Скачать (1 SM) Купить за 1 850 руб.

Здесь описан другой способ (21. Определение длины строки в запросе).

Необходимо построить в запросе дерево поиска конца строки. Для формирования текста с деревом, включаемого в  запрос, используется рекурсивная функция:

Функция Дерево(Реквизит, Начало, Конец) Экспорт

	Если Начало + 1 = Конец Тогда
		Возврат Строка(Конец);
	КонецЕсли;
	Середина = Начало + Цел((Конец - Начало) / 2);
	СтрокаДерево = "ВЫБОР КОГДА ПОДСТРОКА(" + Реквизит + ", " + (Середина + 1) + ", 3) = """" ТОГДА " 
		+ Дерево(Реквизит, Начало, Середина) + " ИНАЧЕ " + Дерево(Реквизит, Середина, Конец) + " КОНЕЦ";
	Возврат СтрокаДерево;

КонецФункции // Дерево()

Где:

Реквизит – строка с именем таблицы и реквизита, содержащего определяемые строки.

Начало, Конец – интервал в котором будет производится поиск конца строки.

ТекстДерево = Дерево("Строки.Строка", -1, 300); 

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

Вставляем полученное дерево в запрос:

Запрос.Текст = 
	"ВЫБРАТЬ
	|	Строки.Строка,
	|	" + ТекстДерево + " КАК Длина
	|ИЗ
	|	Строки КАК Строки
	|
	|УПОРЯДОЧИТЬ ПО
	|	Длина УБЫВ";

Вот и все. Скоро напишу, для чего это было нужно)

Запрос

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    152764    836    398    

846

Запросы Программист Платформа 1С v8.3 Запросы Конфигурации 1cv8 Бесплатно (free)

Столкнулся с интересной ситуацией, которую хотел бы разобрать, ввиду её неочевидности. Речь пойдёт про использование функции запроса АВТОНОМЕРЗАПИСИ() и проблемы, которые могут возникнуть.

11.10.2024    2217    XilDen    15    

37

Запросы Программист Запросы Бесплатно (free)

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

16.08.2024    6959    user1840182    5    

28

Математика и алгоритмы Запросы Программист Платформа 1С v8.3 Запросы Бесплатно (free)

Рассмотрим быстрый алгоритм поиска дублей с использованием hash функции по набору полей шапки и табличных частей.

08.07.2024    2133    ivanov660    9    

22

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

Часто при разработке отчетов в СКД возникает ситуация, когда не совсем понятно, почему отчет выводит не те данные, которые нужны, либо не выводит вовсе. Возникает потребность увидеть конечный запрос, который формирует СКД. Как это сделать, рассмотрим в этой статье.

15.05.2024    7366    implecs_team    6    

46

Запросы Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Часто поступают задачи по произвольному распределению общих сумм. После распределения иногда пропадают копейки. Суть решения добавить АвтоНомерЗаписи() в ВТ распределения, и далее используя функции МАКСИМУМ или МИНИМУМ можем положить разницу копеек в первую или последнюю строку знаменателя распределения.

11.04.2024    3221    andrey_sag    10    

35

Запросы СКД Программист Стажер Платформа 1С v8.3 Запросы Система компоновки данных 1С:ERP Управление предприятием 2 Бесплатно (free)

В типовых конфигурациях разработчики компании 1С иногда используют в отчетах, построенных на СКД, такую конструкцию, как "ГДЕ ЛОЖЬ". Такая конструкция говорит о том, что данные в запросе не будут получены совсем. Для чего же нужен тогда запрос?

13.02.2024    7363    KawaNoNeko    23    

26
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. premierex 204 27.12.15 15:48 Сейчас в теме
(0) На скриншот посмотрел и страшно стало... за 1С-ников.
user1158788; +1 Ответить
2. vasvl123 119 27.12.15 16:51 Сейчас в теме
Выглядит, конечно, не очень, но работает замечательно
3. kapustinag 27.12.15 17:56 Сейчас в теме
Скрин №2 точно в порядке? Номера ВСЕХ строк совпадают с их длинами.
Или это особенность алгоритма? -:)
4. vasvl123 119 27.12.15 18:04 Сейчас в теме
(3) kapustinag, для отладки сделал так, чтобы в начале каждой строки была написана своя длина)
5. ildarovich 7926 29.12.15 16:27 Сейчас в теме
Вот гораздо более компактная реализация той же самой идеи:
ВЫБРАТЬ
	"12345678901234567890123456789012345678901234567890" КАК Стр,
	1023 КАК Х
ПОМЕСТИТЬ Дано
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Стр, Х
ИЗ	(ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х -   0, 1) = "" ТОГДА Х -   1 ИНАЧЕ Х КОНЕЦ КАК Х
ИЗ	(ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х -   1, 1) = "" ТОГДА Х -   2 ИНАЧЕ Х КОНЕЦ КАК Х
ИЗ	(ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х -   3, 1) = "" ТОГДА Х -   4 ИНАЧЕ Х КОНЕЦ КАК Х
ИЗ	(ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х -   7, 1) = "" ТОГДА Х -   8 ИНАЧЕ Х КОНЕЦ КАК Х
ИЗ	(ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х -  15, 1) = "" ТОГДА Х -  16 ИНАЧЕ Х КОНЕЦ КАК Х
ИЗ	(ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х -  31, 1) = "" ТОГДА Х -  32 ИНАЧЕ Х КОНЕЦ КАК Х
ИЗ	(ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х -  63, 1) = "" ТОГДА Х -  64 ИНАЧЕ Х КОНЕЦ КАК Х
ИЗ	(ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х - 127, 1) = "" ТОГДА Х - 128 ИНАЧЕ Х КОНЕЦ КАК Х
ИЗ	(ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х - 255, 1) = "" ТОГДА Х - 256 ИНАЧЕ Х КОНЕЦ КАК Х
ИЗ	(ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х - 511, 1) = "" ТОГДА Х - 512 ИНАЧЕ Х КОНЕЦ КАК Х
ИЗ	Дано КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ
Показать
Этим запросом можно получить длину строки до 1023 быстро и без дополнительных таблиц.
user1158788; UniversaLL; unknown181538; Tavalik; deevil; Lena272; ZOMI; json; jsr; Операция1Ы; vasvl123; +11 Ответить
6. vasvl123 119 29.12.15 19:28 Сейчас в теме
(5) ildarovich, Супер! Возьму на вооружение в новой обработке. Переносите способ в Ваш пост про минимализмы. Длину подстроки, однако, следует брать 3 символа, иначе пробел дает ложный конец строки, например, после 31 символа.
7. jsr 31.12.15 11:20 Сейчас в теме
(6) чтобы "отловить" любое количество внутренних пробелов, идущих подряд, длина подстроки должна быть достаточной, чтобы "дотянуться" до конца строки. Не вникая особо, можно везде поставить 1024. А хвостовые пробелы вообще не ловятся.
9. vasvl123 119 31.12.15 12:34 Сейчас в теме
(7) jsr, чтобы наверняка, тогда да. Но не 1024, а половина длины строки, причем можно с каждым шагом уменьшать вдвое.
13. starik-2005 3081 12.10.17 23:28 Сейчас в теме
(5)
Этим запросом можно получить длину строки до 1023 быстро и без дополнительных таблиц.
Странная странность, но если в строке есть пробел, то будет найдена длина строки до пробела (платформа 8.3.10).
Trepolog; +1 Ответить
14. ildarovich 7926 13.10.17 12:02 Сейчас в теме
(13) Странно под пятницу 13-е тринадцатое сообщение спряталось у меня в середину списка комментариев, поэтому не сразу его нашел, так как смотрел в конце ленты.

По сути вопроса:
Проверил на 8.3.11. У меня не подтверждается, пробелы в середине не учитываются, вот скриншот. Возможно, просто Х не задаете. Попробуйте в консоли точно такой запрос как в (5).
Прикрепленные файлы:
15. starik-2005 3081 13.10.17 18:43 Сейчас в теме
(14)
Проверил на 8.3.11. У меня не подтверждается, пробелы в середине не учитываются, вот скриншот.
Короче, проблема возникает, если в конце строки через пробел добавляется одиночные символы, но как-то странно вообще (см. картинки):
Строка "1234567890123456789012345678901234567890123456789 1 2 3 ff zz zz" показывает 64, что правильно, но стоит только вместо "ff" указать "f" - и все! Дальше как пойдет - поведение системы непредсказуемо...
Прикрепленные файлы:
17. ildarovich 7926 13.10.17 23:12 Сейчас в теме
(15) Теперь увидел ошибку. Она алгоритмическая. Самое интересное, что уже попадался в эту ловушку и писал об этом в статье Агрегатное суммирование строк в запросе – сложно, но не невозможно. В комментарии http://forum.infostart.ru/forum9/topic93629/message980659/#message980659 . Можно поправить вот так:
ВЫБРАТЬ
    "1234567890123456789012345678901234567890123456789 1 2 3 f zz zz" КАК Стр,
    1023 КАК Х
ПОМЕСТИТЬ Дано
;
ВЫБРАТЬ
    Стр, Х
ИЗ    (ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х -   0, 1) + "!" = "!" ТОГДА Х -   1 ИНАЧЕ Х КОНЕЦ Х
ИЗ    (ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х -   1, 1) + "!" = "!" ТОГДА Х -   2 ИНАЧЕ Х КОНЕЦ Х
ИЗ    (ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х -   3, 1) + "!" = "!" ТОГДА Х -   4 ИНАЧЕ Х КОНЕЦ Х
ИЗ    (ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х -   7, 1) + "!" = "!" ТОГДА Х -   8 ИНАЧЕ Х КОНЕЦ Х
ИЗ    (ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х -  15, 1) + "!" = "!" ТОГДА Х -  16 ИНАЧЕ Х КОНЕЦ Х
ИЗ    (ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х -  31, 1) + "!" = "!" ТОГДА Х -  32 ИНАЧЕ Х КОНЕЦ Х
ИЗ    (ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х -  63, 1) + "!" = "!" ТОГДА Х -  64 ИНАЧЕ Х КОНЕЦ Х
ИЗ    (ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х - 127, 1) + "!" = "!" ТОГДА Х - 128 ИНАЧЕ Х КОНЕЦ Х
ИЗ    (ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х - 255, 1) + "!" = "!" ТОГДА Х - 256 ИНАЧЕ Х КОНЕЦ Х
ИЗ    (ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х - 511, 1) + "!" = "!" ТОГДА Х - 512 ИНАЧЕ Х КОНЕЦ Х
ИЗ    Дано КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ
Показать
Хотя, наверное, можно и вот так:
ВЫБРАТЬ
    "1234567890          " КАК Стр,
    1023 КАК Х
ПОМЕСТИТЬ Дано
;
ВЫБРАТЬ
    Стр, Х
ИЗ    (ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х -   0, 512) = "" ТОГДА Х -   1 ИНАЧЕ Х КОНЕЦ Х
ИЗ    (ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х -   1, 512) = "" ТОГДА Х -   2 ИНАЧЕ Х КОНЕЦ Х
ИЗ    (ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х -   3, 512) = "" ТОГДА Х -   4 ИНАЧЕ Х КОНЕЦ Х
ИЗ    (ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х -   7, 512) = "" ТОГДА Х -   8 ИНАЧЕ Х КОНЕЦ Х
ИЗ    (ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х -  15, 512) = "" ТОГДА Х -  16 ИНАЧЕ Х КОНЕЦ Х
ИЗ    (ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х -  31, 512) = "" ТОГДА Х -  32 ИНАЧЕ Х КОНЕЦ Х
ИЗ    (ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х -  63, 512) = "" ТОГДА Х -  64 ИНАЧЕ Х КОНЕЦ Х
ИЗ    (ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х - 127, 512) = "" ТОГДА Х - 128 ИНАЧЕ Х КОНЕЦ Х
ИЗ    (ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х - 255, 512) = "" ТОГДА Х - 256 ИНАЧЕ Х КОНЕЦ Х
ИЗ    (ВЫБРАТЬ Стр, ВЫБОР КОГДА ПОДСТРОКА(Стр, Х - 511, 512) = "" ТОГДА Х - 512 ИНАЧЕ Х КОНЕЦ Х
ИЗ    Дано КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ) КАК ВЗ
Показать
Разница в реакции на хвостовые пробелы. В первом варианте они считаются в длине строки, а во втором случае - нет.
Большое спасибо за внимательность. Очередная "последняя" обнаруженная ошибка, которая, как известно, всегда предпоследняя.
Нужно будет еще в минимализмах поправить.
user1158788; ybatiaev; +2 Ответить
18. starik-2005 3081 13.10.17 23:28 Сейчас в теме
(17) я сравнивал обрезанную и необрезанную строку, чтобы решить подобную проблему, хотя, конечно, смысла особого в получении длины строки таким образом нет (на мой скромный взгляд). Но как упражнение весьма интересно.
19. ildarovich 7926 13.10.17 23:41 Сейчас в теме
(18) Да, больше как упражнение (во всяком случае, не помню, чтобы самому приходилось на практике применять). Тем более, кто-то писал (сам не проверил еще), что в Postgre есть более жесткое ограничение на максимальный уровень вложенности. С другой стороны, для небольших строк это лучше чем гребенка "подобно" или соединение с искусственной таблицей. Поэтому пусть будет как возможный вариант.
23. photocritic 04.03.21 10:33 Сейчас в теме
(5)
ВЫБРАТЬ
"12345678901234567890123456789012345678901234567890" КАК Стр,
1023 КАК Х
ПОМЕСТИТЬ Дано
;


На 8.3.18.1208 запрос виснет, а потом
8. vasvl123 119 31.12.15 12:28 Сейчас в теме
Сравнил производительность обоих способов, выложил обработку и скрин. Думаю способ с деревом все же имеет право на жизнь.
10. nvv1970 11.10.17 14:15 Сейчас в теме
(0) ...и последний вопрос
Скоро напишу, для чего это было нужно
ЗАЧЕМ? ))) Два года ждем )
12. nvv1970 12.10.17 21:06 Сейчас в теме
(11) Хммм.... Интересненько, любопытненько... Хотя не ясно как эти две статьи связать.

ЗЫ: и сразу полезли мысли (про нечеткий поиск) "где такое можно применить, внедрить в решение, продать наконец. )))
Нигде, никого это не заинтересует. Как и отсутствие дублей...
Если только вы не программист на предприятии и вам эти косяки исправлять.
20. vasvl123 119 14.10.17 16:52 Сейчас в теме
(12) способ определения длины строки в запросе применил при определении схожести строк в нечетком поиске. По поводу применить/продать - автоматизировать что-то таким способом нельзя, нужно пользоваться очень осторожно и перепроверять результаты.
16. starik-2005 3081 13.10.17 18:46 Сейчас в теме
"1234567890123456789012345678901234567890123456 7 8 9 1 2 3 ff zz zz" - 67 символов, убираю одну "f": "1234567890123456789012345678901234567890123456 7 8 9 1 2 3 f zz zz" - и уже 63!
21. gurd 5 16.12.19 12:51 Сейчас в теме
А что если:
ВЫБРАТЬ
	0 КАК Цифра
ПОМЕСТИТЬ Единицы

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	1

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	2

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	3

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	4

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	5

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	6

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	7

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	8

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	9
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	0 КАК Цифра
ПОМЕСТИТЬ Десятки

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	10

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	20

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	30

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	40

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	50

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	60

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	70

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	80

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	90
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	0 КАК Цифра
ПОМЕСТИТЬ Сотни

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	100

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	200

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	300

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	400

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	500

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	600

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	700

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	800

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	900
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	0 КАК Цифра
ПОМЕСТИТЬ Тысячи

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	1000

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	2000

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	3000

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	4000

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	5000

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	6000

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	7000

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	8000

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	9000
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	1 + Десятки.Цифра + Единицы.Цифра + Сотни.Цифра + Тысячи.Цифра КАК Число
ПОМЕСТИТЬ ВТ_Числа
ИЗ
	Тысячи КАК Тысячи,
	Сотни КАК Сотни,
	Десятки КАК Десятки,
	Единицы КАК Единицы
ГДЕ
	1 + Десятки.Цифра + Единицы.Цифра + Сотни.Цифра + Тысячи.Цифра <= 4000
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ПОДСТРОКА("Тестовая строка", ВТ_Числа.Число, 1) КАК Символ,
	ВТ_Числа.Число КАК Число
ПОМЕСТИТЬ ВТ_Символы
ИЗ
	ВТ_Числа КАК ВТ_Числа
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	МАКСИМУМ(ВТ_Символы.Число) КАК Число
ИЗ
	ВТ_Символы КАК ВТ_Символы
ГДЕ
	ВТ_Символы.Символ <> ""
Показать
user1158788; happy-anvar; +2 Ответить
22. vasvl123 119 19.12.19 09:39 Сейчас в теме
Решение имеет право на существование, но оно гораздо более затратное, чем моё.
24. Diks_Soft 151 20.01.22 11:32 Сейчас в теме
Оставьте свое сообщение