Оптимизация работы в списке "ПриПолученииДанных" #648734


#0 by AnisaL
Добрый денек! У меня такая проблемка возникла, есть форма списка документов, к ней привязана процедура "ПриВыводеСтроки". Но так список достаточно долго открывается, т.к. каждый столбик в каждой строчке имеет свой цвет (как раскраска получается). Хотелось бы оптимизировать этот вывод, в инете нашла ссылку . Вместо ПриВыводеСтроки ПРиПолученииДанных. Вот код процедурки
#1 by tdm
в чем вопрос ?
#2 by AnisaL
В моем случае не находит строку СтрокаОформленияСтрок = ТаблицаДанныхОформленияСтрок.Найти(ОформлениеСтроки.Данныестроки.Ссылка, "Ссылка"); Через отладчик СтрокаОформленияСтрок = НЕОПРЕДЕЛЕНо
#3 by Reset
Ответ сокрыт в ПолучитьТаблицаОформленияСтрок
#4 by GROOVY
Используйте динамический список. Намного быстрее отрабатывать будет.
#5 by tdm
обработать этот вариант и всё)...в ПолучитьТаблицаОформленияСтрок нет такой строки значит
#6 by AnisaL
Как я поняла, это из-за того , что у нас в этом списке док-тов происходит отбор по нескольким параметрам: организация,интервал,видсметы и еще несколько. Как сделать чтоб эта процедура работала?
#7 by Bober
добавить в ДокументСписок этот реквизит и скрыть его от пользователя
#8 by Reset
Наладить ПолучитьТаблицаОформленияСтрок Или, если по логике может так быть, что для определенной ссылки нет условия оформления, добавить проверку найденной строки на неопределено
#9 by AnisaL
Напишу эту процедуру (как у меня) Функция ПолучитьТаблицаОформленияСтрок(МассивСсылокОформления)
#10 by Reset
Ужас ;]
#11 by AnisaL
Да, ужас, я не спорю
#12 by AnisaL
Но вот хочется как-то оптимизировать этот список
#13 by Bober
не видно где получается значение в запросе НеПолученТовар
#14 by tdm
сдается мне не ускорите...
#15 by tdm
если у вас 8.2 прислушайтесь к
#16 by acsent
итоговый запрос каков?
#17 by AnisaL
аах,да, это я с сайта пример скопировала
#18 by Bober
документсписок - там какой тип данных?
#19 by Bober
как вариант: Для Каждого ... ... иначе   ... конецЕсли;
#20 by AnisaL
ДокументСписок - табличное поле
#21 by Bober
+ ТаблицаДанныхОформленияСтрок.Идексы.Добавить("Ссылка"); (перед циклом)
#22 by Bober
какой там тип документа показывается?
#23 by AnisaL
ДокументСписок.Смета - типзначения
#24 by AnisaL
"выбрать ¶    рег.СсылкබИЗ¶    Документ.Смета КАК рег¶ГДЕ¶   рег.Ссылка В (&МассивСсылокОформления) и  рег.СтатусСметы=&Статус и рег.дата>=&ДатаНачала"
#25 by AnisaL
Итоговый запрос - "выбрать рег.Ссылка ИЗ    Документ.Смета КАК рег ГДЕ  рег.Ссылка В (&МассивСсылокОформления) и  рег.СтатусСметы=&Статус и рег.дата>=&ДатаНачала"
#26 by Reset
Бегло просмотрев : Все отборы лишние. Достаточно того отбора, что мы передаем массивом ссылок. Зато нет главного - определения НеПолученТовар для каждой ссылки
#27 by Bober
тогда не понятно зачем второй раз делать запрос к базе. Добавить колонки: статус, ЗаказчикСметы, Организации в динамический список и в ПриПолученииДанных в ДанныеСтроки получай и обрабатывай свойства.
#28 by Reset
Не нужно отбора по дате. Но нужно понимание, как определяется "НеПолученТовар "
#29 by AnisaL
На самом деле этот отбор не нужен - он из примера, щас напишу свою процедуру     и еще будет много цветов, просто я пока начала и уже не работает сразу, а вообще по каждой колонке цвета
#30 by AnisaL
На самом все отборы нужны
#31 by AnisaL
Почему второй раз? это первый
#32 by AnisaL
Можно тогда поподробнее как это сделать?
#33 by Reset
т.е если реквизит документа СтатусСметы равен определенному значению, нужно покарасить строку?
#34 by AnisaL
Да))
#35 by AnisaL
И так по каждому столбцу
#36 by AnisaL
У нас 8.1
#37 by acsent
а не проще ли статус сразу брать из данных строк и по нему оформление строить?
#38 by Reset
Про другие столбцы не понял. доп запросов не нужно
#39 by Reset
Вот и коллега из того же мнения ;)
#40 by AnisaL
Да, у нас так и было только в процедуре ДокументСписокПриВыводеСтроки, а сейчас нужно через пр-ру ПриПолученииДанных
#41 by Reset
Для кода без разницы для быстродействия, где он.
#42 by Reset
Возможно, у вас было Если ДанныеСтроки.ССЫЛКА.СтатусСметы=МоеЗначение тогда Вот это беда
#43 by AnisaL
Ребят, скажите как картинку отправить?
#44 by Reset
Картинка.Отправить
#45 by Reset
Куда отправить? В строке отобразить, может? ОформлениеСтроки.Ячейки.ИмяЯчейки.УстановитьКартинку(Картинка);
#46 by AnisaL
Я имею в виду сюда, хочу журнал смет скинуть
#47 by AnisaL
Как картинку прикрепить?
#48 by Reset
Выложи на файлообменнике. Я не знаю какой лучше, не пользуюсь почти. Ну radikal.ru например
#49 by AnisaL
#50 by Reset
Значит
#51 by acsent
это что за вырви глаз?
#52 by AnisaL
Вот какая у нас раскраска ))
#53 by AnisaL
Я сама когда увидела первый раз - в шоке была:) сейчас привыкла)
#54 by Reset
Раз условием в не ограничивается, нужно опеределиться с логикой окраски для остальных ячеек. Потом будет ясно, нужен ли запрос и какой.
#55 by AnisaL
А ЯчейкиИмя - это Имя колонки?
#56 by hhhh
выбрать рег.Ссылка, рег.НеПолученТовар, рег.СтатусСметы ..... ИЗ    Документ.Смета КАК рег все надо сюда в запрос Вы должны понять, что рег.Ссылка.СтатусСметы выполняется в 60 раз медленнее, чем рег.СтатусСметы. Когда поймете, тогда у вас получится ускорить.
#57 by Reset
Да, как оно в табличном подле задано
#58 by Reset
Табличном поле* :)
#59 by AnisaL
А я и не заметила даже ;)
#60 by AnisaL
А сейчас в запрос добавляются параметры "СтатусСметы" (например), при выполнени условий . А нужно их сразу в запрос записывать без условий?
#61 by AnisaL
А если по ним не будет отбора, то они не нужны же
#62 by Reset
Во первых, НЕ НУЖНО в запрос доп условия - они ведь уже наложены на список (верно?) и заведомо не попадут в те строки, по которым производится окраска. Во вторых, если СтатусСметы - это реквизит и он присутвует как колонка, запрос не нужен вообще. Впрочем, я уже повторяюсь. Ладно.
#63 by Bober
в первый раз данные считывает объект ДокументСписок. Второй раз запросом из фукнции. Раз все данные для расчета в таблице Документ.ИмяДокумента (а судя по запросу в функции именно так и есть), то нужно в объект ДокументСписок добавить обязательные колонки. Например в модуле формы после всех процедур и функции пишем ДокументСписок.Колонки.Добавить("Статус", Ложь); Второй параметр отвечает за то чтобы при скрытии этой колонки из списка (через интерфейс или программно) система все равно получала эти данные и они были доступны в ОформлениеСтроки.ДанныеСтроки
#64 by Bober
далее всю логику раскраски переносишь из запроса в цикл
#65 by Evrepid
Японский бог! Запрос в цикле! Пипец! Это оптимизировать можно только одним способом все переписать!
#66 by Bober
это где?
#67 by Evrepid
А да забыл добавить, что не плохо хотя бы на курсы программирования сходить в 1С... Ну так для начала хотя бы.
#68 by Evrepid
2 Если Вы задаете вопрос где запрос в цикле, см. п. 9 этой ветки. Процедура вызывается из ПриВыводеСтроки. Собственно, аналогичный запрос в цикле при использовании ПриВыводеДанных... Что можно оптимизировать? Все нафиг переписывать!
#69 by Reset
Внимательность - не твоя сильная сторона? :)
#70 by Evrepid
2 И где я не прав?
#71 by Reset
Во всех утверждениях , кроме последнего
#72 by Evrepid
2 А ну ну... А процедура ПриВыводеСтроки это что? Не цикл для запроса? А процедура ПриПолученииДанных Сколько раз выполняется при выводе списка? Если ответишь на эти вопросы, может поймешь мои слова. А что быстрее перебор по результату запроса или поиск по таблице значений? А так да... я не прав... :)
#73 by Reset
Кроме , ничего не могу добавить.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С