Имя: Пароль:
1C
1С v8
Как выбирать в поле ввводе на форме реквизит справочника?
,
0 Norbertano
 
25.07.12
14:07
Обычно устанавливают ТипЗначения "СправочникСсылка", а как установить ТипЗначения реквизи справочника.
Мне нужно выбрать на Форме документа реквизит справочника Контрагенты
1 Norbertano
 
25.07.12
14:10
Писал быстро,допустил ошибки
2 Рэйв
 
25.07.12
14:12
Сделай два реквизита. В одном выбирай конра, в другом при изменении контра проставляй значение реквизита
3 Maxus43
 
25.07.12
14:14
что за реквизит надо выбрать?
4 Norbertano
 
25.07.12
14:16
Реквизит дописанный, Контрагент.ТорговаяТочка, ТорговаяТочка привязана к одноименному справочнику
5 Maxus43
 
25.07.12
14:19
(4) из него и выбирай... в чем трабл?
6 Norbertano
 
25.07.12
14:21
В поле ввода я могу выбрать только Справочник, но не могу выбрать реквизит
7 SherifSP
 
25.07.12
14:22
Процедура Обработка реквизита при выборе()
Контрагент = Контрагент.ТорговаяТочка;
КонецПроцедуры
8 SherifSP
 
25.07.12
14:23
(7) Типа как (2)
9 Maxus43
 
25.07.12
14:35
>>ТорговаяТочка привязана к одноименному справочнику
в поле ввода и выбирай из справочника ТорговаяТочка, а не из контрагентов... почему не подходит так?
10 SherifSP
 
25.07.12
14:52
(9)Нужно запутать все)
11 Norbertano
 
25.07.12
14:54
Задача была подчинить справочник "Контрагенты" справочнику "ТорговаяТочка" , в Торговой Точке может быть любое количество контрагентов. Я не стал этого делать из-за возможных проблем потери данных, к тому же теряется иерархия справочника "Контрагенты". Сейчас осталось добиться того, чтобы в документах при выборе Контрагента была доступна в поле "ТорговаяТочка" только Торговая Точка, в которой он сохранен и наоборот, при выборе Торговой Точки были доступны только те контрагенты, которые в ней сохранены. Например

Торговая Точка "Край" |----> ЧП "Киренский И.В."
                     |----> ЧП "Живодеров И.И."
                     |----> Магазин "Алло"
                     |----> Минимаркет "Сокол"

т.е при выборе любого из этих контрагентов, должна быть доступна только торговая точка "Край" и наоборот, при выборе Торговой точки "Край", должны быть доступны только эти контрагенты
12 SherifSP
 
25.07.12
14:56
Рс используй
13 Maxus43
 
25.07.12
14:58
т.е. на форме 2 реквизита, ТОрг точка и контрагент.
КонтрагентНачалоВыбора - там смотриш на реквизит ТорговаяТочка (ТТ), открывеш форму выбора контрагента с отбором по реквизиту ТТ.
ТТНачалоВыбора - смотриш контрагента и его ТТ, и открываеш форму выбора с отбором по нужной ТТ.

Т.е. формы открываеш программно, предварительно устанавливая в них отбор
14 Norbertano
 
25.07.12
16:01
Можете написать структуру выбора с отбором, я это делаю впервые.
15 Norbertano
 
25.07.12
16:01
Учусь потихоньку
16 Norbertano
 
25.07.12
17:54
В справочнике "Торговые точки" значения контрагенты храниться в табличной части,выполняется отбор правильно, но при выборе не сохраняется. Куда смотреть?

Процедура ТорговаяТочкаНачалоВыбора(Элемент, СтандартнаяОбработка)
   
СтандартнаяОбработка = Ложь;

Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
|    ТорговыеТочки.Код
|ИЗ
|    Справочник.ТорговыеТочки КАК ТорговыеТочки
|ГДЕ
|    ТорговыеТочки.Контрагенты.Контрагенты = &Контрагенты";
Запрос.УстановитьПараметр("Контрагенты",Контрагент);     //Контрагенты
РезультатЗапроса = Запрос.Выполнить();

Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл

ФормаВыбора = Справочники.ТорговыеТочки.ПолучитьФормуВыбора( , ЭтаФорма);
ФормаВыбора.Отбор.Код.Использование = Истина;
ФормаВыбора.Отбор.Код.Значение = Выборка.Код;
ФормаВыбора.Открыть();
       
КонецЦикла;


   
КонецПроцедуры
17 Norbertano
 
25.07.12
17:56
Последний цикл был пустой, переменная там для отладки

Пока Выборка.Следующий() Цикл
   a=0;
КонецЦикла;



ФормаВыбора = Справочники.ТорговыеТочки.ПолучитьФормуВыбора( , ЭтаФорма);
ФормаВыбора.Отбор.Код.Использование = Истина;
ФормаВыбора.Отбор.Код.Значение = Выборка.Код;
ФормаВыбора.Открыть();
18 Norbertano
 
25.07.12
18:09
Из-за чего может не сохраняться значение в поле выбора после выбора значения?
19 Norbertano
 
25.07.12
18:30
Запрос можно было не использовать

Процедура ТорговаяТочкаНачалоВыбора(Элемент, СтандартнаяОбработка)
   
СтандартнаяОбработка = Ложь;

ФормаВыбора = Справочники.ТорговыеТочки.ПолучитьФормуВыбора( , ЭтаФорма);
Если ЗначениеЗаполнено(Контрагент.ТорговаяТочка.Код) Тогда
ФормаВыбора.Отбор.Код.Использование = Истина;
ФормаВыбора.Отбор.Код.Значение = Контрагент.ТорговаяТочка.Код;    //ФормаВыбора.Отбор.Код.Значение = Выборка.Код
Иначе
Сообщить("Заполните карточку контрагента, поле <Торговая точка>");    
КонецЕсли;
ФормаВыбора.Открыть();    
   
КонецПроцедуры
20 5 Элемент
 
25.07.12
18:36
А зачем в документах выбирать торговую точку?
21 5 Элемент
 
25.07.12
18:36
Выбрал контрагента, а по нему всегда можно узнать торговую точку.
22 Norbertano
 
25.07.12
18:39
Потому что более важны отчеты в разрезе торговых точек, а не контрагентов
23 Norbertano
 
25.07.12
18:41
Не сохраняется значение отбора и для справочника "Контрагенты", что-то делаю не так

Процедура КонтрагентНачалоВыбора(Элемент, СтандартнаяОбработка)
   
   
Если ЗначениеЗаполнено(ТорговаяТочка) Тогда    
СтандартнаяОбработка = Ложь;

ФормаВыбора = Справочники.Контрагенты.ПолучитьФормуВыбора( , ЭтаФорма);
ФормаВыбора.Отбор.ТорговаяТочка.Использование = Истина;
ФормаВыбора.Отбор.ТорговаяТочка.Значение = ТорговаяТочка;
ФормаВыбора.Открыть();    
КонецЕсли;
   
КонецПроцедуры
24 Norbertano
 
25.07.12
18:52
Разобрался сам
во владельце формы выбора (Элемент), в который выбранное значение передается напрямую...
заменил ЭтаФорма на Элемент
ФормаВыбора = Справочники.Контрагенты.ПолучитьФормуВыбора( , ЭтаФорма);
Независимо от того, куда вы едете — это в гору и против ветра!