Вопрос по запросу!

1. chakaka1 07.03.25 18:39 Сейчас в теме
Здравствуйте!
Конфигурация самописная, но вопрос в целом по запросу.

Есть справочник Номенклатура с реквизитом "UIDВоВнешнейСистеме" (строка, длина 36), в итоге как UID.
(самописная конфигурация, 130 баз, на текущий момент я не встречал в практитке количество записей в справочнике Номенклатура более 300, поэтому на скорость выполнения не жалуюсь).

Суть моего запроса в следующем:

Из внешней системы, я получаю запись следующего вида:
Из UID-from1 я могу сделать 3 номенклатуры (UID-to1, UID-to2, UID-to3). Задача увидеть это в виде ТЗ с наименованиями (ссылками со справочника Номенклатура).

Как корректно реализовать запрос:
1) Для каждого UID-а делаем отдельную связь со справочником номенклатуры по
файлUID = Номенклатура.UIDВоВнешнейСистеме;

2) Помещаем во временную таблицу весь справочник номенклатуры; И из неё, для каждого UID-да вытягиваем нужную ссылку;

3) Подготавливаем все нужные UID-ы в СписокUIDов. Помещаем во временную таблицу справочник номенклатуры с отбором В(&СписокUIDов) ; И из неё, для каждого UID-да вытягиваем нужную ссылку;
______________________

Доп. вопрос, к вышесказанному. У номенклатуры есть реквизит, допустим Артикул, который я бы хотел видеть в ТаблицеЗначений на форме, которую я заполняю вышеуказанным запросом.

Как правильно:
1) Получать артикул при помощи запроса
или
2) На форме, просто вытянуть из ссылки номенклатуры Артикул в таблицу?
_______________________

Пожалуйста, дайте развернутый ответ с пояснением, и с пояснением по части SQL. Как выполнять, почему это правильно, и если не затруднит, при пояснении кратко объясните как такие запросы интерпритирует SQL.
_______________________

Спасибо.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. user1936660 07.03.25 19:32 Сейчас в теме
(1)
Пожалуйста, дайте развернутый ответ с пояснением
Предоставьте не менее трех уникальных вариантов.
2. user2107191 07.03.25 19:27 Сейчас в теме
Очень интересно. Столько букв UID в одном месте еще не видел, аж в глазах рябит.
4. miniogn 45 07.03.25 21:55 Сейчас в теме
Создать программно ТЗ, загрузить в неё "(UID-to1, UID-to2, UID-to3)" в три колонки (либо ТЗ с формы, если удобно и она уже содержит данные).
Составить запрос, в запросе создать временную таблицу из твоей новой ТЗ.
Затем сделать соединения временной таблицы, со справочником Номенклатура, три раза.
Выполнить запрос, по выборке заполнить ТЗ формы.

Артикул отдельно не обязательно получать, его можно и в предыдущем запросе получить.

Пояснять, даже не знаю, снизошло просто, даже сам не пойму, что написал, словно рукой кто-то водил.

как такие запросы интерпритирует SQL


С божьей помощью.
5. chakaka1 07.03.25 22:53 Сейчас в теме
(4)
, со справочником Номенклатура, три раза.


Дружище, вопрос не в том как сделать, а как правильно сделать с точки зрения SQL.

На данном этапе реализовал 3 вариантом, т.е. :

Загружаю полученные данные в виртуальную таблицу;

Из загруженных данных получаю отдельную виртуальную таблицу всех Различные UID-ов.

Получаю запросом справочник номенклатуры с отбором В(&СписокUIDов)

Далее соединяю по 4 раза с предыдущей полученной таблей номенклатуры.
____________

У меня вопрос, насколько это правильно, и вообще в целом как это правильно реализовавать.
6. user2107191 07.03.25 22:58 Сейчас в теме
(5)
а как правильно сделать с точки зрения SQL.
С точки зрения SQL - правильнее сделать на SQL, а не на 1С.
7. miniogn 45 07.03.25 23:10 Сейчас в теме
(5) Правильность же это вещь относительная, у каждого она своя, правильность. Кому-то скорость чтения подавай, кому-то записи, кому-то консистентность (почему-то подчеркивается, надеюсь правильно написал), кому-то безопасность. Кому-то правильность логики. И тд. И ведь всё это правильно.
Но думаю, для таблицы из 300 элементов вообще без разницы, как это реализовано.
8. user1936660 08.03.25 08:04 Сейчас в теме
(5)
Дружище
Эээ, брат, ты когда виртуальный и временный таблица путаешь, сходи на курс, не парь людям голова.
9. chakaka1 08.03.25 10:09 Сейчас в теме
(8) вот из-за таких как ты токсичных людей с синдромом завышеного чсв, 1с-ников ненавидят в целом, и этот форум в частности.
Нахрена отвечать язвительными ответами, начиная с первого же твоего ответа? Пройди мимо и все? В чем проблема?

И так, еще совеи, перед тем как давать твои "язвительно-умные" советы, пойди вздерьни на себя в зеркале, может чуть полегчает, хотя старт мани не получшь...
10. user2107191 08.03.25 10:18 Сейчас в теме
(9) Охтыжйопта, моральный камертон приперся!

То есть по сути (по содержанию) - ответить нечего?
11. user1936660 08.03.25 12:01 Сейчас в теме
(9)
1с-ников ненавидят в целом
А ты пришел на этот форум, чтобы стать 1Сником?
12. chakaka1 08.03.25 13:03 Сейчас в теме
(11) Давай так, по освновной специальности - я не программист 1С, я не из России, и не из русско-славянской страны. Русския язык не мой родной, и не второстепенно родной язык по одному родителю.

По специфике моей деятельности, мне приходиться работать как с 1С, так и с C#/Java/HTML+js+css (не программировать, а читать-понимать код, знать +- основы и принципы).

Соответсвенно, когда мне что-то интересно, я в первую очередь ищу ответы, не найдя их - задаю вопрос.
И это почти-что единственное комьюнити (имею ввиду комьюнити 1С), которое связано с разработкой, где язвительство и фразы "учи мат часть" и подобные в приоритете.

Вот условно, вместо того, что бы писать мне 3 иронично-язвительных ответа, мог бы дать адекватный ответ, не обязательно мне, раз знания в 1С это позволяют.

Рассмотрим текущий кейс, разработчик сделал следующим образом:

1) Для каждого UID-а делаем отдельную связь со справочником номенклатуры по
файлUID = Номенклатура.UIDВоВнешнейСистеме;
____

По моему мнению, он сделал не правильно, я переделал на

3) Подготавливаем все нужные UID-ы в СписокUIDов. Помещаем во временную таблицу справочник номенклатуры с отбором В(&СписокUIDов) ; И из неё, для каждого UID-да вытягиваем нужную ссылку;

Вопрос был в целом, как это правильно делать.

Да, и насчёт курсов, если предлогаете - то хоть ссылку дайте, т.к.7 лет назад когда пришлось изучать 1С - сдал спеца по платформе, но видите какие вопросы задаю ?
13. user2107191 08.03.25 13:16 Сейчас в теме
(12) Все он правильно сделал.
А ты - нет.
Он сразу организовал левое соединение по индексированному полю с готовой таблицей.

А ты зачем-то сначала сделал отбор по этой таблице, поместил результат-огрызок во временную дисковую таблицу, а потом опять организовал точно такое же соединение, только не с основной таблицей, а с твоим огрызком.

Подумай над тем, что будет, если в "список UID" приедет только 1 элемент? А если 100 тысяч?
14. chakaka1 08.03.25 14:11 Сейчас в теме
(13)
вую таблицу, а потом опять организовал точно такое же соединение, только не с основной таблицей, а с твоим огрызком.


Я опишу мою логику:

Изначально, я знаю что из внешней системы мне не придёт никогда список из более чем 30 разных UID-ов.
Так же, изначально я тоже знаю, что сам справочник Номенклатуры, с течением времени будет расти, и теоретически будет достигать 5-10-15-20к). Разработчик об этом тоже знал.

Было, сделано разработчиком:
Мы 4 раза получаем всю таблицу Номенклатуры, далее делаем связь "ПО", по реквизиту с типом "строка" с этими 4 целыми таблицами. Реквизит не индексирован.

(Как представляю я это себе: 1С выдёргивает 4 раза весь справочник номенклатуры в оперативную память, далее 4 раза, идёт поиск по всему справочнику по связи "ПО")


Что сделал я:
В справочнике Номенклатуры у реквизита typeTXT с типом "строка" установил признак "индексировать".
Запросом получаю только те ссылки, которые мне нужны делая запрос к БД всего 1 раз (как вы выразились результат-огрызок).
Получаю конечный результать, сравнивая ПО с одной временной таблицей 4 раза, которая состоит только из нужных мне записей.
_______

Я не совсем понимаю, почему я не делаю правильно, если есть возможность, поясните более подробно.
Насчёт 100 тысяч - в данной реальной ситуации такого быть не может, но если бы было так, я бы реализовал чтение по-порциям, фоновым заданием, что-то типа как "многопоточности"
Прикрепленные файлы:
15. miniogn 45 08.03.25 18:27 Сейчас в теме
(14) Не совсем понятно, к чему создана тема, если разбираешься, как надо делать, тем более известны детали влияющие на способ реализации ("Реквизит не индексирован"). Нам же это не известно. Да и предлагать улучшения довольно трудно исходя из сумбурного описания.
Конкретика вопроса не ясна, по этому и ответы соответствующие.

(Как представляю я это себе: 1С выдёргивает 4 раза весь справочник номенклатуры в оперативную память, далее 4 раза, идёт поиск по всему справочнику по связи "ПО")


Опять же тут напрашивается индексирование.
16. user1936660 08.03.25 19:39 Сейчас в теме
(14)
я тоже знаю, что сам справочник Номенклатуры, с течением времени будет расти, и теоретически будет достигать 5-10-15-20к
(1)
я не встречал в практитке количество записей в справочнике Номенклатура более 300
Ты б определился, не?

я бы реализовал чтение по-порциям, фоновым заданием
Ну вот куда вы все такие залихватски тупенькие лезете? И откуда, главное?

(12)
если предлогаете - то хоть ссылку дайте
О, вот это вот "дай", это точно по 1сному. Давай продолжим:
И это почти-что единственное комьюнити (имею ввиду комьюнити 1С), которое связано с разработкой
Ну ка, ну ка, дай ка ссылку на другие места где ты задавал этот свой вопрос.
17. user2107191 08.03.25 19:51 Сейчас в теме
(16)
Ну вот куда вы все такие залихватски тупенькие лезете? И откуда, главное?
Да пусть реализует, че ты за него переживаешь? Давай просто порадуемся - хоть кто-то постоит за честь мундира "программист 1С"... Мы еще благодарны ему будем!
18. пользователь 08.03.25 20:15
Сообщение было скрыто модератором.
...
19. пользователь 08.03.25 20:16
Сообщение было скрыто модератором.
...
21. пользователь 08.03.25 20:19
Сообщение было скрыто модератором.
...
20. пользователь 08.03.25 20:17
Сообщение было скрыто модератором.
...
22. пользователь 08.03.25 20:19
Сообщение было скрыто модератором.
...
23. пользователь 08.03.25 20:22
Сообщение было скрыто модератором.
...
24. пользователь 08.03.25 20:40
Сообщение было скрыто модератором.
...
25. пользователь 08.03.25 20:50
Сообщение было скрыто модератором.
...
26. пользователь 08.03.25 20:50
Сообщение было скрыто модератором.
...
27. пользователь 08.03.25 20:52
Сообщение было скрыто модератором.
...
28. user2107191 08.03.25 20:53 Сейчас в теме
(27)
Забавно.
отличает наречие от отрицания, да...
29. Said-We 08.03.25 23:57 Сейчас в теме
(24) Не стоит столько времени уделять троллям и ИИ.
Просто покажи, что в источнике, что в твоей базе и что на выходе хочешь увидеть.
Что нарисовал и что не получается.
30. пользователь 09.03.25 19:09
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот