Имя: Пароль:
1C
1С v8
Быстрый доступ к элементу отбора в обработке(!)
0 PCcomCat
 
14.03.18
15:52
Доброго времени, уважаемые!

Подскажите, ка в обработке сделать так, чтобы как у отчета можно было вывести элементы отбора в быстром доступе.

Сейчас сделано через таблицу, у которой путь данных = КомпоновщикНастроек.Настройки.Отбор.

Заранее благодарю!
1 Cyberhawk
 
14.03.18
15:54
Посмотри общую форму отчета у любой типовой на БСП
2 Cyberhawk
 
14.03.18
15:54
Таблица с источником-компоновщиком никакие быстрые отборы не умеет
3 PCcomCat
 
14.03.18
15:55
У меня УПП на УФ
4 Cyberhawk
 
14.03.18
15:56
Я вроде не спрашивал, чего там у тебя
5 PCcomCat
 
14.03.18
16:03
)) Спасибо
Читать и читать в этой форме...
6 PCcomCat
 
14.03.18
18:27
Ох, пните еще раз в нужную сторону!

смотрю в ЗУП 3.1:
            
ПолеВвода = Элементы.Добавить(ЗначениеИмя, Тип("ПолеФормы"), Группа);
ПолеВвода.Вид                = ВидПоляФормы.ПолеВвода;
ПолеВвода.Заголовок          = СвойстваНастройки.Представление;
ПолеВвода.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;

Если СтрДлина(СвойстваНастройки.Представление) > 40 Тогда // Если заголовок существенно длиннее остальных заголовков, переносим его.
    ПолеВвода.ВысотаЗаголовка = 2;
КонецЕсли;
            
// Связь с СКД.
ПолеВвода.ПутьКДанным = Прочее.ПутьККомпоновщику + ".ПользовательскиеНастройки[" + СвойстваНастройки.ИндексВКоллекции + "].Значение";

Я по аналогии пишу:

НовыйЭлемент = Элементы.Добавить("Сеть1", Тип("ПолеФормы"),);
НовыйЭлемент.Вид         = ВидПоляФормы.ПолеВвода;
НовыйЭлемент.Заголовок   = "Сеть1";

НовыйЭлемент.ПутьКДанным = "КомпоновщикНастроекФормы.ПользовательскиеНастройки.Элементы[0].Значение";
НовыйЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Право;

Но получаю ошибку:
{ВнешняяОбработка.ЗагрузкаЧерезЗагрузочныйФайл.Форма.ФормаУправляемая.Форма(182)}: Ошибка при установке значения атрибута контекста (ПутьКДанным)
        Флажок.ПутьКДанным = "КомпоновщикНастроекФормы.ПользовательскиеНастройки.Элементы[0].Значение";
по причине:
Недопустимое значение

ЧЯДНТ?
7 PCcomCat
 
14.03.18
18:29
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ИнициализироватьОтбор();
    ДобавлениеЭлементов();
КонецПроцедуры

&НаСервере
Процедура ИнициализироватьОтбор()
    Обработка =  РеквизитФормыВЗначение("Объект");
    СхемаКомпоновкиДанных = Обработка.ПолучитьМакет("СхемаКомпоновкиДанных");
    Настройки = СхемаКомпоновкиДанных.ВариантыНастроек.Основной.Настройки;
    КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
    
    АдресСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных);
    КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
    КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    КомпоновщикНастроекФормы = КомпоновщикНастроек;
КонецПроцедуры


А выше изложенное художество в процедуре ДобавлениеЭлементов()
8 Cyberhawk
 
14.03.18
18:31
В отладке смотреть надо, что по твоему пути к данным есть данные
9 PCcomCat
 
14.03.18
18:33
Есть данные - смотрела. Поэтому и пишу то, где есть значение.
10 PCcomCat
 
14.03.18
18:34
КомпоновщикНастроекФормы.ПользовательскиеНастройки.Элементы[0] = ЗначениеПараметраНастроекКомпоновкиДанных
11 Cyberhawk
 
14.03.18
19:22
В (10) так-то не то, на что указывает путь к данным
12 PCcomCat
 
14.03.18
19:41
(11) Ладно, спасибо, добрый человек! Подумаю посижу, что не так. Главное, чтобы направление верное было...
13 Cyberhawk
 
14.03.18
19:49
(12) Ну ладно, подскажу еще: у таблицы формы есть свойство "Режим отображения" = "Быстрый доступ"
14 PCcomCat
 
14.03.18
20:06
(13) Это первое, что сделала)) - нифига нет быстрого доступа!
15 PCcomCat
 
14.03.18
20:07
Может к этому свойству еще какая-нибудь хитрость есть?
16 Cyberhawk
 
14.03.18
20:15
Может. Но это уже надо смотреть, проверять, брать и пробовать
17 PCcomCat
 
14.03.18
20:41
(17) "Я сама дошла - на лыжах!" А не работает это свойство по той причине, что это обработка, а не отчет.
18 PCcomCat
 
14.03.18
23:03
Всё! Я это сделала!

&НаСервере
Процедура ДобавлениеЭлементов()
    инд = 0;
    
    Для каждого ЭлементОтбора из КомпоновщикНастроекФормы.Настройки.Отбор.Элементы цикл
        Группа = Элементы.Добавить("Группа" + СокрЛП(ЭлементОтбора.ЛевоеЗначение), Тип("ГруппаФормы"), Элементы.ГруппаОтбора);
        Группа.Вид                 = ВидГруппыФормы.ОбычнаяГруппа;
        Группа.Отображение         = ОтображениеОбычнойГруппы.Нет;
        //Группа.Заголовок           = "Группа";
        Группа.ОтображатьЗаголовок = Ложь;
        Группа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
        
        НовыйЭлемент = Элементы.Добавить("Использование" + ЭлементОтбора.ЛевоеЗначение, Тип("ПолеФормы"), Группа);
        НовыйЭлемент.Вид         = ВидПоляФормы.ПолеФлажка;
        //НовыйЭлемент.Заголовок   = "Использование";
        НовыйЭлемент.ПутьКДанным = "КомпоновщикНастроекФормы.Настройки.Отбор[" + инд + "].Использование";
        НовыйЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
        
        НовыйЭлемент = Элементы.Добавить("Параметр" + ЭлементОтбора.ЛевоеЗначение, Тип("ПолеФормы"), Группа);
        НовыйЭлемент.Вид         = ВидПоляФормы.ПолеВвода;
        //НовыйЭлемент.Заголовок   = "Параметр";
        НовыйЭлемент.ПутьКДанным = "КомпоновщикНастроекФормы.Настройки.Отбор[" + инд + "].ЛевоеЗначение";
        НовыйЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
        
        НовыйЭлемент = Элементы.Добавить("ВидСравнения" + ЭлементОтбора.ЛевоеЗначение, Тип("ПолеФормы"), Группа);
        НовыйЭлемент.Вид         = ВидПоляФормы.ПолеВвода;
        //НовыйЭлемент.Заголовок   = "ВидСравнения";
        НовыйЭлемент.ПутьКДанным = "КомпоновщикНастроекФормы.Настройки.Отбор[" + инд + "].ВидСравнения";
        НовыйЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
        
        НовыйЭлемент = Элементы.Добавить("Значение" + ЭлементОтбора.ЛевоеЗначение, Тип("ПолеФормы"), Группа);
        НовыйЭлемент.Вид         = ВидПоляФормы.ПолеВвода;
        //НовыйЭлемент.Заголовок   = "Значение";
        НовыйЭлемент.ПутьКДанным = "КомпоновщикНастроекФормы.Настройки.Отбор[" + инд + "].ПравоеЗначение";
        НовыйЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
        
        инд = инд + 1;
    КонецЦикла;
КонецПроцедуры
19 PCcomCat
 
14.03.18
23:05
Выражаю благодарность Cyberhawk за направление в нужное русло!
20 PCcomCat
 
15.03.18
11:02
О, гуру! Продолжаю разбираться. Помогите опытом или советом!

Есть элемент отбора СКД типа ПеречислениеСсылка.ТакоеТо, который разместила на форме. Мне нужно органичить список выбора элемента с учетом того, что возможен вид сравнения в списке. Задать в схеме не могу, т.к. состав списка задается по определенным условиям.

Делаю:

    СписокСостояний = Новый СписокЗначений;
    ЗаполнитьСписокСостояний(СписокСостояний);
    КомпоновщикНастроекФормы.Настройки.Отбор.ДоступныеПоляОтбора.Элементы[8].ДоступныеЗначения = СписокСостояний;

Это делаю при инициализации в процедуре ИнициализироватьОтбор(). Но при НачалеВыбора проверяю отладчиком ДоступныеЗначения выше указанного элемента, а там опять Неопределено.

Как можно реализовать необходимое мне органичение?
21 Вафель
 
15.03.18
11:05
(20) нужно у элемента формы делать
22 PCcomCat
 
15.03.18
11:26
(21) Хорошо, для ВидСравнения "Равно" я могу это следать, даже пробовала. А вот как быть, когда нужно ВидСравнения "В списке"?
23 Cyberhawk
 
15.03.18
11:27
(22) У элемента формы, огладываясь на текущий вид сравнения
24 PCcomCat
 
15.03.18
11:37
Я не догоняю чего-то...

Если я поставлю ВидСравнения "В списке", например, то открывается типовой подбор в список значений.

Мне подменять форму выбора?
25 cw014
 
15.03.18
11:38
(24) А что должно быть?
26 PCcomCat
 
15.03.18
11:38
Ну, так там мне тоже нужно, чтобы при подборе значений в список значений давался ограниченный вариант.
27 PCcomCat
 
15.03.18
11:40
В моём представлении, как-то надо на начальном этапе в настройки схемы запихивать ограничение, а в элементе, связанном с настройками схемы, должно автоматом отрабатывать ограничение.
Или у меня слишком фантазийное представление?))
28 PCcomCat
 
15.03.18
12:32
Решение череззад, но пока так...

В моем случае создаю две одинаковые схемы, в которых для нужного поля устанавливаю в самой схеме доступные значения.
А в зависимости от моих условий, я получаю настройки нужной схемы.

Буду очень благодарна, если есть у кого опыт программной установки ДоступныхЗначений, поделится вариантом решения.
29 Вафель
 
15.03.18
12:48
может в зависимости от условий саму схему корректировать?
30 Вафель
 
15.03.18
12:49
те при изменяем схему и переинициализируем компоновщик
31 PCcomCat
 
15.03.18
13:12
Мне, в принципе, достаточно при открытии заполнить КомпоновщикНастроек, т.к. элементы его отбора добавляются программно на форму, чтобы пользователю красиво было и наглядно. Они ж у нас ранимые создания!
32 PCcomCat
 
15.03.18
13:14
&НаСервере
Процедура ИнициализироватьОтбор()
    РольДоступна_КорректировкаЗакрытия = РольДоступна("КорректировкаЗакрытия");
    
    //Нужно для реализации ограничения списка выбора для реквизита Состояние
    ИмяМакетаСКД = ?(РольДоступна_КорректировкаЗакрытия, "СхемаКомпоновкиДанных_КорректировкаЗакрытия", "СхемаКомпоновкиДанных");
        
    Обработка =  РеквизитФормыВЗначение("Объект");
    
    СхемаКомпоновкиДанных = Обработка.ПолучитьМакет(ИмяМакетаСКД);
    Настройки = СхемаКомпоновкиДанных.ВариантыНастроек.Основной.Настройки;
    КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
    АдресСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных);
    КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
    КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    КомпоновщикНастроекФормы = КомпоновщикНастроек;
КонецПроцедуры
33 Cyberhawk
 
15.03.18
13:44
А почему кстати используется обработка, а не отчет? Это какая-то типовая обработка, которую потребовалось доработать?
34 PCcomCat
 
15.03.18
14:20
Разработка по тз. Я не всё могу оспорить
35 Cyberhawk
 
15.03.18
14:28
Так зачем оспаривать - просто спроси, мол, чем думал постановщик
36 PCcomCat
 
15.03.18
14:56
(35) Дайте мне испытательный срок пройти!))  Зато с такой постановкой я для себя много нового отрыла))

Я, конечно, спрашивала, вернее говорила, что вот если бы это сделать как отчет, то проблем было бы меньше. На что мне ответили, что какая разница между отчетом и обработкой - одно и то же, делай по ТЗ. Слушаю и временно повинуюсь.
37 Cyberhawk
 
15.03.18
14:59
Ясно. Срок, значит, срок )
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.