|
Как убрать запрос из цикла | ☑ | ||
---|---|---|---|---|
0
Mary01
29.05.15
✎
21:31
|
Как можно оптимизировать код?
Загружаю в 1С (1С БП 8) построчно данные из файла Эксель, в каждой строке есть контрагент, нужно синхронизировать контрагентов с имеющимися в базе - по наименованию, ИНН, КПП. Но т.к. поиск в справочнике по нескольким реквизитам невозможен, то делаю запросом. Проблема в том, что получается запрос в цикле, а это плохо. Может быть есть способ поиска по нескольким реквизитам, кроме запроса? Выполнять запрос вне цикла не получится, т.к. параметры для запроса получаю в цикле. Есть вариант - читать файл 2 раза, первый раз собрать из файла всех контрагентов, загнать в запрос и выгрузить полученные ссылки в таблицу, а при втором чтении файла искать в этой таблице. Но думаю тоже не очень вариант, как-то громоздко. |
|||
1
Маленький Вопросик
29.05.15
✎
21:34
|
прочитай файл в таблицузначений... и делай с ней что хочешь...
так "плохо" - это не работает или что??? |
|||
2
shuhard_серый
29.05.15
✎
21:34
|
(0)[Проблема в том, что получается запрос в цикле, а это плохо.]
вбили франчам этот бред в голову и верят |
|||
3
Рэйв
29.05.15
✎
21:35
|
>>получается запрос в цикле, а это плохо.
Сам так решил или как? |
|||
4
Рэйв
29.05.15
✎
21:35
|
(2)+1
|
|||
5
ДенисЧ
29.05.15
✎
21:36
|
Я думаю, самым лучшим вариантом решения будет или стена, или по собственному.
|
|||
6
Рэйв
29.05.15
✎
21:36
|
Правда НЕ ВСЕГДА обоснованно.
|
|||
7
Mary01
29.05.15
✎
21:36
|
(1) и будет эта огромная тблица в памяти находиться...
|
|||
8
Рэйв
29.05.15
✎
21:36
|
(5)Да на них стен не напасешься...
|
|||
9
ДенисЧ
29.05.15
✎
21:37
|
(8) Одной на всех хватит. И она уже есть. правда, далековато...
|
|||
10
Mary01
29.05.15
✎
21:37
|
(3) известный факт же, с самых азов 1С
|
|||
11
Рэйв
29.05.15
✎
21:38
|
(9)Да там митинг будет похлеще чем на как предателя немцова убили
|
|||
12
Mary01
29.05.15
✎
21:38
|
(1) работает.
плохо - это то, что это не оптимально |
|||
13
ДенисЧ
29.05.15
✎
21:39
|
(11) В очередь, ***** дети!!!
(10) А что, НайтиПоРеквизиту() в цикле намного халяльней? |
|||
14
ДенисЧ
29.05.15
✎
21:39
|
(12) Premature optimisation is a root of evil
|
|||
15
Mary01
29.05.15
✎
21:45
|
(13) не знаю намного ли. а если нет, то почему?
|
|||
16
Рэйв
29.05.15
✎
21:46
|
/root/think_u_have_it
|
|||
17
ДенисЧ
29.05.15
✎
21:47
|
(15) Я, наверное, буду неоригинален... Но НайтиПоРеквизиту() - это тоже запрос.
Так что рэбе в моём лице не одобряэ |
|||
18
Kvant1C
29.05.15
✎
21:51
|
(0) Это нужно загружать каждый день, по нескольку раз на дню?
Если да, то тогда можно подумать над оптимизацией, если это нужно загружать раз в месяц, то забить и не париться. |
|||
19
Mary01
29.05.15
✎
22:10
|
(18) максимум раз в день. не каждый день.
|
|||
20
Gangar
29.05.15
✎
22:12
|
(19) тогда юзай правило - работает, не трогай.
|
|||
21
Sj
29.05.15
✎
22:44
|
(1) +1
Грузи данные из аксель в тз. Дальше передавай все данные из тз в запрос. А потом просто соедини левым соединением курсор со справочником контрагентов по полям поиска. |
|||
22
1с80
29.05.15
✎
22:54
|
(0) Для разовых операций ничего страшного в том, что поиск контрагента будет в цикле. Не стоит заморачиваться.
Если бы это была операция типа проведения документа и в цикле по табличной части был бы запрос, то так действительно делать не стоит. |
|||
23
vde69
29.05.15
✎
23:07
|
||||
24
Casey1984
30.05.15
✎
00:04
|
Работает - не тронь!
|
|||
25
GreyK
30.05.15
✎
00:08
|
(0) Не парь мозг. Есть вариант ещё из клюшек. Создаёшь текстовую переменную со всеми полями поиска через разделитель, записываешь соответствия в список значений, ну или в соответствие для v8.
|
|||
26
Mary01
30.05.15
✎
19:12
|
(25) не понятно. и как потом дальше это соответствие использовать?
|
|||
27
2S
30.05.15
✎
19:13
|
(26) генеришь уникальное представление, дальше поиском
|
|||
28
2S
30.05.15
✎
19:23
|
Странно что еще фото не просили :)
|
|||
29
Mary01
30.05.15
✎
19:28
|
(27) есть НайтиПоКоду, НайтиПоНаименованию, НайтиПоРеквизиту,а как по этому уникальному представлению найти - я вот этого не понимаю
|
|||
30
Mary01
30.05.15
✎
19:29
|
(28) просили )
|
|||
31
ДенисЧ
30.05.15
✎
19:30
|
(30) B&
|
|||
32
Mary01
30.05.15
✎
19:53
|
(31) что это?
|
|||
33
RomanYS
30.05.15
✎
20:01
|
кэш = Новый Соответствие;
цикл по контрагентам .. кэш.Вставить(Выб.инн + Выб.КПП, Выб.Ссылка); .. цикл по файлу ... Контрагент = кэш.Получить(ИНН+КПП); ... |
|||
34
Mary01
30.05.15
✎
20:24
|
(33) цикл по контрагентам - имеется в виду, что весь справочник контрагентов нужно перебрать?
|
|||
35
ДенисЧ
30.05.15
✎
20:27
|
(32) Это два символа из кодовой таблицы ASCII. Ваш Кэп
|
|||
36
ILM
гуру
30.05.15
✎
20:33
|
(0) [Но т.к. поиск в справочнике по нескольким реквизитам невозможен] А почему нельзя в справочнике по нескольким полям искать?
|
|||
37
Mary01
30.05.15
✎
20:38
|
(36) может быть и можно, но я не знаю как иначе как запросом.
|
|||
38
ДенисЧ
30.05.15
✎
20:39
|
(37) А что, за запрос ныне расстреливают?
Мы уже обсудили этот вопрос. Так что пора переходить к настоящим. Фотка гидЭ? |
|||
39
Mary01
30.05.15
✎
21:25
|
и еще дополнение.
помимо того, что контрагентов надо найти, недостающих контрагентов нужно еще и создать! |
|||
40
ДенисЧ
30.05.15
✎
21:40
|
(39) Тебе нужно благословление на создание?
|
|||
41
Kvant1C
30.05.15
✎
21:41
|
>>контрагентов нужно еще и создать
Что-то мешает? |
|||
42
Ainura80
30.05.15
✎
21:53
|
(0) Попробуйте второй вариант, и вообще почему не научить пользователей работать с типовой обработкой
ЗагрузкаДанныхИзТабличногоДокумента |
|||
43
ДенисЧ
30.05.15
✎
22:02
|
(42) Какие мерзости Вы советуете...
|
|||
44
Ainura80
30.05.15
✎
22:04
|
(42) Ой не говорите))просто ужас)
|
|||
45
ДенисЧ
30.05.15
✎
22:05
|
(44) Не просто ужас, а "ужас, ужас, ужас!!!"
|
|||
46
Mary01
30.05.15
✎
22:07
|
(40) (41) уже ничего не мешает, я придумала как сделать.
буду делать как в (33). и если контрагента не нашла в кэше, то создам и просто добавлю его в кэш! вопрос только в том, что, неужели засунуть таблицу из ВСЕХ контрагентов в память это оптимальнее, чем выполнять маленький запросик в цикле? |
|||
47
Mary01
30.05.15
✎
22:07
|
(43) что тут плохого?
|
|||
48
Ainura80
30.05.15
✎
22:08
|
(45) Сорь, не прочитала , нормально ее сути вопроса.. а так таблица значений ей в помочь. А на счет обработки я видела как опытные пользователи ею работали) Странно и хвалили)
|
|||
49
1с80
30.05.15
✎
22:15
|
(46) Что значит оптимальнее? Вы по каким критериям хотите оптимизировать? По размеру используемой памяти, по скорости работы, по трудозатратам на реализацию? Еще по каким то другим?
|
|||
50
Mary01
30.05.15
✎
22:18
|
(49) по скорости хочу оптимизировать
|
|||
51
Сияющий в темноте
31.05.15
✎
08:32
|
Оптимальнее - контрагентов из Эксель в одну таблицу,а контрагентов из 1с в другую и уже с помощью нетрадиционных методов сравнения строк разбирать весь этот навоз
|
|||
52
Ainura80
31.05.15
✎
09:29
|
(51) А не запутанее так еще выдет ?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |