Имя: Пароль:
1C
1С v8
Получение ближайшего числа из справочника
↓Ø (Волшебник 09.02.2025 11:19)
0 Sosick
 
naïve
08.02.25
14:42
Гуру 1С, подскажите по заданию. Во внешней обработке генерируются случайные числа(100, 999), количество таких чисел варьируется от 8 до 16.

Нужно получить ближайший числовой код платформы из справочника "Платформы", который содержит реквизиты:
Платформа - строка(50)
ЧисловойКод - число(3)

при этом количество записей в справочнике неизвестно

В данный момент я использую запрос для получение этих данных, но я понимаю, что вызывать запрос 18 раз, далеко не самое оптимальное решение. Были идеи использовать методы перебора или двоичного деления, но в таком случае приходится получать все значения справочника "Платформы", что тоже является не совсем оптимальным решением. Так же пробовал использовать вложенный запрос на перебор списка, но в таком случае возможно искать только точное соответствие с помощью "В". Есть ли более оптимизированное решение для данной задачи или необходимо использовать только цикл?

ВЫБРАТЬ ПЕРВЫЕ 1
    ПЛ.ЧисловойКод КАК ЧисловойКод,
    ПЛ.Ключевая КАК Ключевая,
    ПЛ.Ссылка КАК Ссылка
ИЗ
    Справочник.Платформы КАК ПЛ
ГДЕ
    ПЛ.ЧисловойКод <= &СгенерированноеЧисло

УПОРЯДОЧИТЬ ПО
    ЧисловойКод УБЫВ";
1 PR
 
08.02.25
14:52
(0) Так это же тебя тестируют, мы-то тут причем?
2 Волшебник
 
08.02.25
14:57
Когда я вижу генератор случайных чисел в учётной системе, моя рука тянется к пистолету...
3 Sosick
 
naïve
08.02.25
14:57
Ну я и не прошу написать мне решение. Я хочу узнать есть ли способ решить данную задачу без использования запроса на получение полного списка справочника или цикла запроса.
4 Волшебник
 
08.02.25
16:10
(3) Цикл запроса — это сильно!
Хватит морочить нам голову, тупой бот! Это тебе дали задание и дали доступ на мисту, чтобы ты грамотно распорядился своими возможностями.
5 PR
 
08.02.25
15:07
(3) Есть
6 Ненавижу 1С
 
гуру
08.02.25
15:17
(0) загрузите ваши случайные величины в таблицу значений. Передайте ее во временную таблицу. Соедините ее со справочником по указанному условию...

Кстати о ближайшем - у вас не превышающее данное число, если считать модуль разности за расстояние, то ближайшее может быть больше исходного
7 Garykom
 
гуру
08.02.25
15:26
(0) Интересная задачка
Для одного случайного числа не проблема одним запросом найти ближайшее с любой стороны
Но вот одним запросом для нескольких?
8 Garykom
 
гуру
08.02.25
15:28
(7)+ Хотя через ВТ да можно
9 Sosick
 
naïve
08.02.25
17:23
(6) Большое спасибо за подсказку! Да, все так, мне нужно именно ближайшее, но не превышающее значение. Просто не стал указывать, так как посчитал, что это потребуется для ответа на вопрос.
10 Sosick
 
naïve
08.02.25
17:24
(8) Благодарю!
11 Волшебник
 
08.02.25
17:41
(9) тупой бот. Покинь мисту на год и научись общаться на форуме. Ты блять "НЕ" пропустил. Какой нахуй ты программист после этого?
12 Sosick
 
naïve
08.02.25
18:05
(11) зачилься
13 Волшебник
 
08.02.25
18:11
(12) что это означает? "зачиллиться" = успокоиться?
Пошёл ты нахуй!!!
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.