Имя: Пароль:
1C
1С v8
Обмен по OLE 7.7 -> 8.2 Ускорение.
0 ProProg
 
20.09.12
11:48
Какие есть варианты чтобы загрузить 300 000 номенклатуры быстро.


ТекстЗапроса = "
   |Обрабатывать НеПомеченныеНаУдаление;
   |ЭлементСсылка        = Справочник.Номенклатура.ТекущийЭлемент;
   |Поле_Наименование  = Справочник.Номенклатура.Наименование;
   |Поле_Код           = Справочник.Номенклатура.Код;
   |Поле_Артикул       = Справочник.Номенклатура.Артикул;";
   Если ПереноситьИерархию Тогда
       ТекстЗапроса = ТекстЗапроса + "
       |Поле_Родитель5     = Справочник.Номенклатура.Родитель.Наименование;
       |Поле_Родитель4     = Справочник.Номенклатура.Родитель.Родитель.Наименование;
       |Поле_Родитель3     = Справочник.Номенклатура.Родитель.Родитель.Родитель.Наименование;
       |Поле_Родитель2     = Справочник.Номенклатура.Родитель.Родитель.Родитель.Родитель.Наименование;
       |Поле_Родитель1     = Справочник.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Наименование;";
   КонецЕсли;
   Если ЕстьРеквизитПроизводитель Тогда
       ТекстЗапроса = ТекстЗапроса + "
       |Поле_Производитель = Справочник.Номенклатура.Производитель.Наименование;";
   КонецЕсли;
   ТекстЗапроса = ТекстЗапроса + "
   |Группировка ЭлементСсылка БЕЗ ГРУПП;
   |";          
   
   //Запрос = БазаОле.EvalExpr("СоздатьОбъект(""Запрос"")");
   Запрос = БазаОле.CreateObject("Запрос");
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Сообщить("Запрос не выполнен!");
       Возврат;
   КонецЕсли;
   
   ТаблицаЗапроса = БазаОле.CreateObject("ТаблицаЗначений");
   Запрос.Выгрузить(ТаблицаЗапроса,1,0);    
   
   ТаблицаЗапроса.ВыбратьСтроки();
   Пока ТаблицаЗапроса.ПолучитьСтроку() = 1 Цикл        
       ОбработкаПрерыванияПользователя();
       
       НоваяСтрока = Объект.ТабличнаяЧасть.Добавить();
       НоваяСтрока.Поле_Код          = ТаблицаЗапроса.Поле_Код;
       НоваяСтрока.Поле_Артикул      = ТаблицаЗапроса.Поле_Артикул;
       НоваяСтрока.Поле_Наименование = ТаблицаЗапроса.Поле_Наименование;
       НоваяСтрока.Поле_Производитель = ТаблицаЗапроса.Поле_Производитель;
       
       Если ПереноситьИерархию Тогда
           НоваяСтрока.Поле_Родитель1 = ТаблицаЗапроса.Поле_Родитель1;
           НоваяСтрока.Поле_Родитель2 = ТаблицаЗапроса.Поле_Родитель2;
           НоваяСтрока.Поле_Родитель3 = ТаблицаЗапроса.Поле_Родитель3;
           НоваяСтрока.Поле_Родитель4 = ТаблицаЗапроса.Поле_Родитель4;
           НоваяСтрока.Поле_Родитель5 = ТаблицаЗапроса.Поле_Родитель5;
       КонецЕсли;
   КонецЦикла;
1 ProProg
 
20.09.12
11:49
Короче говоря запих в таблицу восьмерки занимает писец времени.
2 ProProg
 
20.09.12
11:59
Понятно. Вариантов нет.
3 zladenuw
 
20.09.12
12:01
почему
4 zladenuw
 
20.09.12
12:01
прямые запросы
5 zladenuw
 
20.09.12
12:02
готовишь тз и потом с не работа в 8
6 ProProg
 
20.09.12
12:04
(5) так не в запросе дело. запрос нормально итак идет.
90 процентов занимает выборка и заполнение ТЗ в восьмерке.
7 ProProg
 
20.09.12
12:04
ТаблицаЗапроса.ВыбратьСтроки();
   Пока ТаблицаЗапроса.ПолучитьСтроку() = 1 Цикл        
       ОбработкаПрерыванияПользователя();
       
       НоваяСтрока = Объект.ТабличнаяЧасть.Добавить();
       НоваяСтрока.Поле_Код          = ТаблицаЗапроса.Поле_Код;
       НоваяСтрока.Поле_Артикул      = ТаблицаЗапроса.Поле_Артикул;
       НоваяСтрока.Поле_Наименование = ТаблицаЗапроса.Поле_Наименование;
       НоваяСтрока.Поле_Производитель = ТаблицаЗапроса.Поле_Производитель;
       
       Если ПереноситьИерархию Тогда
           НоваяСтрока.Поле_Родитель1 = ТаблицаЗапроса.Поле_Родитель1;
           НоваяСтрока.Поле_Родитель2 = ТаблицаЗапроса.Поле_Родитель2;
           НоваяСтрока.Поле_Родитель3 = ТаблицаЗапроса.Поле_Родитель3;
           НоваяСтрока.Поле_Родитель4 = ТаблицаЗапроса.Поле_Родитель4;
           НоваяСтрока.Поле_Родитель5 = ТаблицаЗапроса.Поле_Родитель5;
       КонецЕсли;
   КонецЦикла;
8 ProProg
 
20.09.12
12:05
Таблица - объект ОЛЕ.
Получение полей этой таблицы (все строковые) и заполнение тз в восьмерке 90 процентов. не пойму почему.
9 ProProg
 
20.09.12
12:08
Может я неправильно запрос написал. не надо вытягивать наименования, а ссылки.
а в переборе получение наименований?
10 ProProg
 
20.09.12
12:09
а то получается в тз запроса все колонки строковые - что раздувает ТЗ.
а потом и тормоз по ним.
Хотя я пробовал прямым перебором. Тоже не айс.

СправV7 = БазаОле.CreateObject("Справочник.Номенклатура");

   СправV7.ВыбратьЭлементы();    
   Пока СправV7.ПолучитьЭлемент() = 1 Цикл
       Если СправV7.ПометкаУдаления() = 1 Тогда
           Продолжить;
       КонецЕсли;
       
       ОбработкаПрерыванияПользователя();
       
       НоваяСтрока = Объект.ТабличнаяЧасть.Добавить();
       НоваяСтрока.Поле_Код          = СправV7.Код;
       НоваяСтрока.Поле_Артикул      = СправV7.Артикул;
       НоваяСтрока.Поле_Наименование = СправV7.Наименование;
       
       Если ЕстьРеквизитПроизводитель Тогда
           НоваяСтрока.Поле_Производитель = СправV7.Производитель.Наименование;
       КонецЕсли;    
       
   КонецЦикла;
11 zladenuw
 
20.09.12
12:10
сейчас сколько по времени загрузка идет ?
12 ProProg
 
20.09.12
12:11
полчаса.
13 VladZ
 
20.09.12
12:12
|Поле_Родитель5     = Справочник.Номенклатура.Родитель.Наименование;
       |Поле_Родитель4     = Справочник.Номенклатура.Родитель.Родитель.Наименование;
       |Поле_Родитель3     = Справочник.Номенклатура.Родитель.Родитель.Родитель.Наименование;
       |Поле_Родитель2     = Справочник.Номенклатура.Родитель.Родитель.Родитель.Родитель.Наименование;
       |Поле_Родитель1     = Справочник.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Наименование;";

- Красава!!!
14 ProProg
 
20.09.12
12:12
не создание. заполнение данных.
Я не делал создание номенклатуры в момент считывания.
Сначала заполняю в восьмерке данные. потом по ним создавать буду.

Еслди например (10) без производителя - то 5 минут заполнение.
15 ProProg
 
20.09.12
12:12
(13) сейчас я без иерархии считываю.
16 ProProg
 
20.09.12
12:13
поэтому условие и поставил по галке. без иерархии 30 минут, с ней еще на столько же прибавляется.
17 VladZ
 
20.09.12
12:13
Это случайно не та обработка, которую ты "быстренько накатал, чтобы универсально сливать инфу с семерки"?
18 ProProg
 
20.09.12
12:13
Короче говоря каждая из этих строк в отладчике занимает 15 процентов
НоваяСтрока.Поле_Код          = ТаблицаЗапроса.Поле_Код;
       НоваяСтрока.Поле_Артикул      = ТаблицаЗапроса.Поле_Артикул;
       НоваяСтрока.Поле_Наименование = ТаблицаЗапроса.Поле_Наименование;
       НоваяСтрока.Поле_Производитель = ТаблицаЗапроса.Поле_Производитель;
19 ptiz
 
20.09.12
12:14
Время занимает не "запих в 8ку", а получение данных из ОЛЕ-объекта 7.7
20 VladZ
 
20.09.12
12:14
Обрати уже свой взор на базы данных. На MS SQL, к примеру...
21 ProProg
 
20.09.12
12:14
(17) она) теперь страдаю над оптимизацией. покоя не дает что час надо ждать. хоть даже разовая)
Принципиально хочется ускорить.
22 ProProg
 
20.09.12
12:15
(19) ок. пусть так. Вопрос почему из (18) получение каждой строки - 15 процентов выполнения всей обработки.
23 DrShad
 
20.09.12
12:16
24 VladZ
 
20.09.12
12:16
(21) Чуял я, что фигню накатаешь... Так и вышло... Удачи в оптимизации! :)
25 ptiz
 
20.09.12
12:17
(22) Потому что ОЛЕ.
Сделай не
НоваяСтрока.Поле_Артикул      = ТаблицаЗапроса.Поле_Артикул;
а просто переменную
Поле_Артикул      = ТаблицаЗапроса.Поле_Артикул;
и замерь, результат будет такой же
26 zladenuw
 
20.09.12
12:17
(22) так она ОЛе. по этому так долго
27 zladenuw
 
20.09.12
12:18
а если прямым запросом и потом всю эту таблицу в дбф и прочитать. так быстрее будет ? вопрос не к ТС
28 ProProg
 
20.09.12
12:18
Думаю может в текст по оле загнать. в восьмерке получить этот текстовый файл. и все дела.
29 VladZ
 
20.09.12
12:19
Давай так: скинь мне на мыло концепт твоей чудо-проги. Т.е. что она должна делать, какие требования. А я тебе скину, как я это вижу.
30 zladenuw
 
20.09.12
12:19
(29) за бесплатно ? :)
31 Птах
 
20.09.12
12:19
(13) Ахахахах xD
32 ProProg
 
20.09.12
12:19
(27) а есть у восьмерки возможность сделать прямой запрос в семерке без компонент?
33 ProProg
 
20.09.12
12:20
(29) эту обработку загрузки? да нефиг делать
34 ProProg
 
20.09.12
12:21
Вот кстати выборка таблицы ОЛЕ - закомментировал заполнение. вообще мгновенно. 300 000 строк за пару минут обошла.

ТаблицаЗапроса.ВыбратьСтроки();
   Пока ТаблицаЗапроса.ПолучитьСтроку() = 1 Цикл        
       ОбработкаПрерыванияПользователя();
       
       НоваяСтрока = Объект.ТабличнаяЧасть.Добавить();
       //НоваяСтрока.Поле_Код          = ТаблицаЗапроса.Поле_Код;
       //НоваяСтрока.Поле_Артикул      = ТаблицаЗапроса.Поле_Артикул;
       //НоваяСтрока.Поле_Наименование = ТаблицаЗапроса.Поле_Наименование;
       //НоваяСтрока.Поле_Производитель = ТаблицаЗапроса.Поле_Производитель;
       //
       //Если ПереноситьИерархию Тогда
       //    НоваяСтрока.Поле_Родитель1 = ТаблицаЗапроса.Поле_Родитель1;
       //    НоваяСтрока.Поле_Родитель2 = ТаблицаЗапроса.Поле_Родитель2;
       //    НоваяСтрока.Поле_Родитель3 = ТаблицаЗапроса.Поле_Родитель3;
       //    НоваяСтрока.Поле_Родитель4 = ТаблицаЗапроса.Поле_Родитель4;
       //    НоваяСтрока.Поле_Родитель5 = ТаблицаЗапроса.Поле_Родитель5;
       //КонецЕсли;
   КонецЦикла;
35 VladZ
 
20.09.12
12:23
(33) Не... Обработка мне не нужна. Я тебе таких за день штук 10 наклепаю...
Ты мне расскажи вот что: что за конфа, в которую ты загружаешь данные. Для чего она нужна?
36 ProProg
 
20.09.12
12:25
(35) причем тут конфа. тема ее не касается.
37 VladZ
 
20.09.12
12:25
(36) Смотри на проблему шире.
38 VladZ
 
20.09.12
12:28
(30) Некоторые советы и бесплатно могу дать.
Если человек дорос до определенного уровня - сделает сам.
А если не дорос - тут и бесплатный совет не поможет.
39 ProProg
 
20.09.12
12:34
У меня на сайте все есть. смысл тут обсуждать?
40 Eugene555
 
20.09.12
12:36
(0) Ты сделал из 7-ки заполнение данных в 8-ки, а попробуй из 8-ки по ОЛЕ получить данные из 7-ки и заполнять ТЧ
41 ProProg
 
20.09.12
12:36
(40) вообще то из восьмерки...
42 ProProg
 
20.09.12
12:37
проблема в получении значений таблицы....
43 VladZ
 
20.09.12
12:40
Это для анализа прайс-листов?
44 ProProg
 
20.09.12
12:40
45 ProProg
 
20.09.12
12:41
Это я отладчик прервал на 200 000.
46 Eugene555
 
20.09.12
12:47
(41) Точняк.
Попробуй перед выгрузкой в оле пустых производителей заполнить ""
47 ProProg
 
20.09.12
12:49
(46) пустых нету. все заполнено. их всего 1500 штук. я их отдельно еще в таблицу загружаю. чтобы потом по всей номенклатуре не собирать.
48 ProProg
 
20.09.12
12:50
вернее отдельно их гружу чтобы сразу создать перед номенклатурой. иначе будет писец при создании 300 000 еще их искать.
49 ProProg
 
20.09.12
12:50
ладно короче говоря наверное забить и как есть. разовый перенос.
50 zladenuw
 
20.09.12
12:57
а если в запросе добавить в одну переменную с разделителями
 |ЭлементСсылка        = Справочник.Номенклатура.ТекущийЭлемент;
   |Поле_Наименование  = Справочник.Номенклатура.Наименование;
   |Поле_Код           = Справочник.Номенклатура.Код;
   |Поле_Артикул       = Справочник.Номенклатура.Артикул;";
а уже при добавление в тз форматировать. быстрее будет ?
51 ProProg
 
20.09.12
13:05
Сейас попробую получение через EvalExpr
52 ProProg
 
20.09.12
13:19
Кстати а что если заюзать внешние источники данных. Кто нить пробовал?
53 ProProg
 
20.09.12
13:20
там только скл....
54 zladenuw
 
20.09.12
13:24
нет дбф можно
55 Fynjy
 
20.09.12
13:26
Мань сколько платишь? Загружу 300 000 за менее минуты ...
56 DrShad
 
20.09.12
13:26
любой DNS можно
57 zladenuw
 
20.09.12
13:30
(55) а куда копать хоть. вернее что использовать. намек.
58 Широкий
 
20.09.12
13:30
59 Fynjy
 
20.09.12
13:31
(57) В ДНК
60 zladenuw
 
20.09.12
13:32
(60) ха ха.
я просил как. а не где ошибка
61 unknown181538
 
20.09.12
13:34
ОЛЕ-тормоз. Тупой ДБФ куда производительнее.
62 Fynjy
 
20.09.12
13:41
(60) Копать? У товарища только поле в новой строке 94 сек заполняется = 100% ДНК. С учетом супер оптимизации 10 000 элементов стандартными средствами будет писаться в 1с в районе минуты в файловую базу - намек понят?
63 zladenuw
 
20.09.12
13:45
(50) а если объединить все в одну строку. но я так понимаю есть оптимальней выход. то есть тут уже нужно обходится механизмами не 1с.
я вот думаю что надо прямой запрос с получением всего что нам надо и записью в дбф,хмл,тхт а потом загрузка. так быстрее ?
64 zladenuw
 
20.09.12
13:46
у меня интерес к тебе к быстро загрузить н+00000 элементов.
65 ProProg
 
20.09.12
13:49
(62) ну и ?
66 Serginio1
 
20.09.12
13:49
(0) Не читал полностью, но ты лучше из семерки подключайся к 8 через COMConnector и поймешь разницу между внутренним и внешним сервером автоматизации
67 ProProg
 
20.09.12
13:50
(62) 200000 / 94 = 2170 в секунду.
68 zladenuw
 
20.09.12
13:51
(67) 1 поля. у тебя 4
69 ProProg
 
20.09.12
13:56
(68) я и спрашиваю что дальше?
Если бы речь шла о километре кода. и разюираться надо было что оптимизировать то что можно оптимизировать в

ТаблицаЗапроса.Поле_Код;

????
70 zladenuw
 
20.09.12
13:58
в запросе получи строку с видом |Поле =  Справочник.Номенклатура.Наименование"+;+"+Справочник.Номенклатура.Код;Справочник.Номенклатура.Артикул;";

ты получишь 1 вызов к объекту оле. и это будет быстрее в 4 раза. или я не прав ?
71 zladenuw
 
20.09.12
14:00
давай ссылку на базу и за сколько нужно сделать обмен. только в разумных рамках.
мой ценник тот же
72 ProProg
 
20.09.12
14:09
(70) без запроса выборка получает сразу 1 объект. Я жу еписал.
И заполнение происходит за 5 минут.
Как только добавляется реквизит Производитель и получение наименования. выборка превращается в теже 30 минут.
73 zladenuw
 
20.09.12
14:12
а в коме не пробовал создать прямой запрос ? именно в базе оле. я то не. но так можно быстрее получить запрос.
74 ProProg
 
20.09.12
14:14
(73) нет. я же опять таки писал вверху почему.
запрос не тормозит. выполняется за минуту. выгружает все в ТЗ.
75 ProProg
 
20.09.12
14:15
короче говоря я пришел к выводу что проблемы видимо и нет. На таком объеме скорее всего это и есть реальный объем времени.
76 zladenuw
 
20.09.12
14:15
ну ты скрин приводишь. где каждый вызов кома занимает 94 секунды. ты тупишь или тупой
77 ProProg
 
20.09.12
14:16
на КД 300 000 вообще бы не выгрузилось. Часа бы три думало потом бы оборвало с недостатком памяти. И файл был бы в гиг обмена.
78 zladenuw
 
20.09.12
14:16
(75) нет. чтение таблиц прямым запрос мение 1 секунды запись в тз до 5 секунд. при этом что спр 100к
79 zladenuw
 
20.09.12
14:16
так что ты тупишь
80 ProProg
 
20.09.12
14:16
(76) ты чо дурак? посмотри количество вызовов. 174 000 раз.
81 Serginio1
 
20.09.12
14:18
(0) А в чем проблема использовать 8 ку в качестве сервера?
82 ProProg
 
20.09.12
14:18
короче я устал. уже начались придумки...уже никто ничего не читает.
83 zladenuw
 
20.09.12
14:20
(77) а сделать выборку по группам или выгрузку до н элементов. так что не беги перед паровозом. что тогда гнал бучу. за обработку. обещал денег, а потом. я монстр, я сам сделал. а в итоге болт. а люди тут обидчивые. так что критику воспринимай подобающе. а то будещ вопиять, не кто, не поможет
84 ЧеловекДуши
 
20.09.12
14:21
Быстро, через файл :)
85 ProProg
 
20.09.12
14:21
Один хрен потом создавать номенклатуру будет 300 тысяч) два часа) так что 30 минут заполнения как то уже и не очень много кажется. Вот час уже создание делается.
86 zladenuw
 
20.09.12
14:22
если человеку надо ком. не знаю что он там делает. но у меня документ с 8 в 7 создает за 1 сек. с притом что проверка или это новый или изменений. не хочу гадить тс
87 zladenuw
 
20.09.12
14:23
(86) с учетом всех полей документа.
88 ProProg
 
20.09.12
14:24
(83) вопрос стоял в плане оптимизации. принципиальный. хотелось ускорить до 5-10 минут.
Против 30.
КД как я писал уме5рло бы на таких объемах сразу. Больше 50 тыщ объектов любой обмен КД умирает.
89 ProProg
 
20.09.12
14:25
(86) да если гооврить о 50 объектах то чо тут говорить))
90 ProProg
 
20.09.12
14:25
в секунду загрузка обрабатывает 600 объектов в среднем.
91 ProProg
 
20.09.12
14:26
КД вообще 100 объектов пару секнуд будет думать. никогда не замечали?))
92 zladenuw
 
20.09.12
14:27
совет. в обработке в 8. запускаем 1с7 с обработкой с прямым запрос и выгрузкой дбф,хмл,тхт. а потом делай. что тебе надо в 8.


вот ты снова критикуешь то что ты не используешь. да проще использовать кд при спр в 100к если документ 300к. так что молчи. и думай о своем.
93 ProProg
 
20.09.12
14:27
Все готово. загрузил и создал всю номенклатуру. 1-20 часа общий итог. 30 минут получение и заполнение в восьмерке таблицы, 50 минут создание номенклатуры.
94 ProProg
 
20.09.12
14:28
ща буду пробовать прайсы по 80 тыщ загружать)
95 zladenuw
 
20.09.12
14:28
точно добавлю веб кошелек и за услугу буду просить 1$. вернее за будущие спасибо :). і
96 ProProg
 
20.09.12
14:29
(92) я уже пять раз написал. обработка пишется для десятков клиентов. я не буду всем им бегать компоненты включать.
и не в запросе дело! уже десятый раз пишу.
97 zladenuw
 
20.09.12
14:30
ну ты осел. в обработке пропиши. регистрацию и копированию.  леньтяй!
98 zladenuw
 
20.09.12
14:30
и ты все равно не Слышишь. что я пишу. У ТЕБЯ В ИТОГЕ ДБФ ТАБЛИЦА С ТЕМ ЧТО ТЕБЕ НАДО
99 zladenuw
 
20.09.12
14:31
все равно что твоя ТЗ.... а .... пойду пиво попью.а то ты злой
100 Serginio1
 
20.09.12
14:31
(88) Ну если напрямую писать через SQL то количество времени уверяю тебя будут просто смешными. у меня миллионные прайсы грузятся ежедневно десятками грузятся
101 zladenuw
 
20.09.12
14:32
(100) не. тут походу дбф. так что МАги ваши советы ?
102 zladenuw
 
20.09.12
14:32
(100) тут бдф. вопрос к МАСТЕРАМ, как быстрее ?
103 zladenuw
 
20.09.12
14:33
сори. или инет или сервер :(.
104 ProProg
 
20.09.12
14:35
(100) у если у клиентов ни у кого нет скл?))) Может хватит варианты предлагать со скл и прямыми запросами.
База семерка файловая. Запрос делается и выгружается в ТЗ 2 минуты. не вижу СМЫСЛА делать прямой запрос по справочнику.
105 zladenuw
 
20.09.12
14:36
(104) у тебя получение тупит в 94 .....
106 zladenuw
 
20.09.12
14:36
я тебе про создание дбф и его чтение
а ты мне опять про сопли, я про матрешки. ну епт
107 ProProg
 
20.09.12
14:37
(98) я знаю. временная. в кеше. Однако и выборка ее занимает фигню делов)

Пистец товарищи. Уже всю тему обсуждаем что тормроз это получение значний из таблицы. Я делал тест на выборке без получения значений.
А вы по прежнему пытаетесь сказать что впроблема в прямых запросах. .....
108 Serginio1
 
20.09.12
14:39
(107) У тебя проблема вызова метода или свойства через маршалинг внешнего сервера. А вот ты других слушать не хочешь. Это твои проблемы.
109 VladZ
 
20.09.12
14:39
(107) "это получение значний из таблицы". Ты хотел сказать "заполнение табличной части"?
110 ProProg
 
20.09.12
14:40
(108) какого метода? где ты метод увидел?
111 ProProg
 
20.09.12
14:40
НоваяСтрока.Поле_Код          = ТаблицаЗапроса.Поле_Код;
       НоваяСтрока.Поле_Артикул      = ТаблицаЗапроса.Поле_Артикул;
       НоваяСтрока.Поле_Наименование = ТаблицаЗапроса.Поле_Наименование;
       НоваяСтрока.Поле_Производитель = ТаблицаЗапроса.Поле_Производитель;

о каких методах идет речь?
112 Fynjy
 
20.09.12
14:41
(100) Ну вот зачем? Если Маня узнает что такое инсерт и апдейт он же по пол ляма будет в месяц заколачивать ...
113 Vakhrin
 
20.09.12
14:42
Вариант без прямой записи в восьмерку:
1. На таблицы семерки навешиваем вьюшки с нормальными именами полей (не обязательно, в противном случае просто разбираем структуру самостоятельно по файлу)
2. В восьмерке рисуем коннект к внешним данным
3. Грузим по запросу к 2
114 ProProg
 
20.09.12
14:42
кто нить из вас с ПОЛНОЙ уверенностью может сказать что файл ДБФ с 300 000 строк будет считываться пару минут.
115 zladenuw
 
20.09.12
14:43
(111) сделай не 4 вызова ТаблицаЗапроса, а 1 и получи 4 параметра. это уже быстрее
116 ProProg
 
20.09.12
14:43
(112) про какой апдейт идет речь. если идет примиивное получение запроса, выгрузка в примитивную таблицы с примитивными же данными.
117 Serginio1
 
20.09.12
14:43
Книга знаний: v8: Охота на Com-ов
(110) Ну если бы ты был в теме, то свойства и методы в COM вызваются через два метода DispGetIDsOfNames и Invoke
118 VladZ
 
20.09.12
14:43
(114) Просто считыватья или при этом еще и в базу будет писаться инфа?
119 ProProg
 
20.09.12
14:44
(115) каким это образом возможно?
120 Serginio1
 
20.09.12
14:44
Через два метода интерфейса IDispatch GetIDsOfNames и Invoke
121 ProProg
 
20.09.12
14:46
(118) просто считывание.
122 Serginio1
 
20.09.12
14:46
(114) Считываться значительно быстрее.
123 zladenuw
 
20.09.12
14:46
(119) а что в запросе нельзя получить любое поле ? ужас
124 ProProg
 
20.09.12
14:46
то что будет потом уже ОЛЕ не касается.
Идет заполнение данных в ИЗ восьмерки. а сохздание уже никаким боком к оле не относится.
125 ProProg
 
20.09.12
14:47
тьфу. блин.
126 ProProg
 
20.09.12
14:47
(123) какой запрос? епать. таблица значений. ты говоришь сделай вызов один раз. бред какой то.
127 Злопчинский
 
20.09.12
14:49
(100) на каждый прайс своя загрузка или мегауниверсальная мегаобработка для всех прайсов?
128 Serginio1
 
20.09.12
14:50
(127) По параметрам прайсов генерится свой запрос
129 zladenuw
 
20.09.12
14:50
вот ты тут что получаешь и откуда..
НоваяСтрока.Поле_Код          = ТаблицаЗапроса.Поле_Код;
       НоваяСтрока.Поле_Артикул      = ТаблицаЗапроса.Поле_Артикул;
       НоваяСтрока.Поле_Наименование = ТаблицаЗапроса.Поле_Наименование;
       НоваяСтрока.Поле_Производитель = ТаблицаЗапроса.Поле_Производитель;
а теперь подумай о 50 постах.
130 ProProg
 
20.09.12
14:50
(127) универсальная. настраиваемая.
131 zladenuw
 
20.09.12
14:51
(129) и у тебя пример замера в 44. так что. а не буду грубым. промолчку
132 Злопчинский
 
20.09.12
14:51
(114) Женя, я блин удивлен...
прайс 15000 строк читается из ДБФа нескольо секунд.. 300 тыс будет чуть поболее...
133 ProProg
 
20.09.12
14:51
(129) из таблицы (которая является объектом ОЛЕ) получаю значения.
134 ProProg
 
20.09.12
14:53
(132) ситуация. чел взял конфу. хоте перетянть свой справочник. я не буду ему писать загрузки  и не буду говорить ему делать прайсы. никаких компонент. есть обработка которая подключется к любой семерке и вытягивает оттуда номенклатуру в УТ11. челу надо нажать две кнопки.
135 Злопчинский
 
20.09.12
14:53
(130) как примерно будет настроено типа такое
если в столбце значение формата "DVD x 9" - то получить надо "9"
а если другого формата - то пропустить, за исключением формата типа
"3MP3" - отсюда получить "3"... - т.е. количество дисков в комплекте..?
136 Злопчинский
 
20.09.12
14:55
(134) а при чем здесь ЧТЕНИЕ ИЗ ДБФ..? все тормоза в получении значений через ОЛЕ - это жутко тормозной вариант.
137 zladenuw
 
20.09.12
14:55
ну так напиши свой инстал. где все проставит и доставит. а в итоге запуск 1 обработки и о чудо все в 8.
138 ProProg
 
20.09.12
14:55
(135) не грузи меня сейчас. это к теме не относится.
139 VladZ
 
20.09.12
14:55
(121) Я к тому, что в (111) у тебя не просто считывание... А еще и запись (заполнение табличной части).
140 ProProg
 
20.09.12
14:56
(136)я уже написал 40 постов назад. что считывание в восьмерку заняло 30 минут. СОЗДАНИЕ в восьмерке! Уже из собственной таблицы - 50 минут.
141 Serginio1
 
20.09.12
14:56
(135) Для таких приходится отдельно писать предварительную обработку. Но это обычно мелкие прайсы причем в экселе. Большинство работают по определенным стандартам.
142 Злопчинский
 
20.09.12
14:57
(134) выполни в контексте ОЛЕ слив справоячника в ДБФ, в 8-ке прочитай ДБФ.
143 ProProg
 
20.09.12
14:57
итого час 20 на 300 тысяч номенклатуры. В принципе результат офигенный. учитывая нажатие двух кнопок и все.
КД - умерло бы сразу.
Подключение компонент и прочей уеты - мне больше выйдет чем вся эта долбанная загрузка.
144 zladenuw
 
20.09.12
14:58
(143) опять ты про то чего не знаешь. не фуфли тут
145 Злопчинский
 
20.09.12
14:58
(140) женя, ты блин определись, что тебе надо. чтение из ДБФ или чтение из ДБФ через прокладку ОЛЕ. основное время сожрет получение занченйи через прокладку ОЛЕ.
146 Serginio1
 
20.09.12
14:58
(136) Не через оле, а через внешний сервер ОЛЕ. Внктренний сервер будет работать быстро. Хотя вызов в 7 ке своих методов быстрее.
147 ProProg
 
20.09.12
14:59
(135) не парься. в определенных спецификах рынка (востребованных все проще). В автозапчастях - артикул и производитель. и все звиздец. наименования ваще нах не нужны.
148 Злопчинский
 
20.09.12
15:00
(146) угу.
женя хочет универсальный инструмент который работает быстро и эффективно. такого не бывает...
149 ProProg
 
20.09.12
15:01
(145) ладно попробую как нить сделать через файл. если интерес будет.
150 Злопчинский
 
20.09.12
15:01
(147) угу, как и предполагалось... херня хзерней грубо говоря. мне например, практически на каждый прайс по дискам приходится писать свой "плугин" разбора. универсальность - не канает.
151 zladenuw
 
20.09.12
15:01
(147) пиз.дите сер. приедет к вам проверка. вот тогда будете думать по другому.
152 Serginio1
 
20.09.12
15:01
(141) Ну и обработка для таких прайсов тоже универсальная. Просто прописывается код обработки для каждого прайса и через выполнить обрабатывается каждая строка.
153 ProProg
 
20.09.12
15:01
пока что создание номенклатуры занимает 2/3 всей обработки, так что получение на этом фоне незначительно много занимает.
На фоне других вариантов типа КД это самый быстрый и действенный вариант получился.
154 zladenuw
 
20.09.12
15:02
(151) антимонопольный комитет. за каждую букву даст под зад
155 ProProg
 
20.09.12
15:02
(150) мелкие донастройки фигня. как артикул разобрать и т.п. и т.д. я уже научился. фирма 10 лет на рынке.
156 Злопчинский
 
20.09.12
15:02
(149) сделай в 8-ке текст семерошной обработки по сливу справочника в ДБФ. запусти эту обработку в контексте семерошного ОЛЕ. полученный ДБФ прочитай в 8-ке. будет просто акуеть как быстро. это я как неспец говорю.
157 Serginio1
 
20.09.12
15:03
(150) А что там много писанины для обработки строки? Эта строка записывается в формат прайса.
158 ProProg
 
20.09.12
15:03
через номенклатуру поставщиков (справочник) тоже ничего сложного...
поиск соответствий (отложенный) тоже сделан. загрузка когда номенклатуры нет - тоже.
159 zladenuw
 
20.09.12
15:04
(156) так кричал об этом. не ТС до ж.... дальше не буду серить в его огород
160 ProProg
 
20.09.12
15:05
(156) я сильно НЕ уверен что это не займет в итоге ВСЕ теже 30 минут.
Если бы речь шла о 2-3 часах имел бы смысл искать такие пути. Когда 30 минут. что то мне подсказывает что 5 минут роли не сиграют.
161 Злопчинский
 
20.09.12
15:05
(155) угу.. вот эти мелкие донастройки - полное УГ. загрузка прайса - 95% универсальный код. оставшиеся 5% - специфика каждого прайса, которая не поддается унификации. я - не смог унифицировать... самый путь который выбрал - систем а плугинов. в ключевых точках - вызовы плугинов с возвратом нужного. плугины - практически под каждый прайс отдельные. свести к чему-то единообразному - не удается...
162 Злопчинский
 
20.09.12
15:06
(160) такой слив-чтение суммароно займут минут 10, не больше, а если это на нормальном компе - то воопще пипец будет
163 ProProg
 
20.09.12
15:06
(161) хорош уже) у тебя один опыт у меня другой. может я настока гениален что нашел те варианты которые ты не видел))))
164 ProProg
 
20.09.12
15:07
у меня больше 500 клиентов одной обработки. спорить будем кто больше повидал?
165 Злопчинский
 
20.09.12
15:07
я ж те грю - лет 6-7 назад ПОЛНАЯ ЗАГРУЗКА прайса на 15000 из ДБФа занимала секунд 20.
166 ProProg
 
20.09.12
15:08
(162) попробую. как бы не хотелось вспоминать семерку...
167 Serginio1
 
20.09.12
15:08
(163) Хе хе. Гений1С отдыхает.
168 Злопчинский
 
20.09.12
15:08
(164) мне спорить не надо ;-) я тебе 3-4 прайса выдам и посмотрю как ты их одной и той же обработкой загрузишь без допрограммирования. ;-)
169 ProProg
 
20.09.12
15:09
Есть еще понятие целесообразности. Я думал что я что то пропустил в ОЛЕ.
Выгрузка-загрузка такого справочника . дело разовое. выполняемое один раз.
И то это у меня столько)
У других и 30 тысяч не будет.
Производителей 1500 штук за пару минут загрузил и создал.
170 Злопчинский
 
20.09.12
15:10
структурированные прайсы грузит - хрен ли... а когда прайс типа вручную в экселе написан - тут начинается веселуха.. ;-)
171 Злопчинский
 
20.09.12
15:10
(169) согласен. если это разовые работы то бороться особо за скорость не надо...
172 ProProg
 
20.09.12
15:10
(168) давай) жду в скайпе.
173 Злопчинский
 
20.09.12
15:11
(172) ща попробую найти прасики...
174 zladenuw
 
20.09.12
15:16
и мне
175 ASU_Diamond
 
20.09.12
15:16
(88) проверял?
176 ProProg
 
20.09.12
15:18
(175) Каждый раз КД дохнет когда я из семерки в торговлю данные выгружаю за месяц) если за два то где то на 50000 объектах (часа три) вывалит нехватку памяти и досвидос.

Номенклатуру тоже пытался выгрузить всю в торговлю - тоже самое) даже не увидев строку сколько чего выгрузилось.))
177 ProProg
 
20.09.12
15:18
причем все порезано в правилах обмена по самое не балуйся.
178 Aprobator
 
20.09.12
15:19
(0) прикольный перенос. Типа знания одного верхнего родителя для переноса недостаточно?
179 Aprobator
 
20.09.12
15:20
а так там вообще кирдык. Родитель через наименование тащится. Начало пятницы зачтено.
180 ProProg
 
20.09.12
15:20
(178) в смысле? надо же все уровни. а не один.
181 ProProg
 
20.09.12
15:21
(179) ну и ? для ОЛЕ нужны строковые данные. получаю в запросе название родителя сразу. на ссылках вообще все умрет.
182 Vakhrin
 
20.09.12
15:21
можно еще быстрее, чем ДБФ семерочный... записываем в текст с разделителями, но опять же не через стандартный текст, а через vbs FSO
и полученный файл читаем через ADO ))

(180) каждый последующий уровень определит предыдущий
183 Злопчинский
 
20.09.12
15:21
(172) чтото в скайпе вы неактивны..
184 Злопчинский
 
20.09.12
15:21
взял наобум простенький прайсик...
185 ProProg
 
20.09.12
15:22
(182) чо чо.
186 Vakhrin
 
20.09.12
15:23
(185) to google ))
187 ASU_Diamond
 
20.09.12
15:27
(176) сейчас занимаюсь переводом ПУБ на УПП, только что выгружал справочник номеклатуры в УПП: материалов 70 тыс, номенклатуры 30 тыс и того 100 тыс, выгрузилось довольно быстро (и это все поля, ничего не порезано) и без всяких ошибок. ЧЯДНТ?
188 Aprobator
 
20.09.12
15:28
для быстрее я бы вообще через ОЛЕ не тащил. В одной базе выгрузил в файр, в другой из файла загрузил. Разовая операция то?
189 Aprobator
 
20.09.12
15:28
(187) ты небось не ОЛЕ юзаешь )
190 zladenuw
 
20.09.12
15:29
а что в оле нельзя запустить обработку ?
191 ASU_Diamond
 
20.09.12
15:30
(189) ну я про КД речь вел
192 Aprobator
 
20.09.12
15:30
(176) КД дохнет на 50000? Офигеть. Обработку порциями не прописать что ли? Прием известный, в типовых есть. (190) смотря какими руками.
193 zladenuw
 
20.09.12
15:32
(192) тс не читает такого. а можно так (190) ?
194 Aprobator
 
20.09.12
15:35
(193) да можно конечно. Но не так как ТС делает. Это же надо додумать такой объем данных одним запросом херакнуть.
195 zladenuw
 
20.09.12
16:08
(194) ну так прямой, на выхлопе дбф,хмл,тхт и т.д. и вуаля. или не . не фокус?
196 zladenuw
 
20.09.12
16:38
знатоки 7. можно ли в 8 о вызову кому 7. вызвать обработку и создать прямой запрос
197 zladenuw
 
20.09.12
16:41
(196) форму для это же. я с телефона тута. Ы
198 zladenuw
 
20.09.12
16:45
можно ли так. создаю ком к 7 ну или апли. вызываю обработку. она создает прямой запрос, выгружает в дбф. ком для 8 вернет дбф. так можно ?
199 zladenuw
 
20.09.12
16:46
(198) а можно программно создать обработку для 7 ? с 8 ? и запихнуть все что надо.
200 zladenuw
 
20.09.12
16:46
ушел в warcraft3 dota
201 Злопчинский
 
20.09.12
16:50
(199) можно
202 zladenuw
 
20.09.12
16:53
(201) но напрямую вызвать прямой запрос или мета 1с7. мы не можем или можем ?
203 zladenuw
 
20.09.12
16:53
(202) условие 1с7 объект подключения
204 zladenuw
 
20.09.12
16:54
(201) если аппи. то вроде как да. если ком то не ?
205 zladenuw
 
20.09.12
16:55
зашибетесь реклама

Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс
206 zladenuw
 
20.09.12
16:58
надо учитцо!!!!!!!
«Когда мы встречались последний раз, я был всего лишь учеником; теперь я — мастер.»
— Дарт Вейдер — Оби-Вану Кеноби(источник)
207 zladenuw
 
20.09.12
16:59
можно ли это или нет ? вот в чем вопрос ! (202)
208 ILM
 
гуру
20.09.12
17:05
Вызвать можете, даже выборку можете вернуть, не может вставить, удалить и записать новые записи справочника, бл.еа.ть.
209 3Jl0
 
20.09.12
17:25
(208) а кто про это. вопрос чтения с 7. запись 8. судорь вы под чем !
210 ILM
 
гуру
20.09.12
17:47
(208) ответ на (207)
Никто не мешает выгрузить данные в текстовый файл из команд SQL, например вот такого вида
"Insert .... into ...." и передать его в ADO или native, как хотите.
Вот только не факт, что 1С будет с такими данными работать.
И я сударь, под чаем сижу))) А утром под кофе...
211 3Jl0
 
20.09.12
18:08
(210) кофеин это как бы наркотик
212 EvgeniuXP
 
20.09.12
18:33
(27) а зачем в дбф, сразу ТЗ в файл и считать из файла в ТЗ :)
213 ILM
 
гуру
20.09.12
19:11
(211) Ну да, "Арабика" свежесмолотая, в турке заваренная, сильно торкает))) А вот цейлонский чай листовой, нет.
А вы на чём сидите, сударь? Обмен опытом так сказать )))
Закон Брукера: Даже маленькая практика стоит большой теории.