|
Тормоза при работе с переносом значений из 77 в 8.2 по OLE | ☑ | ||
---|---|---|---|---|
0
zhenyat
28.01.13
✎
14:10
|
Здравствуйте
Изучаю 8 - ку :) Пришлось начать изучение сразу с обработки импорта данных из самописной конфы 7.7 в УПП на 8.2 Обе базы файловые. Обработка работает, но остались вопросы: Справочник Номенклатура. Почти 4000 элементов. Загружать надо не весь, а выборочно. Т.е. пользователи заполняют список для импорта выбранными элементами, а затем загружают по этому списку. Загрузка элементов справочника в таблицу значений для последующего выбора занимает примерно 1-2 минуты... Это очень долго! Вот код:
Тормозит именно цикл заполнения таблицы значений "Таблица". При чем когда запрос выбирал сами объекты (Справочник.Номенклатура.ТекущийЭлемент) - цикл работал еще медленнее... В итоге выкрутилась тем что вместо заполнения таблицы и последующим выбором из нее, запрашиваю у пользователя код номенклатуры, по этому коду нахожу элемент в 7.7 и заполняю список для импорта данными этого элемента. Но осадочек остался - может все-таки есть какие-то способы быстрого заполнения таблицы или дерева значений в 8-ке данными из базы 7.7 по OLE? |
|||
1
Бешеная Нога
28.01.13
✎
14:13
|
еще как вариант попробовать выгрузить результат запроса в таблицу значений и работать с ней
|
|||
2
Ork
28.01.13
✎
14:14
|
(0) "Пока Запрос.Группировка() Цикл"
Не верю... |
|||
3
Ёпрст
28.01.13
✎
14:18
|
Строка = Таблица.Добавить();
тем более |
|||
4
dk
28.01.13
✎
14:21
|
Группировка Код Без Групп
сурово -------
--- Для ускорения можешь выгрузить в ТЗ и перебрать ТЗ 7-ное
|
|||
5
Popkorm
28.01.13
✎
14:32
|
(0) может все таки так:
Запрос.Группировка(1) |
|||
6
zhenyat
28.01.13
✎
18:40
|
(5) Когда группировка одна смысл указывать ее номер?
Тем более что сам запрос выполняется практически мгновенно (1)(4) Пробовала и выгружать сначала в ТЗ - без особой разницы :( (2)(3) Что вас смущает в приведенном коде? |
|||
7
zladenuw
28.01.13
✎
18:44
|
(0) я бы это дело в файл. а потом с уппырища читал бы. в разы быстрее было бы.
|
|||
8
Галахад
гуру
28.01.13
✎
18:46
|
Не пойму в чем проблема? 1-2 минуты. Ну не так уж и долго.
|
|||
9
zladenuw
28.01.13
✎
18:47
|
(8) хотят сразу. а ком он долгий. я тоже гнался за ним. потом плюнул использую КД и обмен через файл. в разы быстрее. и проще править :)
|
|||
10
Галахад
гуру
28.01.13
✎
18:51
|
(9) Так (0) как я понял нужна интерактивность. Пользогвтель галочки ставит. А затем переносит.
Хотя. Можно было и признак какой-нибудь организовать в семерке. |
|||
11
zladenuw
28.01.13
✎
18:53
|
(10) в 7 выбрала. нажала выгрузить. алт+таб на 8. там кнопку загрузить. опля 5 секунд. быстрее ?
|
|||
12
Галахад
гуру
28.01.13
✎
18:55
|
(11) Не. Я не про то. У (0) не все объекты выгружаются, а по какому-то признаку. А для его проставления и нужно получить список из 4000 позиций.
|
|||
13
zladenuw
28.01.13
✎
19:08
|
(12)она заполняет все позиции в тз, уже из тз пользователь выбирает нужное, не проще будет и быстрее выбирать нужное в 7 и выгружать. а загрузчик можно на фоновое задание сделать.
|
|||
14
Fragster
гуру
28.01.13
✎
19:17
|
заполнитьЗначенияСвйоств()
|
|||
15
Fragster
гуру
28.01.13
✎
19:18
|
ну и выкинуть стандартный запрос, запилить на прямом запросе
|
|||
16
Fragster
гуру
28.01.13
✎
19:19
|
или вообще подцепиться к 7.7 как к внешнему источнику данных или через ADO...
|
|||
17
zladenuw
28.01.13
✎
19:21
|
(15) тормоз в заполнение тз в приемнике. 8 же не хапает тз 7.
|
|||
18
zladenuw
28.01.13
✎
19:21
|
(16) блин а я так не пробовал. а как через адо к 7 ?
|
|||
19
H A D G E H O G s
28.01.13
✎
19:32
|
(18) Либо к табличке SQL, либо к dbf, но это зло.
Проще запилить процедуру в 7.7, которая в csv выгрузит. |
|||
20
Ork
28.01.13
✎
19:34
|
(6)
"(2)(3) Что вас смущает в приведенном коде?" А он в семерке выдаст ошибку. Всмысле писать нужно : Пока Запрос.Группировка(<НомерГруппировки>) < = 1 >. |
|||
21
Тьма
28.01.13
✎
19:35
|
(20)Этот код в восьмерке выполняется. То же для (3)
|
|||
22
Fragster
гуру
28.01.13
✎
21:34
|
(17) сделай замер:
Пока Запрос.Группировка() Цикл Строка = Таблица.Добавить(); Код = Запрос.Код; Наименование = Запрос.Наименование; Штрихкод = Запрос.Код; Строка.Код = Код; Строка.Наименование = Наименование; Строка.Штрихкод = Штрихкод; КонецЦикла; |
|||
23
Fragster
гуру
28.01.13
✎
21:46
|
если медленнее первые строки - то прямой запрос, если вторые - то заполнитьзначениясвойств чуть поможет. но вообще - дальше же что-то с этой ТЗ происходит? может имеет смысл от нее избавиться...
|
|||
24
zhenyat
29.01.13
✎
15:08
|
(9) (11) (13) Наверное так (выгрузка из 7 в файл - загрузка в 8 из файла) было бы проще и быстрее... Не ожидала что OLE так тормозить будет...
(22) (23) Честно говоря пока еще не понимаю как в ЗаполнитьЗначенияСвойств в качестве Источника передать не строку таблицы а что-то другое... |
|||
25
Fragster
гуру
29.01.13
✎
15:13
|
(24) что говорит замер?
|
|||
26
zhenyat
29.01.13
✎
18:19
|
(25) Медленнее первые строки:
Когда используется выгрузка в ТЗ - этот же код чуть чуть побыстрее... |
|||
27
Serginio1
29.01.13
✎
18:31
|
Лучше из 7 ки вызывать 8 ку через COMConnector
с использованием внешней обработки для использования процедур специально написанных на 8 ке v8: Можно ли по OLE выполнять запросы из 1с 7.7 в 1с 8.2 |
|||
28
Fragster
гуру
29.01.13
✎
18:32
|
(26)->(23). прямой запрос.
|
|||
29
zhenyat
29.01.13
✎
18:34
|
(28) можете подсказать где и что по этому поводу почитать?
|
|||
30
Serginio1
29.01.13
✎
18:35
|
Либо использовать внешний отчет уже в 7 ке v8: Как выполнить процедуру внешней обработки через OLE
(29) Смотри 1С++ |
|||
31
Fragster
гуру
29.01.13
✎
18:42
|
(29) самый дубовый способ - смотри в файле .dd в каком файле и в каких полях лежат нужные тебе данные и юзай напрямую .dbf вообще без 7.7
|
|||
32
Serginio1
29.01.13
✎
18:44
|
30 + RE: Регистр ОстаткиТовара
смоти 88 |
|||
33
Fragster
гуру
29.01.13
✎
18:47
|
ну да, есть смысл заюзать (32)
|
|||
34
zhenyat
29.01.13
✎
18:49
|
(32) Спасибо, попробую
|
|||
35
Serginio1
29.01.13
✎
19:04
|
(34) На 8 ке не тестил, а на семерке такой код рабочий
ТекстЗапроса = " |SELECT top 20 Номенклатура.ID ИД |,Номенклатура.Descr Наименование |FROM $Справочник.Номенклатура AS Номенклатура With (NOLOCK) "; рс = СоздатьОбъект("ODBCRecordset"); Сообщить(рс.Открыть(ТекстЗапроса)); Сообщить(рс.ВыборкаОткрыта()); Если рс.ВыборкаОткрыта() =1 Тогда рс.ВНачало(); Сообщить(рс.Конец()); Сообщить(рс.КолвоПолей()); Для сч=1 по рс.КолвоПолей() Цикл Сообщить(рс.ПолучитьПараметрыПоля(сч)); КонецЦикла; Сообщить(рс.Конец()); Сч=0; Пока рс.Конец()=0 Цикл Сч=Сч+1; Сообщить(сч); Сообщить("ИД="+рс.ПолучитьЗначение(1)+" Наим="+рс.ПолучитьЗначение("Наименование")); рс.След(); КонецЦикла; КонецЕсли; рс.Закрыть(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |