Имя: Пароль:
1C
1С v8
Работа со свойствами значений объектов через (ПВХ). Поделитесь кусочком кода...
0 temsa
 
10.10.12
12:27
Осваиваю работу в запросах и в скд со свойствами объектов. Привязку через характеристику в СКД освоил - http://1cskd.ru/2011/09/ispolzovanie-xarakteristik-v-skd/
Но вот пока для себя не нашел некий универсальный простой код в которм я могу отбирать прямо в запросе по конкретному названию свойств.

Допустим есть справочник Контрагент в нем есть два свойства "Менеджер" и "Водитель" оба они одного типа.

Как мне отбирать водителей или конкретного водителя? Где в запросе задать  имя "Водитель" или "Мееджер"?
Или хотя бы вывести всех водителей...
1 temsa
 
10.10.12
12:32
Пока токо вот такое смог соорудить.
Статус ="";
   Запрос = Новый Запрос();
   Запрос.Текст =
   "ВЫБРАТЬ
   |ЗначенияСвойствОбъектов.Объект,
   |ЗначенияСвойствОбъектов.Свойство,
   |ЗначенияСвойствОбъектов.Значение как текзнач
   |ИЗ
   | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
   |ГДЕ
   | ЗначенияСвойствОбъектов.Объект = &Контрагент    
   | И ЗначенияСвойствОбъектов.Свойство.Наименование = &НазваниеСтатус";    
   
   Запрос.УстановитьПараметр("Контрагент",  Контрагент);
   Запрос.УстановитьПараметр("НазваниеСтатус", "Статус");
   Выборка = Запрос.Выполнить().Выбрать();
   Если Выборка.Следующий() Тогда
       Статус = Выборка.текзнач;
   КонецЕсли;


Но чую что не совсем гуд. А как это в скд например впихнуть?
2 temsa
 
10.10.12
12:43
Ауууу
3 temsa
 
10.10.12
12:55
(((
4 AndyD
 
10.10.12
12:59
Статус ="";
   Запрос = Новый Запрос();
   Запрос.Текст =
   "ВЫБРАТЬ
   |ЗначенияСвойствОбъектов.Объект,
   |ЗначенияСвойствОбъектов.Свойство,
   |ЗначенияСвойствОбъектов.Значение как текзнач
   |ИЗ
   | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
   |ГДЕ
   | ЗначенияСвойствОбъектов.Объект = &Контрагент    
   | И ЗначенияСвойствОбъектов.Свойство= &Свойство";    
   
   Запрос.УстановитьПараметр("Контрагент",  Контрагент);
   Запрос.УстановитьПараметр("Свойство", планывидовхарактеристик.СвойстваОбъектов..... );
   Выборка = Запрос.Выполнить().Выбрать();
   Если Выборка.Следующий() Тогда
       Статус = Выборка.текзнач;
   КонецЕсли;
5 pumbaEO
 
10.10.12
13:04
Запрос.УстановитьПараметр("НазваниеСтатус", "Статус");
v8: Какой код хуже?
6 temsa
 
10.10.12
13:11
(4) И что мне писать вместо многоточий? Что мне дает такой код?
7 pumbaEO
 
10.10.12
13:17
(6) если не вмешиваешься в конфу и у тебя внешний отчет или обработка, то сделай форму настройки (при первоначальной настройки можешь сделать поиск по наименованию).
Хочешь без настройки ищи по коду, наименованию, uuid и подставляй в запрос. Как в (5) эти варианты уродские.
8 temsa
 
10.10.12
13:19
(7) Спасибо за инфу. ДУмал есть более продвинутые варианты реализации.
9 AndyD
 
10.10.12
13:29
сделай предопределенное значение или константу, если продвинутое надо
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший