Понедельник, 13.05.2024, 09:13
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Основной » Проблемные ситуации » 3.56 Поиск дублей и замена ссылок. Медленная работа.
3.56 Поиск дублей и замена ссылок. Медленная работа.
dak6Дата: Пятница, 01.04.2016, 05:15 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 5
Репутация: 2
Статус: Оффлайн
- версия платформы: 8.3.7.1917
- MSSQL 2008R2
- Толстый клиент
- Комплекстная автоматизация 1.1.69

В случае наличия в таблице замен документов с движениями по регистрам бухгалтерии на больших базах крайне долго работает обработка "Поиск дублей и замена ссылок" на этапе замены ссылок. Это связано с тем, что в  процедуре "ПолучитьПоляТаблицыБДЛкс" Общего модуля ИрОбщий строится запрос  "ВЫБРАТЬ Т.* ИЗ РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто КАК Т ГДЕ ЛОЖЬ" на получение полей виртуальной таблицы ДвиженияССубконто. Вы предполагаете, что запрос отработает быстро т.к. указано условие приводящие к пустому результату, но  платформа при выполнении запроса к виртуальной таблице ДвиженияССубконто сначала копирует физическую таблицу Регистра Бухгалтерии во временную таблицу БЕЗ УЧЕТА условий, а потом уже накладывает все условия. Из-за этого на больших базах дождаться выполнения такого запроса практически не реально. Для временного решения проблемы я в процедуре "ПолучитьПоляТаблицыБДЛкс" добавил логику которая изменяет запрос на "ВЫБРАТЬ Т.* ИЗ РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(, , , , 1) КАК Т ГДЕ ЛОЖЬ" т.е. я в параметрах виртуальной таблицы указываю что нужно выбрать первые 1 записей, после этого запрос выполняется быстро.
 
tormozitДата: Пятница, 01.04.2016, 08:26 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 6199
Репутация: 159
Статус: Оффлайн
Спасибо. Да, этот важный момент был упущен из вида, при недавнем переходе со старого компоновочного метода получения полей таблиц БД на новый с выполнением запроса. Все эти трюки от того, что в платформе до сих пор нет простого универсального метода для решения такой задачи и у запроса нет метода для получения колонок результата без его выполнения.
 
dak6Дата: Пятница, 01.04.2016, 08:55 | Сообщение # 3
Рядовой
Группа: Пользователи
Сообщений: 5
Репутация: 2
Статус: Оффлайн
Еще вопросик. У вас в коде встречаются инструкции препроцессора вида "#Если _ Тогда" можете пояснить зачем вы их используете т.к. я не нашел ничего в документации по этому поводу (непонятно как обрабатывается символ нижнего подчеркивания) и зачем вообще это нужно.
и в вкратце чем лучше получение полей запросом по сравнению со старым методом.
 
tormozitДата: Пятница, 01.04.2016, 09:07 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 6199
Репутация: 159
Статус: Оффлайн
Любой неизвестный идентификатор в инструкциях препроцессора имеет значение Ложь. "_" является частным случаем и было выбрано из-за краткости и отсутствия намеков на какой то задуманный вендором смысл. Поэтому все внутри такой инструкции работает только на механизм контекстной подсказки.

Старый компоновочный метод получения колонок таблиц БД выдавал не все колонки при наличии ограничений функциональными опциями.
 
tormozitДата: Понедельник, 04.04.2016, 01:36 | Сообщение # 5
Генералиссимус
Группа: Администраторы
Сообщений: 6199
Репутация: 159
Статус: Оффлайн
Исправлено в 3.57
 
Форум » Основной » Проблемные ситуации » 3.56 Поиск дублей и замена ссылок. Медленная работа.
  • Страница 1 из 1
  • 1
Поиск: