Имя: Пароль:
1C
1С v8
Поиск в результате запроса: ТЗ VS Выборка
,
0 Timon1405
 
11.02.15
12:25
Часто возникают ситуации, когда нужно поискать что-нибудь в результатах запроса. Насколько мне известно, есть два варианта поиска:
1. Выгружаем результат запроса в ТЗ, индексируем колонку поиска, ищем через найти/найтистроки
2. Используем метод Выборка.НайтиСледующий(), после найденной сбрасываем выборку.
вопросов несколько: будет ли во втором случае выборка индексирована, что в каких случаях будет работать быстрее, что используете вы и почему(может быть свой вариант)? спасибо.
1 H A D G E H O G s
 
11.02.15
12:29
(0)
Колонку поиска не стоит индексировать.
2 Гёдза
 
11.02.15
12:31
(1) Почему?
3 ShoGUN
 
11.02.15
12:32
(0) Померяй.
4 H A D G E H O G s
 
11.02.15
12:32
(2) Моего слова тебе недостаточно?
5 ДенисЧ
 
11.02.15
12:33
(4) неа
6 H A D G E H O G s
 
11.02.15
12:33
(5) Я не с тобой разговаривал.
7 РеализоВано
 
11.02.15
12:33
(0) <Часто возникают ситуации, когда нужно поискать что-нибудь в результатах запроса>

А для чего тогда запрос?
8 ShoGUN
 
11.02.15
12:34
(4) Ты миссионер что ли? Знаешь - объясни, а на слово верить - это к журналистам :)
9 ДенисЧ
 
11.02.15
12:34
(6) а мне до ширинки, с кем ты разговаривал.
Обосновывай утверждение. Или слив считаем.
10 Гёдза
 
11.02.15
12:34
(4) С каких пор ты стал истиной в последней инстанции?
Экзамен сдал и зазвездился чтоли?
11 rozer76
 
11.02.15
12:34
(1) еще как стоит... проверено 100%
12 ShoGUN
 
11.02.15
12:35
(7) Для того, чтобы сформировать выборку в памяти.
13 Гёдза
 
11.02.15
12:35
У нас ту не клуб джентельменом, мы на слово не верим
14 rozer76
 
11.02.15
12:35
(4) корона не жмет ?
15 РеализоВано
 
11.02.15
12:35
(12) И потом по ней ещё раз искать чтото? Бред.
16 Бубка Гоп
 
11.02.15
12:37
(4) О Великий! Твоего слова достаточно чтобы вода стала вином! Не слушай простых смердов!
17 H A D G E H O G s
 
11.02.15
12:37
(10) Хехе, отлично.
18 ShoGUN
 
11.02.15
12:38
(15) Пожалуйста вам:
Загрузка данных из файла, при том, что часть данных(но не все!) уже существует в БД. Ищем данные запросом по ключам, если в результате запроса есть такие данные, то подставляем из результата запроса, если нет - создаём. Предложи, как решить эту задачу ТОЛЬКО запросом.
19 Timon1405
 
11.02.15
12:39
(7) например, в ПриПолученииДанных получили набор свойств, их потом заполняем оформление строк.
20 H A D G E H O G s
 
11.02.15
12:39
Индексировать стоит в большинстве своем только долгоживущие данные.

Если число поисков по таблице мало - смысла индексировать нет.
Если число поисков по таблице велико (большая внешняя таблица) - проще обойти эти 2 таблицы в одном цикле (merge join).

Все, согласно классике.
21 Бубка Гоп
 
11.02.15
12:41
(20)я так понял тс ищет неоднократно, так что проиндексировать все таки смысл есть
22 H A D G E H O G s
 
11.02.15
12:47
(21) Я думаю - проще обойти в одном цикле эти 2 отсортированные предварительно таблицы и сформировать массив найденных строк-совпадений.

Да, тяжко и непривычно, но это оптимально и заставляет думать.
23 РеализоВано
 
11.02.15
12:48
(18) Данные из файла в ТЗ, ТЗ в запрос с джойнить с номенклатурой, обойти и записать
24 РеализоВано
 
11.02.15
12:49
(19) СКД многое умеет
25 ShoGUN
 
11.02.15
12:49
(23) Офигенный замут. Только кто сказал, что в данных только номенклатура?
26 РеализоВано
 
11.02.15
12:49
(24) в оформление по условию
27 РеализоВано
 
11.02.15
12:50
(25) Да пофиг с чем сравнивать и соединять
28 H A D G E H O G s
 
11.02.15
12:51
(17) Понравилась реакция Гёдзы. Надеюсь, это немного поможет ему более человечнее общаться на этом форуме.
29 Timon1405
 
11.02.15
12:53
(23) самый простой пример: Нужно в списке номенклатуры/(обычные формы) видеть свойства(2-3 штуки) из РС ЗначенияСвойствОбъектов.
аналогичное может требоваться в ТЧдокументов, списках документов итд, вместо этого РС может быть другая связанная информация.
варианты "переходите на 8.7.125, там это реализовано" не предлагать
30 РеализоВано
 
11.02.15
12:54
Моё мнение все можно сделать в запросах и не делать лишних циклодвижений особенно для какой-то выборки по условия, а если нельзя, значит не удачная реализация структуры БД. Зачем напрягать приложение если СУБД сама все может сделать?
31 Управление торговлей
 
11.02.15
12:54
когда результаты запроса уже есть, зачем их выгружать или обходить? можно сразу к ним сделать еще запрос
32 palpetrovich
 
11.02.15
12:55
(0) а это:
3. ТЗ в ВТ и запросом к ней?
33 H A D G E H O G s
 
11.02.15
12:56
(30) СУБД может кончиться.
34 ShoGUN
 
11.02.15
13:01
(30) Можно, вопрос как лучше. Мне решение с запихиванием ТЗ в ВТ не представляется лучшим. По сути ты вместо выборки данных и поиска в памяти - сначала пишешь в базу, потом начинаешь из этой же базы выковыривать. Причем либо генеришь индекс(что тоже - время), либо ищешь в куче, без индекса. Офигенно оптимальное решение. Зато сервер приложения не напрягается.
35 РеализоВано
 
11.02.15
13:02
(29)И в чем проблема?
36 РеализоВано
 
11.02.15
13:02
(34) Ну крутите в циклах
37 ShoGUN
 
11.02.15
13:03
(36) Не, ну циклы - это "бред", как мы узнали из (15).
38 РеализоВано
 
11.02.15
13:04
Сделайте какую нить массовую начислялку, покрутите и сколько это время у вас расчет
39 РеализоВано
 
11.02.15
13:04
займет
40 H A D G E H O G s
 
11.02.15
13:05
Сервер СУБД нужно холить и лелеять - он один и больше не предвидется. Серверов 1С может быть побольше одного (хоть это и плохо из за синхронизации) - можно их озадачить. Но вот клиентов - дозвизды, как правило на относительно мощных машинах - вот их стегать и надо. Особенно если эти поиски вне транзакции.
41 РеализоВано
 
11.02.15
13:08
(40) А нафига сервер тогда нужен? Зачем клиент сервеная аритектура??
42 ShoGUN
 
11.02.15
13:09
(41) Она трёхзвенная, вообще-то. Вот СУБД нефиг делать, только всякий мусор во временных таблицах сохранять по 100 раз на дню.
43 Бубка Гоп
 
11.02.15
13:14
так кого же лучше напрягать, сервер 1с, субд или клиентов?
44 РеализоВано
 
11.02.15
13:16
Ещё раз повторюсь МОЁ, сугубо скромное, пройденное опытным путем в массовых начислений и оптимизации их, мнение все можно сделать и нужно на запросах, особенно всякие условия отбора!!! Приложение только для отображение полученных данных в формочках.
45 Maxus43
 
11.02.15
13:17
(43) клиентов, если возможно
46 ShoGUN
 
11.02.15
13:17
(43) Думаю, в каждом конкретном случае надо думать. Зависит от условий поиска и количества данных, а также от описанного в (40) соотношения. Может у тебя клиенты дохлые совсем.
(44) СЛОЖНЫЕ условия - согласен, проще запросами. Простые - нет.
47 H A D G E H O G s
 
11.02.15
13:17
(43) Клиента. Правда очень редко его напрягешь, так как чистых вычислений и нет толком - все завязано на работу с данными.
48 Ненавижу 1С
 
гуру
11.02.15
13:20
жесть жестяная
давайте и документы на клиентах проводить, чего уж
49 H A D G E H O G s
 
11.02.15
13:21
(48) Ты, походу, многого не знаешь о трехзвенке :-).
50 H A D G E H O G s
 
11.02.15
13:28
(48) В типовой УПП документы проводятся на клиенте.
Да, есть серверные блоки проведения.
Но есть и клиентские.
Учите 1С должным образом...
51 H A D G E H O G s
 
11.02.15
13:31
Предупреждая буквоедов:
1) да, есть Управляемый режим.
2) да, проведение документа можно вызвать из серверной процедуры в Обычном режиме.
52 Maxus43
 
11.02.15
13:35
(48) в обычном приложении толстого клиента и так на клиенте проведение)
53 vhl
 
11.02.15
13:37
(20) Индексировать есть смысл в любом случае. Случаев когда индексировать не нужно не существует.
54 H A D G E H O G s
 
11.02.15
13:38
(53) Продолжайте индексировать в любом случае.
55 vhl
 
11.02.15
13:39
(22) Да ты обкурился...
56 Дункан Маклауд
 
11.02.15
13:40
(50) горбатого лепишь, вся запись в регистры делается на сервере, а это 80% нагрузки на БД, сами вычисления копейки по нагрузке
57 Дункан Маклауд
 
11.02.15
13:41
(51) а что такое клиентские блоки проведения?
58 Дункан Маклауд
 
11.02.15
13:43
(0) посмотри как сделано в типовых
59 H A D G E H O G s
 
11.02.15
13:43
(57) Например, формирование проводок в процедуре
ДвиженияПоРегистрамРегл() документа РТУ.
60 H A D G E H O G s
 
11.02.15
13:44
(57) systemstopper , ты, щтоле?
Давай, досвиданья.
68 Ненавижу 1С
 
гуру
11.02.15
13:52
(50)(52) это временно, переходят на сервер
69 H A D G E H O G s
 
11.02.15
13:53
(68) Конечно в управляемом перейдут на Сервер.
Но не потому что так быстрее.
А потому что так "не медленнее", чем в Обычном.
Почему?
Потому что XDTO.
70 Maxus43
 
11.02.15
13:55
(68) сам процесс записи естественно через сервер 1с на субд идёт, но также идёт передача всего объёма информации с клиента на сервер 1с, уже готового. Само формирование этих записей - на клиенте
Основная теорема систематики: Новые системы плодят новые проблемы.