Имя: Пароль:
1C
1С v8
Параметры функциональных опций
0 daringer
 
24.07.13
12:08
Добрый день. Можно ли с помощью параметров функц. опций управлять видимостью дин. списков на форме? Хранение в регистре сведений. Т.е. есть элементы формы список1, список2, список3. В регистре сведений:
ИмяЭлемента - Строка
Видимость   - Булево.
Как связать элементы формы с именем элемента в регистре? Или может быть вообще не правильно мыслю?
1 Лефмихалыч
 
модератор
24.07.13
12:14
(0) не правильно мыслишь. Связывать надо не реквизиты с регистрами, а реквизиты с опциями
2 olegves
 
24.07.13
12:17
(0) например, при хранении ФО в элементе справочника и добавлении реквизита (любого) в эту ФО, то если хотя бы у одного элемента справочника ФО активна, то видимость включится для всех элементов
3 daringer
 
24.07.13
12:37
Это понятно. Задача состоит в том, что есть форма, в которой достаточно много динамических списков, которые расположены по закладкам. Так вот при создании формы она открывается достаточно долго. Но нет необходимости загружать сразу все списки, т.к. пользователю может понадобится только одна таблица. По мере перехода по вкладкам списки должны загружаться. Т.о. все списки загрузятся когда пользователь пройдет по всем вкладкам. Делать кучу ФО и констант для каждого элемента думаю не очень хорошо
4 daringer
 
24.07.13
12:39
Думаю при создании формы заполнять регистр сведений с именами таблиц и значениями видимости. При переходе по страницам РС будет обновляться
5 daringer
 
24.07.13
12:40
Не понятно только как ФО узнает значение видимости для конкретного элемента
6 Zamestas
 
24.07.13
12:43
(3) Может создать список уже после перехода на закладку из кода?
7 daringer
 
24.07.13
12:44
Пробовал. Геморно, командная панель не понимает основную таблицу, сооветственно остается пустой
8 daringer
 
24.07.13
12:45
Пробовал управлять видимостью элемента свойством видимость, но разницы нет. Если список невидим, данные все равно загружаются
9 banco
 
24.07.13
12:47
(0) может УстановитьПараметрыФункциональныхОпцийФормы поможет?
10 daringer
 
24.07.13
12:49
Может поможет. Я не пойму как этим воспользоваться в моей задаче
11 daringer
 
24.07.13
12:52
Структура = Новый Структура;
   Для каждого Элемент из Элементы цикл
       Если Тип(Элемент) = Тип("ТаблицаФормы") тогда
             Структура.Вставить("ИмяДинСписка",Элемент.Имя);
             УстановитьПараметрыФункциональныхОпцийФормы(Структура);
       КонецЕсли;
         
   КонецЦикла;
12 daringer
 
24.07.13
12:53
Добавил в регистр сведений имя одного из элемент, установил значение видимости - не работает.
13 daringer
 
24.07.13
13:00
Ну что есть еще мысли уважаемые?
14 banco
 
24.07.13
13:00
(10) может так. 1. создаешь ФункцинальнуюОпцию ПоказатьСписок, хранение в ТвойРегистрСведений.Видимость, включаешь твои списки в эту функциональную опцию. 2 создаешь параметр функциональной опции ИмяТаблицы, хранение ТвойРегистрСведений.ИмяЭлемента. ПриСозданииНаСервере в форме УстановитьПараметрыФункциональныхОпцийФормы(Новый Структура("ИмяТаблицы", имясписка));
15 daringer
 
24.07.13
13:01
Так у меня так и есть
16 daringer
 
24.07.13
13:08
Нужно ли в составе ФС указать мою форму?
17 daringer
 
24.07.13
13:16
ну подскажите как мне решить эту задачу?
18 daringer
 
24.07.13
13:30
пока решения нет
19 olegves
 
24.07.13
13:41
у тебя с логикой не порядок.
Состав формы определяется в кл-серв варианте на сервере ПриСозданииНаСервере
а ты хочешь в уже открытой форме менять видимость на закладках. При каждой такой смене у тебя форма будет переезжать на сервер, там пересоздаваться и возвращаться клиенту. Тормоза увеличатся
20 daringer
 
24.07.13
13:56
Когда тогда можно уменьшить время открытия формы?
21 daringer
 
24.07.13
13:57
Дело в том что я не всегда при перемещении по вкладкам буду менять видимость. Только те элементы которые еще небыли видимыми
22 banco
 
24.07.13
13:59
(21) делай отдельные формы как в БП3
23 daringer
 
24.07.13
14:02
В общем на одной форме выводить много списков и так чтоб форма открывалась быстро не получится как я понял
24 banco
 
24.07.13
14:05
(23) видимо разработчики БП3 тоже пришли к такому выводу
25 daringer
 
24.07.13
14:05
Как в БП3 неудобно, т.к. когда работаешь с одним списком и хочешь посмотреть отчет, который находится в другой подсистеме при переходе обратно нужно заново искать строку на которой остановился. Так же с отчетами. настроил отбор вывел данные, перешел в другую подсистему потом обратно и заново отчет делать. Пользователям не нравится постоянно прыгать от формы к форме и повторять дейсвтия
26 daringer
 
24.07.13
14:06
Сделал им общую форму, но терь не нравится что она долго грузится
27 banco
 
24.07.13
14:15
(25) в БП3 я имел ввиду документы Реализация и Поступление, где в последнем релизе добавили отдельные формы для товаров, услуг. а чтоб при переходе на другую подсистему не закрывался текущий список или отчет, можно включить режим открытия форм в закладках.
28 daringer
 
24.07.13
14:23
Этот режим "съедает" все свободное пространство. Пользователи работают за ноутбуками 15". А для менджеров нужно выводить достаточно много инфы, которая ну не как не умещается. Монитор нужен 24"))). Ладно. Спасибо всем. Откажусь от общей формы. Жаль что только времени на нее потратил оч. много.
29 Enders
 
24.07.13
14:25
На сколько я понимаю то динамические списки грузятся в момент
"При создании на сервере".
Как вариант если они с произвольным запросом, то в запросе применить какой-то параметр так что б результат запроса был пустым.
В момент активизации нужной вкладки устанавливаешь нужный реквизит ДС и обновляешь этот список.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   Список.Параметры.УстановитьЗначениеПараметра("Задача", рЗадачаОбращение);
   Список.Параметры.УстановитьЗначениеПараметра("ПустойСписок", Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьЗадачи(Команда)
   рЗадачаОбращение = ПолучитьДокОбращения();
   Список.Параметры.УстановитьЗначениеПараметра("Задача", рЗадачаОбращение);
   Список.Параметры.УстановитьЗначениеПараметра("ПустойСписок", Ложь);

   Элементы.Список.Обновить();
КонецПроцедуры
30 olegves
 
24.07.13
14:40
(29) +100 хорошая идея
31 daringer
 
24.07.13
14:55
Да идея рабочая. Спасибо. Сам думал как сделать пустой запрос изначально, пробывал первые 0, но в дин. списке "первые" не работает. А как тогда при повторном переключении на вкладку не   обновлять элемент?
32 daringer
 
24.07.13
14:56
Можно хранить информацию о том что список загружен в реквизите формы, но может быть есть какой нить более красивый способ?
33 Enders
 
24.07.13
15:02
Хм... есть вариант проверять текущие установленные параметры... но не знаю на сколько рабочий)

То есть при активизации получать Текущий установленый параметр ПустойСписок, если он истина, тогда устанавливаем в ложь и обновляем, иначе ничего не делаем.
34 Enders
 
24.07.13
15:13
Попробовал, вроде как срабатывает.

НашПарам = Список.Параметры.Элементы.Найти("ПустойСписок");
Если НашПарам.Значение Тогда
35 olegves
 
24.07.13
15:31
(31) в запрос дин списка добавляешь условие:
Где &ТвойПараметр

В ПриСозданииНаСервере устанавливаешь ТвойПараметр=Ложь, а при активации закладки ТвойПараметр=Истина,

возможно, еще придется добавить:  Элементы.ТвойСписок.Обновить()
36 daringer
 
24.07.13
15:35
Я понял. Спасибо умные люди!
37 daringer
 
24.07.13
15:39
только в условие добавил
ГДЕ ИСТИНА<>&ПустойСписок
2 + 2 = 3.9999999999999999999999999999999...