|
Добавление строки в табличное поле типа "отбор" | ☑ | ||
---|---|---|---|---|
0
DreamMaster
11.09.13
✎
09:42
|
Всем доброго времени суток. Подскажите: есть табличное поле, тип значения "отбор". Как добавить в данную таблицу строку с отбором ? Были мысли что-то вроде этого: (данные код не работает)
//ТабОтбора - ТЧ типа "отбор" //Этаформа.ВладелецФормы.Отбор - отбор из формы списка документа Для каждого стр из Этаформа.ВладелецФормы.Отбор Цикл ТабОтбора.Добавить(Стр.Имя); ТабОтбора[Стр.Имя].ВидСравнения = Стр.ВидСравнения; ТабОтбора[Стр.Имя].Значение = стр.Значение; ТабОтбора[Стр.Имя].ЗначениеПо = стр.ЗначениеПо; ТабОтбора[Стр.Имя].ЗначениеС = стр.ЗначениеС; ТабОтбора[Стр.Имя].Использование = стр.Использование; КонецЦикла; |
|||
1
kiruha
11.09.13
✎
09:54
|
ПоляОтбора = Отбор.ПолучитьДоступныеПоля();
ПоляОтбора.Очистить(); // добавим отбор по ... ПоляОтбора.Добавить("ЕеМое", "ЕеМое", Новый ОписаниеТипов("СправочникСсылка.ЕеМое")).Отбор = Истина; //... Отбор.УстановитьДоступныеПоля(ПоляОтбора); //добавим Отбор.Добавить("ЕеМое"); |
|||
2
an_str
11.09.13
✎
09:56
|
Можно так попробовать, к примеру:
ЭлементОтбора = КонтактныеЛицаКонтрагента.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Владелец"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = Объект.Ссылка; |
|||
3
kiruha
11.09.13
✎
09:59
|
ОтборКомпоновкиДанных <> Отбор
|
|||
4
Defender aka LINN
11.09.13
✎
09:59
|
(1) О_О
(0) Ну, снимай штаны, подставляй бейцы. Сейчас будем их клещами прижигать, а ты будешь сопротивляться, чтобы не дай бог не рассказать чего-нибудь |
|||
5
DreamMaster
11.09.13
✎
10:09
|
(1),(2) - спасибо, сейчас проверю.
(4) Ты сам то понял, что сказал? |
|||
6
Defender aka LINN
11.09.13
✎
10:36
|
(5) Я - да. Я про то, что ты не сознаешься - что за отбор, что за спиок, что за формы, что за таблица, которую ты перебираешь и нахрена это все вообще надо. Видимо, тебе так интереснее.
|
|||
7
DreamMaster
11.09.13
✎
10:39
|
(6) Не пишу - так как это не важно. Задача - заменить стандартный отбор в форме списка документа (не важно какой документ). Для этого реализую свою форму отбора и сортировки
|
|||
8
kiruha
11.09.13
✎
10:40
|
(7)
Это важно В форме списка доступные поля менять нельзя |
|||
9
Defender aka LINN
11.09.13
✎
10:49
|
(7) Если ты такой умный, че ж на форум к нам, дуракам, полез-то?
Что, задача вот прямо так и стоит "поменять отбор"? И нафига, позволь поинтересоваться. |
|||
10
DreamMaster
11.09.13
✎
10:53
|
Проблема такая: в 1С в формах списка документов можно выбрать отборы, которые не будут иметь смысла и просто загрузят систему (к примеру подразделение в группе из списка и выбрать конкретное подразделение). Чтобы такого не было, перед фильтрацией необходимо проверять выбранный фильтр.
|
|||
11
Defender aka LINN
11.09.13
✎
10:58
|
(10) Вспотеть не боишься - все проверять?
Идиотская задача, на самом деле. |
|||
12
Infsams654
11.09.13
✎
10:59
|
(10) да беда, загрузят систему. Кто сказал что загрузят? Если пользователю какие-то отборы не в тему, то он и не полезет туда
|
|||
13
Odavid
11.09.13
✎
11:02
|
(10) закрой ненужные отборы, делофф-то...
|
|||
14
Odavid
11.09.13
✎
11:03
|
(12) а если нужны? ))
(10) а если именно загрузить систему таким образом он и хочет? |
|||
15
DreamMaster
11.09.13
✎
11:09
|
(12) Пользователь не обладает большим умом. Если поставить фильтр с подразделением, который я приводил ранее, обновление списка будет проходить длительное время, но в итоге фильтр сработает аналогично "Подразделение равно". Пользователю глубоко поровну, что все остальные будут висеть.
(11) Согласен, Проверки на каждый реквизит отбора будут выглядеть очень жестоко (на овнокод будет смахивать), но тем не менее данная затычка очень сильно ускорит производительность системы в целом (точнее просто исчезнут висяки из-за глупых отборов) |
|||
16
DreamMaster
11.09.13
✎
11:11
|
На эту же тему Если выбрать отбор (к примеру) "подразделение в группе из списка" и выбрать только одну группу, запрос будет выполнятся дольше, чем "подразделение в группе". Вот множество таких мелочей дают очень не хорошую картину о производительности системы в целом
|
|||
17
Odavid
11.09.13
✎
11:12
|
(15) вы наивно полагаете, что самое страшное в 1С - это отборы?
Вы вообще, давно в 1С? |
|||
18
Odavid
11.09.13
✎
11:14
|
(16)>>Вот множество таких мелочей дают очень не хорошую картину о производительности системы в целом
оно как-бы в системе вообще нет приемлимой производительности. А не "мелочи дают картину о производительности". |
|||
19
kiruha
11.09.13
✎
11:17
|
(15)
Добавьте "свой" отбор. Вынесите на форму. По нему заполняйте "штатный" |
|||
20
kiruha
11.09.13
✎
11:19
|
Добавьте "свой" отбор - вынесите вверху формы. По нему заполняйте штатный.
Дополнительно можно повесить всякие обработчики на ТП |
|||
21
Odavid
11.09.13
✎
11:25
|
(20) да человек просто увидел свой первый тормоз в 1С - и решил, что, щас его поборет, и наступит светлое 1совое будущее...
|
|||
22
DreamMaster
11.09.13
✎
11:26
|
(19) Именно так и сделал. Свой отбор заполняю данными из отбора формы владельца и в итоге возвразяю в форму владельца верный отбор. Получилась универсальная вещь
|
|||
23
DreamMaster
11.09.13
✎
11:27
|
(15) В 1С нормально. Где вы увидели, что я сказал "самое страшное в 1С - это отборы" ?
|
|||
24
Odavid
11.09.13
✎
11:31
|
(23) если это я "увидел", то здесь:
"Пользователю глубоко поровну, что все остальные будут висеть." Т.е. вы не понимаете, что если даже сделаете "свои" отборы, пользователь "найдет", где зависнуть в 1С уже на "ваших"?? |
|||
25
Odavid
11.09.13
✎
11:33
|
(23) в 1С нужно не теорией заниматься и искать логику по студенческим лекциям о СУБД, а брать бритву Оккама и исходить строго из нужности: Отбор нужен - ставите, не нужен - закрываете.
Все. Все остальные соображения по поводу работы 1С вернет вам ... куда-нибудь ))) |
|||
26
DreamMaster
11.09.13
✎
11:36
|
(24) Повесить 1С дело не хитрое. Я решаю конкретную проблему, которая может повесить 1С. В одном случаи вид сравнения в отборе нужен, в другом случаи этот же отбор с этим же вариантом сравнения повесит систему. Убирать отбор - дело неправильное. СУБД, SQL, неверные запросы - это уже другая степь.
|
|||
27
kiruha
11.09.13
✎
11:38
|
(22)
В реквизиты формы добавляете МойОтбор, тип Отбор На форму таб поле - источник МойОтбор Дале по алгоритму (1) сначала заполняете доступные поля для отбора Потом из доступных полей собственно отбор |
|||
28
Odavid
11.09.13
✎
11:43
|
(26)>>В одном случаи вид сравнения в отборе нужен, в другом случаи этот же отбор с этим же вариантом сравнения повесит систему.
На заметку - отбор подразделений в списке с одной группой, и отбор по группе будет выполняться одинаково - соединением соответствующих таблиц. Весь вопрос в том, каковы размеры этих таблиц. А не "если равно, то быстрее, чем в группе..." |
|||
29
DreamMaster
11.09.13
✎
11:45
|
(28) При малых таблицах разницу вы не заметите, но если таблица содержит несколько млн строк, то разница в скорости существенная
|
|||
30
Odavid
11.09.13
✎
11:47
|
(29) так в любом случае у вас будут тормоза - механизм отборов имеет единую основу, оптимизировать которую 1С сама не в состоянии, а других пустить - боится.
|
|||
31
kiruha
11.09.13
✎
11:56
|
Добавьте индекс на ПодразделениеОрганизации - и будет счастье
|
|||
32
DreamMaster
11.09.13
✎
11:59
|
(30) так для этого я и делаю данную доработку, чтобы перед тем как отфильтровать форму списка - 1С сначала проверила все фильтры, а уже позже начала фильтровать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |