Имя: Пароль:
1C
1С v8
Как наиболее оптимально вытащить данные из таблицы?
,
0 Сияющий Асинхраль
 
02.06.23
20:48
Задача, казалось бы, простенькая, но торможу... Смысл такой, имеем плоскую таблицу в три колонки: Поставщик, ИД (товара), Адрес (в интернете). Одному ИД могут соответствовать разные поставщики и разные Адреса. Надо сформировать таблицу в которую входило бы по одному значению каждого ИД товара, а колонки Поставщик и Адрес заполнены были бы, но только одним из  правильных соответствий для данного ИД - полный набор соответствий не нужен. Вопрос: как это сделать оптимально? В таблице несколько сотен тысяч строк...
1 Сияющий Асинхраль
 
02.06.23
20:51
В идеале, даже Поставщик не нужен, лучше на выходе иметь один ИД и соответствующий ему ОДИН из доступных ему Адресов...
2 Zamestas
 
02.06.23
20:52
(0) А данные в базе 1С или нет?
3 Сияющий Асинхраль
 
02.06.23
20:54
(2) Да, это содержание регистра сведений...
4 Сияющий Асинхраль
 
02.06.23
20:56
Тупо я, конечно, сделать могу. Например, сделать Итог по ИД, и при переборе результатов брать по первой строке после итога по каждому ИД. Но эта метода мне не кажется нормальной...
5 Zamestas
 
02.06.23
21:00
(3) Какие требования к правильности: "одним из  правильных соответствий для данного ИД"?
6 Сияющий Асинхраль
 
02.06.23
21:07
ИД - это ISBN книги. Поставщики, как я сказал, могут быть разные, и у разных поставщиков могут быть разные ссылки на обложку книги в интернете. Мне надо одну любую правильную ссылку по каждому ISBN, чтобы не отправлять своих пользователей по десяти разным сайтам для каждой книге. Т.е. мне надо каждому ISBN указать единственный адрес в интернете, где пользователь сможет посмотреть обложку, а уж какой это будет сайт без разницы, главное, чтобы конкретной книге ставилась в соответствие конкретная картинка...
7 Михаил Козлов
 
02.06.23
21:23
Создайте соответствие. В цикле по строкам таблицы загоните в него разные ИД и какой- нибудь из адресов.
8 Сияющий Асинхраль
 
02.06.23
21:25
(7) С циклом вопросов нет. В цикле все делается на раз. Просто жутко интересно, можно ли подобное сотворить запросом. Вот этого не придумал...
9 Михаил Козлов
 
02.06.23
21:26
Думаю, что можно: сгруппировать по ИД. Это мода такая, все запросами делать?
10 Шурик71
 
02.06.23
22:02
А в чем сложность то???

Выбрать рег.Ид, Максимум(рег.Адрес)
Поместить вт
Из РегистрСведений.ХХХХХ как рег
Сгруппировать по рег.Ид
;
Выбрать вт.Ид, вт.Адрес, рег.Поставщик
Из вт
Левое соединение РегистрСведений.ХХХХХ как рег
По вт.Ид = рег.Ид
и вт.Адрес = рег.Адрес

И при необходимости в запрос, формирующий вт - добавить еще
"Индексировать по Ид, Адрес" ,
но эффективность индекса проще проверить опытным путем..
11 Сияющий Асинхраль
 
03.06.23
18:40
(10) Да, спасибо!!! Тоже догадался уже. Редко использую Максимум, но тут реально очень помог.