|
оптимизация поиска в табличной части | ☑ | ||
---|---|---|---|---|
0
prtx
31.08.15
✎
14:57
|
Добрый день уважаемые. Вот я и начал дорастать до того момента когда нужно не просто "навалять" код, но и оптимизировать его)))
Есть у меня документ "РеализацияТоваро"(делает продажи), и вот там у меня нужно искать товар по штрихкоду. В этом документе у меня есть табличная часть в которую выводятся все товары на складе. и вот в этом тч мы и ищем штрих код. Было!: есть реквизит формы "Штрихкод", и вот при изменении этого реквизита, мы получаем штрих(отправляемся &НаСервере), делаем запрос к регистру сведений, находим там номенклатуру к которой привязан этот штрихкод, дальше ищем эту номенклатуру в тч, и после того как нашли устанавливаем текущую строку на эту самую номенклатуру. Стало!: сразу при заполнении тч достаем туда штрихкод, и при изменении реквизита штрихкод делаем поиск следующим образом: СтрокаТоварыНаСкладах = ТоварыНаСкладах.НайтиСтроки(Новый Структура("Штрихкод", ПоискШтрихкод)); Элементы.ТоварыНаСкладах.ТекущаяСтрока = СтрокаТоварыНаСкладах[0].ПолучитьИдентификатор(); В моем представлении так должно было бы быть быстрее, НО кассры начал жаловаться что стало все этот диво работать медленнее. Собственно вопрос: А ЧЕ ТАК-ТО!? (сервер не сильно мощный, даже на одной кассе системник мощнее...) Подскажите: кто тупит, я или кассиры? И может быть мне вообще пойти по другому путь(только не знаю по какому)? Как оптимизировать этот действие? 1с 8.3. уф Заранее всем спасибо! |
|||
1
Fragster
гуру
31.08.15
✎
14:58
|
вариант 2 происходит на клиенте?
|
|||
2
prtx
31.08.15
✎
14:59
|
(1) да
|
|||
3
prtx
31.08.15
✎
15:01
|
(1) в этом то и была идея чтобы минимизировать вызовы сервера...
|
|||
4
Fragster
гуру
31.08.15
✎
15:03
|
(3) Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер). ___Вызов метода выполняет обращение к серверу. ___ (с) Синтакс помощник. ищи перебором. или половинного деления, если отсортировано по ШК. |
|||
5
magicSan
31.08.15
✎
15:04
|
Пусть пилит временую таблицу ищет в ней.
|
|||
6
prtx
31.08.15
✎
15:16
|
(5) спасибо за подсказку. должно быть быстрее...
а если обращаться к самой тч, через запрос? или это не то пальто будет? |
|||
7
magicSan
31.08.15
✎
15:21
|
(6)Я так понял таблица грамадная и не изменяется. Пусть в менегереВТ будет. Теоритический при втором поиске она будет в темпах sql.
|
|||
8
prtx
31.08.15
✎
15:22
|
(4)
Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер). ___Вызов метода выполняет обращение к серверу. ___ (с) Синтакс помощник. Т.Е. ничего я не выгадал, так? а использовать перебор, типа циклом перебирать строки ТЧ, не уж то быстрее будет, если можно объясните, т.к. я аматор самоучка, и многого еще незнаю... отсортировано оно не по шк, а можно ссылку или что-то про этот метод, желательно где написано для "одаренных", сейчас еще сам поищу. спасибо |
|||
9
sash-ml
31.08.15
✎
15:24
|
(0) а реквизит в ТЧ индексированный?
|
|||
10
prtx
31.08.15
✎
15:24
|
(7) ну как громадная. пару тысяч строк(не знаю мерки громадность в 1с...). в процессе создания чека не меняется. заполняется при создании на сервер.
|
|||
11
magicSan
31.08.15
✎
15:26
|
(10) Чот меня понесло идея же была в поиске на стороне клиента ... тоже про (9) думал
|
|||
12
prtx
31.08.15
✎
15:27
|
(9) сори! забыл уточнить. ТЧ - является реквизитом формы, а не документа. так что не индексируются. решил сделать так потому, что считаю не целесообразным хранить такие тч вместе с документом(да и ненужны они). мне кажеться что от этого значительно увеличиться бд.
|
|||
13
Зеленый пень
31.08.15
✎
15:29
|
Использовать не ТЧ, а Соответствие. Может, полегче будет.
|
|||
14
prtx
31.08.15
✎
15:30
|
(11) (12) если я не прав по тч, это вы мне скажите как это скажется на бд. переделать тч в реквизит документа не составит труда, главное что бы последствий в росте бд не было и ускорить поиск...
|
|||
15
prtx
31.08.15
✎
15:34
|
(13) т.е. при создании на сервер зафигачить соответствие, засунуть туда идентификатор строки и штрихкод. и потом просто устонавливать текущую строку. вариант, спасибо. буду пробовать.
|
|||
16
magicSan
31.08.15
✎
15:36
|
(15) теже скорости неоткуда там приросту братся.
ТЧ в документе в итоге не хранится? |
|||
17
hhhh
31.08.15
✎
15:38
|
(14) а чем вас не устраивает рост БД? Ну докупите через 30 лет новый винт.
|
|||
18
H A D G E H O G s
31.08.15
✎
15:40
|
(15) не получится.
|
|||
19
prtx
31.08.15
✎
15:41
|
(16) неа.
|
|||
20
magicSan
31.08.15
✎
15:41
|
(17) Он походу в ТЧ всю номенклатуру базы сливает и потом иещет в ней. Хранить дубли справочника номенклатура в каждом документе не хочет. Я правильно понял?
|
|||
21
magicSan
31.08.15
✎
15:42
|
(19) Ну отчистит табличную часть перед записью.
|
|||
22
H A D G E H O G s
31.08.15
✎
15:43
|
А че, это все нельзя решить ДинамическимСписком, не?
|
|||
23
Гёдза
31.08.15
✎
15:45
|
поиск в ты на клиента - это ппц как медленно
|
|||
24
Гёдза
31.08.15
✎
15:45
|
*тч
|
|||
25
prtx
31.08.15
✎
15:46
|
(17) просто, я далековат от системного администрирования и от всех тонкостей 1с. и не знаю какой рост это за собой повлечет.
я когда увлекался php, (боже какой я старый...) тогда каждый лишний килобайт был на счету))) огромноя просьба просветить что бы я мог и в дальнейшем использовать эти знания. допустим в этой тч будет около 2 тысяч строк, около 150-200 чеков в день, ну и пусть хотябы это все будет на трех аптеках. значит в строках получаеться примерно около 1 000 000 строк в день. ну как-то так это не сильно скажеться на бд? |
|||
26
hhhh
31.08.15
✎
15:49
|
(25) ну допустим, длина реквизита 50 байт. Тогда если у вас 1000 документов с этим реквизитом, база увеличится на 50 кбайт. Ну даже если на мегабайт база вырастет, стоит ли вам париться?
|
|||
27
magicSan
31.08.15
✎
15:49
|
(25) Нафига те их хранить если не надо??? Нафига те вообще этот реквизит если не надо?
|
|||
28
prtx
31.08.15
✎
15:50
|
(20) ну да. только не всю. а ту котарая на момент создания чека есть на складе, ну естественно в запросе при заполнении тч, достаю только ту номенклатуру котарае есть на данном складе(где создается документ продажи)
|
|||
29
magicSan
31.08.15
✎
15:52
|
(28) Теперь подумай логику и уменьши не количество вызовов сервера а количество передоваемой инфогрмации.
|
|||
30
magicSan
31.08.15
✎
15:54
|
(29) +1 после каждого пика товар должен уходить в резерв. А хотя навернео один пк один склад.
|
|||
31
prtx
31.08.15
✎
15:56
|
(27) твой вариант про очистку тч перед записью гениален, я чот туплю)))
как нафига мне этот реквизит(ТЧ), в нем же отображаются доступные товары на складах в этой тч кассиры видят свои товары и продают... (29) инфа достаеться и так только та которая нужна, цены количество, номенклатура, срок. лишнего ничего нет. (30) да пока один склад один комп. над резервированием начал разбираться уже. скоро будет.. |
|||
32
DexterMorgan
31.08.15
✎
15:59
|
(31) почему не динамический список, а тз?
|
|||
33
DexterMorgan
31.08.15
✎
16:00
|
(31) Остатки же тем более меняются, кассир видит только то, что ты загрузил в эту тз, а список обновляется
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |