ВЫБРАТЬ РАЗЛИЧНЫЕ РАЗРЕШЕННЫЕ Первые 1001
По теме из базы знаний
- Автоматизированная проверка конфигураций… и пара слов о стандартах разработки
- Создание в 1С 7.7 XML в формате EnterpriseData (универсальный формат обмена), версия 1.5. Инструкции и примеры переноса данных из устаревшей конфигурации 1С 7.7 в любую современную 1С 8.3, поддерживающую EnterpriseData, через Конвертацию данных 3
- Создаем сайт ресторана на OneScript
- Описание почти всех событий технологического журнала
- Обзор полезных методов БСП 3.1.4
Найденные решения
(1)
Нет, Да.
Зависит от условий ( в т.ч. неявных, по RLS) в самом запросе, необходимости сортировки и кол-ва записей удовлетворяющих эти условиям.
Не говоря уж о том что "первые n", без сортировки, вам каждый раз могут возвращать разный результат.
Что не менее плохо, так это то, что и время выдачи иногда будет сильно разным.
Исходя из вашей фразы "УТ 10.3 индексы использует? ", краткий ответ - не делайте так.
============================================================ ==========================
А теперь о главном: "Как вы в списке ДОКУМЕНТОВ, что-то ищите исключительно по справочник.Контрагенты. "?
Ведь это ваша фраза "Мой запрос в форме списка документов" ?.
Или вы решили "упростить", ну, чтобы никто не догадался?
"Штатный запрос поиска контрагентов из формы " - это скорее какой-то сервисный запрос с непонятной причиной своего создания. Никто ни будет искать по всей этой каше по условию ИЛИ.
Хотя бы потому, что, глядя на результат, будет нереально понять как все эти люди сюда попали.
Насколько я понял, проблема связана с использованием LIKE и вы хотите оставить, только кусок поиска по наименованию.
Вроде как, полнотекстовой поиск работает только со штатным механизмом платформы, а не с самопальным запросом - ибо MS SQL про таковой в 1С ничего не знает.
Но никто не мешает программно использовать объект ПолнотекстовыйПоиск (енто тот, где есть СоздатьСписок, ПерваяЧасть() и прочие интересные методы).
Поищите, возможно это спасет отца русской демократии. Только проверьте актуальность индекса и то, что ваше поле туда попадает.
Первые 1001 это значит что запрос обработает только 1001 из 10 000 контрагентов?
Нет, Да.
Зависит от условий ( в т.ч. неявных, по RLS) в самом запросе, необходимости сортировки и кол-ва записей удовлетворяющих эти условиям.
Не говоря уж о том что "первые n", без сортировки, вам каждый раз могут возвращать разный результат.
Что не менее плохо, так это то, что и время выдачи иногда будет сильно разным.
Исходя из вашей фразы "УТ 10.3 индексы использует? ", краткий ответ - не делайте так.
============================================================
А теперь о главном: "Как вы в списке ДОКУМЕНТОВ, что-то ищите исключительно по справочник.Контрагенты. "?
Ведь это ваша фраза "Мой запрос в форме списка документов" ?.
Или вы решили "упростить", ну, чтобы никто не догадался?
"Штатный запрос поиска контрагентов из формы " - это скорее какой-то сервисный запрос с непонятной причиной своего создания. Никто ни будет искать по всей этой каше по условию ИЛИ.
Хотя бы потому, что, глядя на результат, будет нереально понять как все эти люди сюда попали.
Насколько я понял, проблема связана с использованием LIKE и вы хотите оставить, только кусок поиска по наименованию.
Вроде как, полнотекстовой поиск работает только со штатным механизмом платформы, а не с самопальным запросом - ибо MS SQL про таковой в 1С ничего не знает.
Но никто не мешает программно использовать объект ПолнотекстовыйПоиск (енто тот, где есть СоздатьСписок, ПерваяЧасть() и прочие интересные методы).
Поищите, возможно это спасет отца русской демократии. Только проверьте актуальность индекса и то, что ваше поле туда попадает.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5) т.е. все таки запрос обработает все записи?
УТ 10.3 индексы использует?
Есть полнотекстовый поиск с индексами(УТ 10.3 вроде как им не пользуется)
а Есть вроде как еще индексы которые перестраиваются при тестировании исправлении
наверное индексы к каждой таблице как было в 1С 7.7. состоящие из полей Наименование и те которые отмечены для индексного поиска
УТ 10.3 индексы использует?
Есть полнотекстовый поиск с индексами(УТ 10.3 вроде как им не пользуется)
а Есть вроде как еще индексы которые перестраиваются при тестировании исправлении
наверное индексы к каждой таблице как было в 1С 7.7. состоящие из полей Наименование и те которые отмечены для индексного поиска
(5) Основная задача оптимизировать концепцию запроса %ПОДОБНО%
Мой запрос в форме списка документов(там же еще и RLS ограничения, в итоге выполнение доходит до 3-4 мин.)
Штатный запрос поиска контрагентов из формы
Мой запрос в форме списка документов(там же еще и RLS ограничения, в итоге выполнение доходит до 3-4 мин.)
Запрос.УстановитьПараметр("пНаименование", "%" + СокрЛП(ЭтаФорма.ИмяКонт) + "%");
// нам нужна только ссылка для построения списка значений
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Ссылка
|ИЗ
| Справочник.Контрагенты
|
|ГДЕ
| // 2-ое условие
| ( Наименование ПОДОБНО &пНаименование)
|
|";
ПоказатьШтатный запрос поиска контрагентов из формы
ВЫБРАТЬ РАЗЛИЧНЫЕ РАЗРЕШЕННЫЕ Первые 1001
СправочникКонтрагентыУникальноеИмя2.Ссылка КАК УникальныйОбъектПоиска
ИЗ
Справочник.Контрагенты КАК СправочникКонтрагентыУникальноеИмя2
ГДЕ
(СправочникКонтрагентыУникальноеИмя2.КОД ПОДОБНО &ТекстАвтоПодбора + "" СПЕЦСИМВОЛ "~" )
{ГДЕ СправочникКонтрагентыУникальноеИмя2.Ссылка.* КАК СправочникКонтрагенты }
ОБЪЕДИНИТЬ
ВЫБРАТЬ РАЗЛИЧНЫЕ Первые 1001
СправочникКонтрагентыУникальноеИмя2.Ссылка КАК УникальныйОбъектПоиска
ИЗ
Справочник.Контрагенты КАК СправочникКонтрагентыУникальноеИмя2
ГДЕ
(СправочникКонтрагентыУникальноеИмя2.НАИМЕНОВАНИЕ ПОДОБНО &ТекстАвтоПодбора + "" СПЕЦСИМВОЛ "~" )
{ГДЕ СправочникКонтрагентыУникальноеИмя2.Ссылка.* КАК СправочникКонтрагенты }
ОБЪЕДИНИТЬ
ВЫБРАТЬ РАЗЛИЧНЫЕ Первые 1001
СправочникКонтрагентыУникальноеИмя2.Ссылка КАК УникальныйОбъектПоиска
ИЗ
Справочник.Контрагенты КАК СправочникКонтрагентыУникальноеИмя2
ГДЕ
(СправочникКонтрагентыУникальноеИмя2.ИНН ПОДОБНО &ТекстАвтоПодбора + "" СПЕЦСИМВОЛ "~" )
{ГДЕ СправочникКонтрагентыУникальноеИмя2.Ссылка.* КАК СправочникКонтрагенты }
ОБЪЕДИНИТЬ
ВЫБРАТЬ РАЗЛИЧНЫЕ Первые 1001
СправочникКонтрагентыУникальноеИмя2.Ссылка КАК УникальныйОбъектПоиска
ИЗ
Справочник.Контрагенты КАК СправочникКонтрагентыУникальноеИмя2
ГДЕ
(СправочникКонтрагентыУникальноеИмя2.НАИМЕНОВАНИЕПОЛНОЕ ПОДОБНО &ТекстАвтоПодбора + "" СПЕЦСИМВОЛ "~" )
{ГДЕ СправочникКонтрагентыУникальноеИмя2.Ссылка.* КАК СправочникКонтрагенты }
Показать
Ваще все понятно!!! А если честно ничего!
9. Ключевое слово ПЕРВЫЕ / TOP
Данное ключевое слово позволяет ограничить выборку несколькими первыми записями. Часто это ключевое слово применяется в комбинации с сортировкой (предложение УПОРЯДОЧИТЬ ПО).
Копировать в буфер обмена
ВЫБРАТЬ ПЕРВЫЕ 10 Номер, Дата, СуммаДокумента
ИЗ Документ.АвансовыйОтчет
УПОРЯДОЧИТЬ ПО СуммаДокумента УБЫВ
9. Ключевое слово ПЕРВЫЕ / TOP
Данное ключевое слово позволяет ограничить выборку несколькими первыми записями. Часто это ключевое слово применяется в комбинации с сортировкой (предложение УПОРЯДОЧИТЬ ПО).
Копировать в буфер обмена
ВЫБРАТЬ ПЕРВЫЕ 10 Номер, Дата, СуммаДокумента
ИЗ Документ.АвансовыйОтчет
УПОРЯДОЧИТЬ ПО СуммаДокумента УБЫВ
(1)
Нет, Да.
Зависит от условий ( в т.ч. неявных, по RLS) в самом запросе, необходимости сортировки и кол-ва записей удовлетворяющих эти условиям.
Не говоря уж о том что "первые n", без сортировки, вам каждый раз могут возвращать разный результат.
Что не менее плохо, так это то, что и время выдачи иногда будет сильно разным.
Исходя из вашей фразы "УТ 10.3 индексы использует? ", краткий ответ - не делайте так.
============================================================ ==========================
А теперь о главном: "Как вы в списке ДОКУМЕНТОВ, что-то ищите исключительно по справочник.Контрагенты. "?
Ведь это ваша фраза "Мой запрос в форме списка документов" ?.
Или вы решили "упростить", ну, чтобы никто не догадался?
"Штатный запрос поиска контрагентов из формы " - это скорее какой-то сервисный запрос с непонятной причиной своего создания. Никто ни будет искать по всей этой каше по условию ИЛИ.
Хотя бы потому, что, глядя на результат, будет нереально понять как все эти люди сюда попали.
Насколько я понял, проблема связана с использованием LIKE и вы хотите оставить, только кусок поиска по наименованию.
Вроде как, полнотекстовой поиск работает только со штатным механизмом платформы, а не с самопальным запросом - ибо MS SQL про таковой в 1С ничего не знает.
Но никто не мешает программно использовать объект ПолнотекстовыйПоиск (енто тот, где есть СоздатьСписок, ПерваяЧасть() и прочие интересные методы).
Поищите, возможно это спасет отца русской демократии. Только проверьте актуальность индекса и то, что ваше поле туда попадает.
Первые 1001 это значит что запрос обработает только 1001 из 10 000 контрагентов?
Нет, Да.
Зависит от условий ( в т.ч. неявных, по RLS) в самом запросе, необходимости сортировки и кол-ва записей удовлетворяющих эти условиям.
Не говоря уж о том что "первые n", без сортировки, вам каждый раз могут возвращать разный результат.
Что не менее плохо, так это то, что и время выдачи иногда будет сильно разным.
Исходя из вашей фразы "УТ 10.3 индексы использует? ", краткий ответ - не делайте так.
============================================================
А теперь о главном: "Как вы в списке ДОКУМЕНТОВ, что-то ищите исключительно по справочник.Контрагенты. "?
Ведь это ваша фраза "Мой запрос в форме списка документов" ?.
Или вы решили "упростить", ну, чтобы никто не догадался?
"Штатный запрос поиска контрагентов из формы " - это скорее какой-то сервисный запрос с непонятной причиной своего создания. Никто ни будет искать по всей этой каше по условию ИЛИ.
Хотя бы потому, что, глядя на результат, будет нереально понять как все эти люди сюда попали.
Насколько я понял, проблема связана с использованием LIKE и вы хотите оставить, только кусок поиска по наименованию.
Вроде как, полнотекстовой поиск работает только со штатным механизмом платформы, а не с самопальным запросом - ибо MS SQL про таковой в 1С ничего не знает.
Но никто не мешает программно использовать объект ПолнотекстовыйПоиск (енто тот, где есть СоздатьСписок, ПерваяЧасть() и прочие интересные методы).
Поищите, возможно это спасет отца русской демократии. Только проверьте актуальность индекса и то, что ваше поле туда попадает.
(11) у меня получить оптимизировать код следующим:
УстановитьПривилегированныйРежим(Истина);
СтандартнаяОбработка = Ложь;
Запрос = Новый Запрос;
// устанавливаем параметры запроса введенными критериями
//Запрос.УстановитьПараметр("фНаименование", ЭтаФорма.ИмяКонт);
Запрос.УстановитьПараметр("пНаименование", "%" + СокрЛП(ЭтаФорма.ИмяКонт1) + "%");
Запрос.УстановитьПараметр("ОграничениеКА", ПараметрыСеанса.ОграничениеКА);
Запрос.УстановитьПараметр("ОграничениеКА2", ПараметрыСеанса.ОграничениеКА2);
// нам нужна только ссылка для построения списка значений
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ Первые 1001
| Ссылка
|ИЗ
| Справочник.Контрагенты
|
|ГДЕ
| // 2-ое условие
| ( Ссылка Не в Иерархии (&ОграничениеКА)) и( Ссылка Не в Иерархии (&ОграничениеКА2) ) и
| ( Наименование ПОДОБНО &пНаименование)
|
|";
Результат = Запрос.Выполнить();
// создаем новый список значений и выгружаем в него колонку «Ссылка» из результата запроса
сз = Новый СписокЗначений;
сз.ЗагрузитьЗначения(Результат.Выгрузить().ВыгрузитьКолонку("Ссылка"));
ЭтаФорма.ДокументСписок.Отбор.Контрагент.ВидСравнения = ВидСравнения.ВСписке;
ЭтаФорма.ДокументСписок.Отбор.Контрагент.Значение = сз;
ЭтаФорма.ДокументСписок.Отбор.Контрагент.Использование = Истина;
Если НЕ(РольДоступна("ДокиПоОтветственному")) Тогда
СпрПользователь = УправлениеПользователями.ОпределитьТекущегоПользователя();
СписокПользователей = Новый СписокЗначений;
СписокПользователей.Добавить(СпрПользователь);
ЭтаФорма.ДокументСписок.Отбор.ДокументыПоОтветсвенному.ВидСравнения = ВидСравнения.ВСписке;
ЭтаФорма.ДокументСписок.Отбор.ДокументыПоОтветсвенному.Значение = СписокПользователей;
ЭтаФорма.ДокументСписок.Отбор.ДокументыПоОтветсвенному.Использование = Истина;
//ЭлементыФормы.ДокументСписок.НастройкаОтбора.ДокументыПоОтветсвенному.Доступность = Ложь;
КонецЕсли;
УстановитьПривилегированныйРежим(Ложь);
Показать
т.о. перед запросом включаю Привилегированный,
RLS ограничение я применяю как фильтр в самом запросе и устанавливаю жесткий фильтр после его выполнения и потом выключаю Привилегированный
скорость выросла раз в 40, и пропали периодические лаги по 3-5 минут зависания в момент выполнения этого запроса.
RLS ограничение я применяю как фильтр в самом запросе и устанавливаю жесткий фильтр после его выполнения и потом выключаю Привилегированный
скорость выросла раз в 40, и пропали периодические лаги по 3-5 минут зависания в момент выполнения этого запроса.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот