![]() |
УТ, форма списка Реализации, как прикрутить колонку, чтоб не тормозило? Всем привет! Столкнулся с задачей, упрощённо выглядит так: Есть некий регистр сведений (называется, допустим, "СтатусыДокументов"). Непериодический. В регистре измерение "Документ" и ресурс "Статус". Нужно добавить колонку в форму списка документа РеализацияТоваровИУслуг, в колонке отражать текущий статус документа (взятый из регистра). Как это реализовать, избежав сильного торможения при обновлении формы? |
Добавь в документ реквизит Статус. |
нет |
Выводи результат запроса. |
выводить результат запроса - это блестящий совет, в десятку! осталось мелочь, решить 2 момента: 1) каким образом получить список документов, который нужно запихать в запрос (не тянуть же весь РС, за всю историю базы) 2) в какой момент (при каком событии) выполнять запрос? |
или ты предлагаешь выполнять отдельный запрос при выводе каждой строки? |
(2) да. |
не надо из списка документов делать отчет.. |
какая положительная инфа если виден список документов ну 20 cтрок, а вних статусы..? ведь статус 21 дока - он тоже есть, но его не видно!! авария! |
извратов много может быть... вариант с реквизитом - самое эффективное в плане быстродействия вариант "При получении данных" - самое простое, но будет подтормаживать на первое время я бы вторым вариантом обошелся - на первый перейти никогда не поздно |
эк все повелись дружно... |
(10) а по делу? |
(10) между прочим, пример не из пальца высосан. знакомо, нет? это писали те самые программисты Всея Руси стандартная библиотека ЭДО регистр сведений называется СостоянияЭД колонка в форме списка дока РеализацияТоваровУслуг называется СостояниеЭД. заполнение колонки реализовано примерно как в (5) встроили эту шнягу в УТ 10.3, получили ощутимое торможение в списке Реализаций. вот сижу думаю, как оптимизировать |
ладно, всем спасибо уже придумал, чо при открытии списка запросом получу из регистра набор данных по всем реализациям, попадающим в период журнала (при интерактивном изменении периода, буду запросом перезаполнять набор) а в обработчике ПриПолученииДанных буду заполнять реквизит, используя этот набор |
таким образом, запрос к регистру сведений будет выполняться только один раз, при открытии формы списка а не каждый раз при скроллинге |
2(14) А если глупый манагер поменяет период в журнале? |
(14) читай внимательно, всё предусмотрено [quote=Ирли Бёрд;27848870]при интерактивном изменении периода, буду запросом перезаполнять набор[/quote] отловлю событие интерактивного изменения периода, и выполню запрос с новым периодом |
13-Ирли Бёрд > Молодца... И сарказм продемонстрировал, и взял очевидное. |
(17) да ладно это не так уж очевидно было бы очевидно - давно бы реализовали в типовых решениях |
18-Ирли Бёрд > Правда, штоль? А что в (3) было написано? |
(19) может ты считаешь, там написано великое откровение? |
20-Ирли Бёрд > Банальность: "тормоза" есть врожденное свойство БД такого типа, что у 1С. Конструкция такая. При малых размерах БД преодолевается "железом", "влоб", при средних - фокусами типа временных таблиц (запросами), но всегда есть предел, после которого ничего не поможет. И именно в "типовых решениях" этот порог ниже. |
(0) Как вариант. Я делал так (настырный клиент попался) Завел кэш (соответствие) В процедуре ПриПолученииДанных в этот кэш добавляю значения. В процедуре ПриВыводеСтроки данные беру из кэша. Из минусов - изменение сосояния отображалось только при переоткрытии формы, зато со скоростью проблем не было никаких. |
(22) на данный момент, более-менее правоверный вариант заполнения я нашёл в БП (смотрел 2.0.40.11). Там в обработчике [b]ПриПолученииДанных()[/b] сначала формируется массив документов, затем [u][b]ОДНИМ ЗАПРОСОМ[/b][/u] мы получаем состояния этих доков, и затем заполняем колонку. Элегантно, [filolog]бля[/filolog]! Соответствие = Новый Соответствие; МассивДляОтбора = Новый Массив; Для Каждого Строка Из ОформленияСтрок Цикл МассивДляОтбора.Добавить(Строка.ДанныеСтроки.Ссылка); Соответствие.Вставить(Строка.ДанныеСтроки.Ссылка, Строка); КонецЦикла; ТекстыСостоянияЭД = ЭлектронныеДокументы.ПолучитьТекстСостоянияЭДПоВладельцам(МассивДляОтбора); Для Каждого ТекЭл Из ТекстыСостоянияЭД Цикл Соответствие.Получить(ТекЭл.Ключ).Ячейки.СостояниеЭД.УстановитьТекст(ТекЭл.Значение); КонецЦикла; |
23-Ирли Бёрд > А что, в какой-то из типовых это не так? Блин у нас этот прием уже года 3 как отработан, руки сами код пишут. Я думал тебя он и не устроил... |
Текущее время: 22:43. Часовой пояс GMT +3. |