|   |   | 
| 
 | Как убрать запрос из цикла | ☑ | ||
|---|---|---|---|---|
| 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) А не запутанее так еще выдет ?     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |