T
tanat
Легенда:
гружу данные из экселевского файлика, где по трем страницам разбросаны данные. Во всех трех таблицах есть поле "контрагент", по которому их можно объединить.
С чтением данных проблем нет. Все отлично читается. А вот "склеить" эти три таблицы - геморрой.
Делаю через менеджер временных таблиц, положившись на суждение, что через него будет быстрее, чем через перебор строк таблиц.
Делаю через левое соединение по полю "Контрагент". Все поля в таблице - строковые. Колонки таблиц типизированы: Строка с длиной 1024 символа.
Запрос выглядит примерно так:
//1ая таблица
ЗАпрос = Новый ЗАпрос;
ЗАпрос.ТЕкст ="Выбрать Таблица.* Поместить ТаблицаКонтрагентов из &Таблица как Таблица";
Запрос.УстановитьПараметр("Таблица",ТАблица);
ЗАпрос.Выполнить;
//Выполняется, не виснет. Дальше вторая и третья таблица
ЗАпрос.ТЕкст ="Выбрать Таблица2.* Поместить ТаблицаЗаметок из &Таблица2 как Таблица2";
Запрос.УстановитьПараметр("Таблица",ТАблица);
ЗАпрос.Выполнить;
ЗАпрос.ТЕкст ="Выбрать Таблица3.* Поместить ТаблицаСобытий из &Таблица3 как Таблица3";
Запрос.УстановитьПараметр("Таблица",ТАблица);
ЗАпрос.Выполнить;
// тоже все хорошо выполнилось. теперь основной зарпос
Запрос.Текст = "Выбрать ТАблицаКонтрагентов.*,
| ТаблицаЗаметок.Заметки как заметки,
|ТаблицаСобытий.События как события
| Из
| ТабилцаКонтрагентов
| Левое Соединение ТАблицаЗАметок как таблицаЗАметок По ТАблицаКонтрагентов.Контрагент = ТАблицаЗАметок.Контрагент
| ЛЕвое соединение ТАблицаСобытий как таблицаСобытий по ТАблицаКонтрагентов.Контрагент = ТАблицаСобытий.Контрагент";
РЕзультат = ЗАпрос.Выполнить().Выгрузить();
//И вот тут все виснет к е..еням собачим. Причем на тестовом примере с 250 записями все хорошо работает. а на 10 тыс записях в каждой таблице все виснет.
Есть у кого какие соображения? Почему никаких признаков жизни этот зверь не подает?
гружу данные из экселевского файлика, где по трем страницам разбросаны данные. Во всех трех таблицах есть поле "контрагент", по которому их можно объединить.
С чтением данных проблем нет. Все отлично читается. А вот "склеить" эти три таблицы - геморрой.
Делаю через менеджер временных таблиц, положившись на суждение, что через него будет быстрее, чем через перебор строк таблиц.
Делаю через левое соединение по полю "Контрагент". Все поля в таблице - строковые. Колонки таблиц типизированы: Строка с длиной 1024 символа.
Запрос выглядит примерно так:
//1ая таблица
ЗАпрос = Новый ЗАпрос;
ЗАпрос.ТЕкст ="Выбрать Таблица.* Поместить ТаблицаКонтрагентов из &Таблица как Таблица";
Запрос.УстановитьПараметр("Таблица",ТАблица);
ЗАпрос.Выполнить;
//Выполняется, не виснет. Дальше вторая и третья таблица
ЗАпрос.ТЕкст ="Выбрать Таблица2.* Поместить ТаблицаЗаметок из &Таблица2 как Таблица2";
Запрос.УстановитьПараметр("Таблица",ТАблица);
ЗАпрос.Выполнить;
ЗАпрос.ТЕкст ="Выбрать Таблица3.* Поместить ТаблицаСобытий из &Таблица3 как Таблица3";
Запрос.УстановитьПараметр("Таблица",ТАблица);
ЗАпрос.Выполнить;
// тоже все хорошо выполнилось. теперь основной зарпос
Запрос.Текст = "Выбрать ТАблицаКонтрагентов.*,
| ТаблицаЗаметок.Заметки как заметки,
|ТаблицаСобытий.События как события
| Из
| ТабилцаКонтрагентов
| Левое Соединение ТАблицаЗАметок как таблицаЗАметок По ТАблицаКонтрагентов.Контрагент = ТАблицаЗАметок.Контрагент
| ЛЕвое соединение ТАблицаСобытий как таблицаСобытий по ТАблицаКонтрагентов.Контрагент = ТАблицаСобытий.Контрагент";
РЕзультат = ЗАпрос.Выполнить().Выгрузить();
//И вот тут все виснет к е..еням собачим. Причем на тестовом примере с 250 записями все хорошо работает. а на 10 тыс записях в каждой таблице все виснет.
Есть у кого какие соображения? Почему никаких признаков жизни этот зверь не подает?