![]() |
![]() |
![]() |
|
Оптимизация проведения документа | ☑ | ||
---|---|---|---|---|
0
tynoza
10.08.11
✎
10:54
|
Здравствуйте!
5 часов перечитываю несколько раз параграф в книжке. Не понимаю как происходит оптимизация проведения документа. Есть следующая конструкция: ТекСтрокаПереченьНоменклатуры.Номенклатура.ВидНоменклатуры ПереченьНоменклатуры - это табличная часть документа ОказаниеУслуги Мы обращаемся к полю Номенклатура т.ч.д. ОказаниеУслуги. Данные о номенклатуре содержатся в т.ч.д. Но ВидНоменклатуры уже содержится в справочнике Номенклатура. Поэтому, когда существует такая конструкция (ТекСтрокаПереченьНоменклатуры.Номенклатура.ВидНоменклатуры) платформа обращается к кешу по ссылке СправочникНоменклатура.Ссылка (что за кеш не понятно, нашел в вики, что кеш промежуточный буфер для храненя наиболее часто запрашиваемой информации). Если в кеше данных о том, какой ВидНоменклатуры нету то платформа организует чтение в базу данных. И считывает все реквизиты одной из записей справочника Номенклатура. И потом возвращает ссылку на ВидНоменклатуры Это долго. Почему это долго? Вместо это рекомендуют делать запрос, потому что он "лучше" (именно так написано) считывает данные. Что значит "лучше"? Есть цикл, в котором все записи документа переносятся в регистр (процедура обработка проведения), и обращаться по такой схеме это долго. А запрос выбирает все данные из определенного документа (передается параметр по полю ссылка), так же еще группирует их, т.к. они повторяются. Вот. Что-то я ничего не понимаю. Хотя сам писал. Че делать??? |
|||
1
John83
10.08.11
✎
11:00
|
вбить себе в голову, что запросы - это круто!!! :)
|
|||
2
Wobland
10.08.11
✎
11:03
|
запрос читает не всё, а только то, что тебе надо. а когда несколько точек в одной строке, читается, соответственно несколько объектов.
|
|||
3
PVV65
10.08.11
✎
11:04
|
Жена написала тебе список продуктов, которые надо купить в магазине. К сожалению память у тебя плохая и ты можешь запомнить только одну строчку из списка. Что делать? Запомнил первую строчку и пошел в магазин. Вернулся. Запомнил вторую строчку и т.д.
А можно было взять список и один раз сходить в магазин. |
|||
4
tynoza
10.08.11
✎
11:14
|
У меня жены нету, не знаю хорошо или плохо
Wobland, уже есть какое-то прояснение John83, хорошо) PVV65, аналогия со списком вроде не понятная и понятная. Хорошо, есть ... Номенклатура.ВидНоменклатуры в документе нет поля ВидНоменклатуры, поэтому к нему можно обратиться только по ссылке. Это долго, и мы в для каждого проведения документа цикле каждый раз так делаем. А при запросе что? Мы каждый раз при проведении определенного документа выбираем нужные записи из БД, не читая все поля. И формирует выборку из запроса, и когда элементы этой выборки в цикле проходим, но там не надо уже обращаться к базе данных. т.е. как бы в случае запроса мы перед походом в магазин "написали" себе списочек (я про выборку). И теперь будучи в магазине нам не надо из-за каждого элемента списка бегать и уточнять у жены. Я просто написал для более правильного уяснения это сообщения)) |
|||
5
tynoza
10.08.11
✎
11:17
|
Для уточнения)), я правильно понимаю, что если в кеше нету данных о ВидНоменклатура, то мы читаем в базе данных не весь справочник Номенклатура, а только его определенную запись?
|
|||
6
Wobland
10.08.11
✎
11:17
|
с женой имхо не вполне близко к истине. нужны мне: гайка1, гайка2, винт1, шланг1, шланг2... можно сходить в магазин, принести оттуда пару-тройку автомобилей и дома раскрутить. а можно в магазине попросить открутить и сложить в карман ;)
|
|||
7
Wobland
10.08.11
✎
11:17
|
(5) да. конкретный объект целиком
|
|||
8
FIXXXL
10.08.11
✎
11:19
|
>А при запросе что?
прочитаешь один разик для всего списка номенклатуры |
|||
9
asady
10.08.11
✎
11:21
|
(0) я правильно понимаю что речь идет о чтении объекта в обработке проведения документа то есть внутри транзакции?
|
|||
10
tynoza
10.08.11
✎
11:21
|
Wobland (7), под конкретным объектом ты имеешь ввиду конкретную запись справочника?
Что-то аналогию про магазин не понял, с женой проще было) |
|||
11
Wobland
10.08.11
✎
11:22
|
(10) да. одна строка в таблице. ещё раз: через точку тащится всё, даже если нужно всего одно поле. а запрос только его (поле) и вернёт
|
|||
12
tynoza
10.08.11
✎
11:25
|
(8), а ну да, т.е. мы берем табличную часть определенного документа и из нее формируем таблицу, и не надо каждый раз обращаться к базе данных, когда это делается в цикле, потому что уже есть все в сформированной таблице
(9), правильно, только про внутри транзакции я не понял) (10), ясно ;) Похоже я разобрался, спасибо вам ;-) |
|||
13
Reset
10.08.11
✎
11:26
|
Через точку:
жена говорит: сходи, купи масла и колбасы. Идем в магазин, и поскольку не уточнено, сколько и какой колбасы нужно, покупаем все сорта какие есть и тащим домой. Дома жена выбирает нужный сорт, остальное выбрасывает. А теперь нужно сыр! Идем в магазин и покупаем весь сыр в магазине, прем домой и тд. Запросом: Нужен сыр Дор-блю 400 грамм! Идем в магазин и несем домой (не используя уже грузовик дл перевозки) 400 грамм нужного сыра. |
|||
14
Maxus43
10.08.11
✎
11:26
|
(12) Типовые конфы писали не глупые люди как правило, а там в обработке проведения почти всё достаётся запросами
|
|||
15
Reset
10.08.11
✎
11:29
|
+(13) Т.е. от программиста (в данном случае им является жена) зависит, будет ди гоняться туда-сюда грузовик или все можно будет перенести в сеточке для продуктов.
|
|||
16
tynoza
10.08.11
✎
11:30
|
Reset, очень наглядная аналогия ;)
Maxus43, про это да, в книжке написано, пока сам ниче не знаю())) |
|||
17
Wobland
10.08.11
✎
11:33
|
tynoza, ознакомся для начала с реляционной моделью данных
|
|||
18
tynoza
10.08.11
✎
11:34
|
Wobland, ОК
|
|||
19
Wobland
10.08.11
✎
11:35
|
есть у меня полезная книжечка. толстая, правда. Введение в системы баз данных. К. Дж. Дейт
|
|||
20
asady
10.08.11
✎
11:43
|
(0) открой стр.719 "гросбуха" (Проф.разработка в систиме 1С..."
читай параграф "оптимизировать действия выполняемые в транзакции" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |