Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Работа с большим объемом информации в 1С УТ11 клиент-сервер / 8 сообщений из 8, страница 1 из 1
28.10.2015, 09:51
    #39088662
Работа с большим объемом информации в 1С УТ11 клиент-сервер
Есть база УТ 11.1, подключена по технологии Клиент-сервер
В ней большой справочник "Партнеры" - порядка 200000 записей.
Есть выгруженная из внешнего источника данных таблица телефонных звонков с графами
"Длительность звонка" и "Телефонный номер", количество строк может быть любым.
Требуется по телефонному номеру найти партнеров для всех строк из этой таблицы.
Я написал процедуру примерно такого вида:

&НаСервере
Процедура СопоставитьПартнеров()

//Операторы загрузки данных из внешней таблицы в таблицу значений ВнешТЗ
...

//Попытка найти партнеров по номеру телефона
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ *
|ПОМЕСТИТЬ ВнешТЗ
|ИЗ &ВнешТЗ КАК ВнешТЗ
|;
|ВнешТЗ.ДлительностьЗвонка КАК Длительность,
|ВнешТЗ.ТелефонныйНомер КАК ТелефонныйНомер,
|ПартнерыКИ.Ссылка КАК Партнер
|ИЗ
|ВнешТЗ КАК ВнешТЗ
|ЛЕВОЕ СОЕДИНЕНИЕ
|Справочник.Партнеры.КонтактнаяИнформация КАК ПартнерыКИ
|ПО ВнешТЗ.ТелефонныйНомер ПОДОБНО (""%"" + ПартнерыКИ.НомерТелефона)";

Запрос.Параметры.Вставить("ВнешТЗ", ВнешТЗ);
Рез = Запрос.Выполнить();

//Дальнейшая обработка результата запроса
...
КонецПроцедуры


Проблема такая:
Если во внешней таблицы записей немного (в пределах 1000), то запрос отрабатывает нормально.
Но если их передано очень много (порядка 100000), то на выполнении запроса 1С мертво подвисает на
несколько часов, и вместе с ней подвисает и сервер, на котором она установлена, т.е. не могут работать
и другие пользователи этой базы, и даже пользователи других программ, установленных на этом сервере.
Подскажите, пожалуйста, как грамотно получить данные из справочника партнеров, чтобы запрос выполнялся быстрее, или хотя бы чтобы он не подвешивал сервер.
Заранее благодарен
...
Рейтинг: 0 / 0
28.10.2015, 09:57
    #39088670
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большим объемом информации в 1С УТ11 клиент-сервер
Гонять туда-сюда таблицы - несерьёзно. Да и не сильно понятно, где фактически выполняется запрос... небось локально?

Создайте ТАМ временную таблицу, загоните в неё все нужные телефоны, выполните ТАМ запрос и получите обратно набор записей (телефон-партнёр). Ещё лучше - выполняя ТАМ запрос, слить информацию в другую временную таблицу опять же ТАМ, а потом из неё фетчить.
...
Рейтинг: 0 / 0
28.10.2015, 12:05
    #39088802
Мудрозвонов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большим объемом информации в 1С УТ11 клиент-сервер
То есть вот так (СМ. ниже) что ли "сделал" вместо того, чтобы "сперва подумать"? 8^)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
таблицы:

=================
ЗВОНКИ
...
телефон_кто
телефон_кому
...
длительность_звонка
дата
...


=================
АБОНЕНТЫ
...
id
телефон
...
имя
организация
...


//////////////////////////
//////////////////////////

select
AB.id кто_звонил, 
AB_PARTNER.id кому_звонил
from
ЗВОНКИ ZZ, 
АБОНЕНТЫ AB,
АБОНЕНТЫ AB_PARTNER 
where
AB.телефон = ZZ.телефон_кто
 and 
AB_PARTNER.телефон = ZZ.телефон_кому
group by кто_звонил
...
Рейтинг: 0 / 0
28.10.2015, 12:31
    #39088836
Мудрозвонов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большим объемом информации в 1С УТ11 клиент-сервер
нет,

просто ЗВОНКИ на ЗВОНКИ в "декартовом произведении"

8^)
...
Рейтинг: 0 / 0
28.10.2015, 12:47
    #39088862
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большим объемом информации в 1С УТ11 клиент-сервер
Мудрозвонов
Код: plaintext
group by кто_звонил
Это вот - за нафига?
...
Рейтинг: 0 / 0
28.10.2015, 12:59
    #39088878
Мудрозвонов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большим объемом информации в 1С УТ11 клиент-сервер
AkinaМудрозвонов
Код: plaintext
group by кто_звонил
Это вот - за нафига?

по ходу вычисляет случаи, когда звонили сами себе и это получалось

надо же знать - у кого получилось
...
Рейтинг: 0 / 0
28.10.2015, 13:17
    #39088895
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большим объемом информации в 1С УТ11 клиент-сервер
Мудрозвоноввычисляет случаи, когда звонили сами себе
Да ни разу...
...
Рейтинг: 0 / 0
28.10.2015, 15:13
    #39089021
Александр Пузаков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большим объемом информации в 1С УТ11 клиент-сервер
Ярошенко Павел, а цель сего изврата какая? Определить кто сколько раз звонил?
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Работа с большим объемом информации в 1С УТ11 клиент-сервер / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]