Имя: Пароль:
1C
 
открыть форму списка справочника с отбором по определенной группе
0 fdgd98
 
28.01.15
15:46
Ребят помогите с проблемкой

Есть справочник1 с группами: гр1, гр2 в которых содержатся данные.
Есть отчет у которого на форме есть поле (с типом справочникссылка на справочник1) при нажатии на который выходит форма списка справочника1. Также в форме отчета есть поле: где можно выбрать гр1 или гр2

Как открыть форму списка где будут показываться данные с группой "гр1" например?

вот что примерно наделал...но это отбор делается по реквизиту (если "элементизбухгалтерии" = истина то такие элементы показывать) а вот как делается отбор по группе...не знаю
1 fdgd98
 
28.01.15
15:48
СтандартнаяОбработка = ложь;
    гр = Отчет.гр;
    
    результат = истина;
    ЗначениеОтбора = Новый Структура;
    ЗначениеОтбора.Вставить("ЭлементИзБухгалтерии", результат);
    ПараметрыВыбора = Новый Структура;
    ПараметрыВыбора.Вставить("Отбор", ЗначениеОтбора);
    Результат = ОткрытьФормуМодально("Справочник.Номенклатура.ФормаВыбора",ПараметрыВыбора, Элемент)
2 fdgd98
 
28.01.15
15:55
ап
3 ktvladimir
 
28.01.15
15:55
Вы можете добавить свой параметр в структуру, а в форме выбора обработать этот параметр и изменить вид сравнения

P.S. не увлекайтесь модальными формами. Это зло
4 fdgd98
 
28.01.15
15:58
(3) но как мне передать имя группы в структуру?
5 ktvladimir
 
28.01.15
16:13
да к примеру

   ПараметрыВыбора.Вставить("ТекГруппа", гр);

В форме выбора
При создании на сервере
Если Параметры.Свойство("ТекГруппа") Тогда //Проверяем наличие такого параметра
    ЭлементОтбораДанных= Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбораДанных.ВидСравнения = ВидСравненияОтбора;
    ЭлементОтбораДанных.ПравоеЗначение = ПравоеЗначение;
    ЭлементОтбораДанных.Использование = Истина;
КонецЕсли;
6 ktvladimir
 
28.01.15
16:16
да и левое значение конечно же
ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Список.Ссылка");


ВидСравненияОтбора = ВидСравненияКомпоновкиДанных.ВИерархии
7 fdgd98
 
28.01.15
16:41
(5) в форме выбора отчета? или справочника1?
8 ktvladimir
 
28.01.15
16:42
конечно же в форме выбора справочника
9 fdgd98
 
28.01.15
16:52
(8) смотри, что наделал я:

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если Параметры.Свойство("ТекГруппа") Тогда //Проверяем наличие такого параметра
    ЭлементОтбораДанных= Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбораДанных.ПравоеЗначение = ПравоеЗначение;
    ЭлементОтбораДанных.Использование = Истина;
    ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Список.Ссылка");
    ВидСравненияОтбора = ВидСравненияКомпоновкиДанных.ВИерархии;
    КонецЕсли;
КонецПроцедуры

что писать в правом и левом значении?
10 ktvladimir
 
28.01.15
17:00
почему вид сравнения равно? тебе же вроде нужно было получить список элементов из группы?
правое значение это собственно ссылка на группу те Параметры.ТекГруппа (Если ты в отчете добавлял параметр    ПараметрыВыбора.Вставить("ТекГруппа", гр);
левое значение это сосбвенно описание поля по которому требуется отбор.
11 ktvladimir
 
28.01.15
17:02
ВидСравненияОтбора = ВидСравненияКомпоновкиДанных.ВИерархии;
ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;

лишнее
поставь

ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.ВИерархии;

и... ты хоть постарайся понять, а не просто копируй.... я к примеру пишу от руки, мне часто влом лезть в конфигрутаор чтоб правильно написать синтаксис и прочее
12 Euguln
 
28.01.15
17:02
ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.ВИерархии;
    ЭлементОтбораДанных.ПравоеЗначение = Параметры.ТекГруппа;
13 fdgd98
 
28.01.15
17:03
(10) вот с левым значением беда...
14 ktvladimir
 
28.01.15
17:04
... какая ссылка в форме выбора? у тебя есть список и реквизиты в нем посмотри на форме как называется твой список и посмотри название реквизиты по которому ты хочешь сравнение сделать
15 ktvladimir
 
28.01.15
17:05
Новый ПолеКомпоновкиДанных("Список.Ссылка"); вероятнее всего... но как у тебя называются реквизиты это только ты знаешь
16 Адский плющ
 
28.01.15
17:09
(0) Используй параметр "ФиксированныеНастройки", не мучай форму списка.