К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

УТ, форма списка Реализации, как прикрутить колонку, чтоб не тормозило?

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 как отработан, руки сами код пишут. Я думал тебя он и не устроил...


К списку вопросов






Copyright ©, Все права защищены