#0
by Балоун
собссно, делаю запрос всего, потом Результат[ГСЧ.СлучайноеЧисло(0, Результат.Количество-1)].Ссылка меня смущает то, что приходится читать всю таблицу ради одного значения. есть ли более правильные методы?
#3
by Птица
ну если справочник очень большой, то можно сначала запросом выяснить количество, потом получить случайное число N, ну а потом уже - выбрать первые N в подзапросе, упорядочив покоду по возрастанию а в запросе - выбрать первые 1, упорядочив по коду по убыванию. но в принципе из-за сотни другой элементов можно так не заморачиваться
#4
by Балоун
сейчас там где-то 2.7 КЭлементов. тормозов не ощущаю, всё работает. вопрос скорее познавательного характера.. выбрать первые N - это ж тоже в наихудшем случае чтение всей таблицы плюс запрос на выяснение количества ;)
#5
by MRAK
если только в этом проблема, то можно вызывать функцию рекурсивно, проверяя, существует ли данный элемент и не помечен ли он на удаление
#6
by Балоун
при чём тут рекурсия? да, можно генерить случайный код, до тех пор, пока не попадётся "правильный" элемент. наверное, даже быстрее будет..
#7
by Ненавижу 1С
если нужны данные 1244-го элемента, то достаточно получить ТОЛЬКО 1244 ссылки и взять максимальную, а у нее уже получить все ЕЕ данные
#8
by andrewks
можно генерить два случайных кода с некоторым разбегом, обеспечивающим вероятностью наличия в этом диапазоне эл-та близкой к 1, и потом select top 1 from... where Code between &LeftBound and &RightBound
#11
by Балоун
повторюсь: вопрос носит познавательный характер. я так люблю бороться за миллисекунды и количество строк кода ;)
#12
by andrewks
это почему? имеешь в виду, если нет кода? ну, можно и через наименование, и т.п. сделать
#13
by Балоун
если у нас в коде всякая белиберда типа 001 280 300, то между 500 и 600 ничего не найдёт
#15
by experimentator76
придется запросом выбрать непомеченные на удаление и не группы и потом уже из ТЗ забирать случайные ссылки элементов
#16
by Мигрень
Просишь пользователя загадать случайное слово. Далее - полнотекстовый поиск в справочнике по этому слову. Рекурсивно ищем, пока не найдем самое близкое по смыслу. Мне кажется это будет оптимально, с точки зрения борьбы за миллилитры.
#19
by experimentator76
нужно оптимизировать сам справочник то есть источник данных добавить реквизит Порядок 1,2,3,..,n и константу в которой будет содержаться n далее все элементарно
#22
by experimentator76
платформа 8.2 предоставила возможность делать запросы штатными средствами к таблицам баз данных значит мы можем подцепить "свою" же таблицу для работы с ней вот я вытащил первые 10 из С.Номенклатура IDRRef 6094a609-008e-11e1-be70-00151762fcc8 c2434ae5-0102-11e0-b989-00151762fcc8 c2434ae7-0102-11e0-b989-00151762fcc8 c2434ae9-0102-11e0-b989-00151762fcc8 34bb54e0-0108-11e0-b989-00151762fcc8 d680fe2a-011e-11e0-b989-00151762fcc8 e97a2cfa-0391-11e1-9433-00151762fcc8 e536dd37-0412-11de-b72b-00151762fcc8 e536dd39-0412-11de-b72b-00151762fcc8 e536dd3b-0412-11de-b72b-00151762fcc8 отсортировано по IDRRef то есть по ссылке элементов видно что наблюдается закономерность формирования ссылок изучив эту закономерность и переведя случайное число в шестнадцатиричное можно спозиционироваться на нужную ссылку запросом к примеру ГДЕ IDRRef = "e536dd3b-0412-11de-b72b-00151762fcc8"
#23
by experimentator76
IDRRef по умолчанию подтягивается в ВИД как тип УникальныйИдентификатор но можно перевыбрать тип на Строка для своего источника данных и сравнивать с ним строку
#26
by Ns33
ИМХО: Если такое делать часто, то как в , если редко, то в . А если как в , то нужно помнить, что элемент может быть удален и сгенерированная ссылка будет несуществующей.
#27
by experimentator76
эти три варианта наверное окончательные просто и не требует доработок быстро, требует доработок конфы быстро, требует доработок конфы в случае обращения через ВИД не требует если обращаться напрямую не через 1С ну и требуется разобраться как формируется IDRRef когда то читал по 1С7.7 а вот по восьмере не помню вижу что у элементов последние две части похожи на последние две части родителя
#28
by andrewks
это примерно то же самое, что и ориентироваться на код. ибо могут быть как "пришлые" УИД, так и сгенерированные 1С-кодом
#31
by andrewks
нужно в начале "проинициализировать" алгоритм, узнать общее кол-во элементов, самый маленький и самый большой код. далее можно поступать так: генерить случайны код из диапазона и брать за левую границу, за правую границу всегда брать самый большой код.
#34
by МихаилМ
если генерировать случайное число из из диапозона min max IDRRef то нужно учитываить распределение элементов. например если приначале работы был загружен большой справочник то будут созданы элементы с случайным IDRRef с +1 до n и сответственно в дальнейшем учитывать плотность создания элементов за сессию.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Получить id и получить объект по id
- Как программно получить получить пароль пользователя в текущем сеансе работ
- Как получить разность дат (Нужно получить количество дней)
- Как получить ГУИД элемента по OLE, записать и получить по нему ссылку?
- Как получить ссылку на элемент справочника по значению строки табличной части эт
- Как запросом получить всю иерархию папок в которую входит элемент справочника!?
- v7: ОткрытьФормуМодально получить ссылку на созданный элемент
В этой группе 1С
- Стаж работы на предприятии в 1С: ЗУП 82
- Динамический список 1с 8.2
- Пересылка писем из MS Outlook
- Зарплата в УТ 10.3
- Просто вопрос (СКД) как прижать текст вправо в первой колонке
- Различия в коде одной базы на разных машинах
- v7: Кто заблокировал объект? 7.7 от ЁПРСТ
- 1С:Общепит и Рарус-Общепит ред.8
- Универсальный отчет, нумерация строк
- v7: Медленная работа 1С. Как ускорить?
- 1С Франчайзи. Рарус или Арбис? Какой софт брать?
- БГУ: ПОФ переданные
- Анализ счета на СКД
- СКД. Параметры запроса компоновки
- Как подключить весы Меркурий 315 к УТ
- Специалист по платформе 8.2. Расчеты. Помогите решить.
- Искусственное прерывание ТИИ
- Как востановить состояние SQL базы на определенное время
- Как обратиться к полю "Имя" предопределенного элемента справочника?
- Хранилище конфигурации. Как удалить?