Имя: Пароль:
1C
1С v8
Запросы в небольшом цикле или загрузка в ТЗ до цикла двух БОЛЬШИХ справочников?
0 ADV
 
11.06.24
13:20
Здравствуйте! Читаю из файла заказ клиента, в нем коды товаров и ГУИДы серий (и все остальное).
Что лучше: использовать для идентификации товаров и серий запросы к СУБД в цикле чтения файла (итераций вероятно будет немного) или до цикла два БОЛЬШИХ справочника (номенклатура и серии) загрузить из СУБД в ТЗ и в цикле искать номенклатуру и серию в этих ТЗ?
1 Злопчинский
 
11.06.24
13:24
лично я выбрал бы второй вариант. сначала прочитать внешние данные, потом долбиться запросами.
.
большие - это 10-100 миллионов записей?
2 Галахад
 
гуру
11.06.24
13:28
Если серии идентифицируются по ГУИД, зачем с ними делать что-то лишнее?
3 ADV
 
11.06.24
13:32
"большие - это 10-100 миллионов записей?" - очень примерно могу предположить, то серий в перспективе может быть до 1 млн , товаров тысяч 100.
4 Ногаминебить
 
11.06.24
13:36
Писать как самому удобно и понятно, не забивать голову всякой фигней. Не небольших объемах скорее всего по скорости и не отличить. :)
Если конечно это реальная задача под себя, а не тестовое задание или тиражное решение.
ЗЫ:
Но вообще третий вариант. Считать файл в ТЗ, потом запросом сцепить его с СУБД через временную таблицу. :)
5 ADV
 
11.06.24
13:37
"Если серии идентифицируются по ГУИД, зачем с ними делать что-то лишнее?" - что именно "лишнее"? Насколько я понимаю конструкция
Пока ЧтениеJSON.Прочитать() Цикл  
   Если ИмяТекущегоСвойства = "partNumber" Тогда
       л_Серия = Справочники.СерииНоменклатуры.ПолучитьСсылку(Новый УникальныйИдентификатор(ЧтениеJSON.ТекущееЗначение));
   КонецЕсли;
КонецЦикла;
это запрос к СУДБ в цикле?
6 Климов Сергей
 
11.06.24
13:38
(4) +1 за третий вариант
7 Garykom
 
гуру
11.06.24
13:38
(0) Лучше всего файл заказа прочитать в ТЗ
ТЗ разделить на разумные куски (отдельные ТЗ до 1000 строк)
Эти отдельные ТЗ в отдельные фоновые задания

В каждом фоновом
Передавать ТЗ в запрос как параметр, поместить в ВТ
ВТ дозаполнять пакетными запросами ("для идентификации товаров и серий запросы к СУБД")
Учесть чтобы не появилось дублей! Особенность ЛЕВОЕ СОЕДИНЕНИЕ, надо хитрости с группировкой/итогами
8 ADV
 
11.06.24
13:40
"третий вариант" - спасибо за подсказку!
9 Garykom
 
гуру
11.06.24
13:40
(4) +1 это самый быстродействующий, но самый сложный в безошибочной реализации вариант
10 Garykom
 
гуру
11.06.24
13:42
(8) Имхо напиши сначала тупой запросы в цикле
Отдай клиенту/заказчику - если не устоит, тогда будешь переписывать
Переписать легче будет у тебя уже есть загрузка и куски кода/запросов
11 H A D G E H O G s
 
11.06.24
14:31
(5) Это не запрос в цикле, оставьте так, это нормально.
12 unbred
 
11.06.24
14:38
(11) а что это?) (не смотрел профайлер, но примерно представляю))
13 Garykom
 
гуру
11.06.24
14:37
(11) В (5) сильно редкий случай с УИДами
Обычно подбирать приходится по артикулам, кодам и прочим сериям
14 unbred
 
11.06.24
14:49
(11) (13) понял, принял. проверять не буду.(лениво)
15 Конструктор1С
 
13.06.24
10:33
Ох уж эти заоптимизаторы. В борьбе с надуманными проблемами с производительностью готовы изговнять весь код и прострелить себе колено
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший