Регистрация Правила Главная форума Поиск |
0
- 23.11.2012 - 18:17
|
Всем привет! Столкнулся с задачей, упрощённо выглядит так: Есть некий регистр сведений (называется, допустим, "СтатусыДокументов"). Непериодический. В регистре измерение "Документ" и ресурс "Статус". Нужно добавить колонку в форму списка документа РеализацияТоваровИУслуг, в колонке отражать текущий статус документа (взятый из регистра). Как это реализовать, избежав сильного торможения при обновлении формы? | |
1
- 23.11.2012 - 18:30
| Добавь в документ реквизит Статус. | |
2
- 23.11.2012 - 18:48
| нет | |
3
- 23.11.2012 - 18:55
| Выводи результат запроса. | |
4
- 23.11.2012 - 19:00
|
выводить результат запроса - это блестящий совет, в десятку! осталось мелочь, решить 2 момента: 1) каким образом получить список документов, который нужно запихать в запрос (не тянуть же весь РС, за всю историю базы) 2) в какой момент (при каком событии) выполнять запрос? | |
5
- 23.11.2012 - 19:01
| или ты предлагаешь выполнять отдельный запрос при выводе каждой строки? | |
6
- 23.11.2012 - 19:08
| (2) да. | |
7
- 23.11.2012 - 19:10
| не надо из списка документов делать отчет.. | |
8
- 23.11.2012 - 19:11
| какая положительная инфа если виден список документов ну 20 cтрок, а вних статусы..? ведь статус 21 дока - он тоже есть, но его не видно!! авария! | |
9
- 23.11.2012 - 19:16
|
извратов много может быть... вариант с реквизитом - самое эффективное в плане быстродействия вариант "При получении данных" - самое простое, но будет подтормаживать на первое время я бы вторым вариантом обошелся - на первый перейти никогда не поздно | |
10
- 23.11.2012 - 19:49
| эк все повелись дружно... | |
11
- 23.11.2012 - 19:52
| (10) а по делу? | |
12
- 23.11.2012 - 20:03
|
(10) между прочим, пример не из пальца высосан. знакомо, нет? это писали те самые программисты Всея Руси стандартная библиотека ЭДО регистр сведений называется СостоянияЭД колонка в форме списка дока РеализацияТоваровУслуг называется СостояниеЭД. заполнение колонки реализовано примерно как в (5) встроили эту шнягу в УТ 10.3, получили ощутимое торможение в списке Реализаций. вот сижу думаю, как оптимизировать | |
13
- 23.11.2012 - 20:18
|
ладно, всем спасибо уже придумал, чо при открытии списка запросом получу из регистра набор данных по всем реализациям, попадающим в период журнала (при интерактивном изменении периода, буду запросом перезаполнять набор) а в обработчике ПриПолученииДанных буду заполнять реквизит, используя этот набор | |
14
- 23.11.2012 - 20:20
|
таким образом, запрос к регистру сведений будет выполняться только один раз, при открытии формы списка а не каждый раз при скроллинге | |
15
- 23.11.2012 - 20:46
| 2(14) А если глупый манагер поменяет период в журнале? | |
16
- 23.11.2012 - 21:26
|
(14) читай внимательно, всё предусмотрено отловлю событие интерактивного изменения периода, и выполню запрос с новым периодом | |
17
- 23.11.2012 - 21:31
| 13-Ирли Бёрд > Молодца... И сарказм продемонстрировал, и взял очевидное. | |
18
- 23.11.2012 - 21:33
|
(17) да ладно это не так уж очевидно было бы очевидно - давно бы реализовали в типовых решениях | |
19
- 23.11.2012 - 22:42
| 18-Ирли Бёрд > Правда, штоль? А что в (3) было написано? | |
20
- 24.11.2012 - 00:46
| (19) может ты считаешь, там написано великое откровение? | |
21
- 24.11.2012 - 01:10
|
20-Ирли Бёрд > Банальность: "тормоза" есть врожденное свойство БД такого типа, что у 1С. Конструкция такая. При малых размерах БД преодолевается "железом", "влоб", при средних - фокусами типа временных таблиц (запросами), но всегда есть предел, после которого ничего не поможет. И именно в "типовых решениях" этот порог ниже. | |
22
- 26.11.2012 - 07:20
|
(0) Как вариант. Я делал так (настырный клиент попался) Завел кэш (соответствие) В процедуре ПриПолученииДанных в этот кэш добавляю значения. В процедуре ПриВыводеСтроки данные беру из кэша. Из минусов - изменение сосояния отображалось только при переоткрытии формы, зато со скоростью проблем не было никаких. | |
23
- 26.11.2012 - 10:54
|
(22) на данный момент, более-менее правоверный вариант заполнения я нашёл в БП (смотрел 2.0.40.11). Там в обработчике ПриПолученииДанных() сначала формируется массив документов, затем ОДНИМ ЗАПРОСОМ мы получаем состояния этих доков, и затем заполняем колонку. Элегантно, [*****]! Соответствие = Новый Соответствие; МассивДляОтбора = Новый Массив; Для Каждого Строка Из ОформленияСтрок Цикл МассивДляОтбора.Добавить(Строка.ДанныеСтроки.Ссылк а); Соответствие.Вставить(Строка.ДанныеСтроки.Ссылка, Строка); КонецЦикла; ТекстыСостоянияЭД = ЭлектронныеДокументы.ПолучитьТекстСостоянияЭДПоВла дельцам(МассивДляОтбора); Для Каждого ТекЭл Из ТекстыСостоянияЭД Цикл Соответствие.Получить(ТекЭл.Ключ).Ячейки.Состояние ЭД.УстановитьТекст(ТекЭл.Значение); КонецЦикла; | |
24
- 26.11.2012 - 13:23
| 23-Ирли Бёрд > А что, в какой-то из типовых это не так? Блин у нас этот прием уже года 3 как отработан, руки сами код пишут. Я думал тебя он и не устроил... | |
| Интернет-форум Краснодарского края и Краснодара |