Имя: Пароль:
1C
 
План видов характеристик. Как получить значение?
0 dva1c
 
19.05.10
07:26
Магазин торгует одеждой. Соответственно, используется план видов характеристик для задания цвета, размера и т.д.
В ценнике (сделан внешней обработкой) нужно печатать значение Размер - большим.
При получении характеристики

СтрокаТаблицы.ХарактеристикаНоменклатуры    Размер: 46, Состав: Хлопок/Эластан, Страна изготовитель: Германия, Фирма: "Gelco", Цвет: Белый    СправочникСсылка.ХарактеристикиНоменклатуры

значение, тип строка, поэтому размер никак не выделяется.
Вопрос: как выдернуть это свойство "Размер" и получить значение "Размер: 46"?
Можно запросом. Приведите примерчик.
Заранее благодарен!
1 dva1c
 
19.05.10
07:48
Как вариант - ткните носом, где про это почитать )
2 dva1c
 
19.05.10
07:50
Есть Габец, Гончаров "Простые примеры разработки". Курю пока этот мануал, но что-то никак (
3 lxndr
 
19.05.10
07:51
(0) размер тянуть из регистра сведений ЗначенияСвойствОбъектов с отбором по объекту-характеристике и свойству - размеру
4 dva1c
 
19.05.10
07:52
(3) Спасибо! Уже что-то.
А кодом как это выглядит?
5 lxndr
 
19.05.10
07:55
ВЫБРАТЬ
   Р.Значение КАК Размер
ИЗ
   РегистрСведений.ЗначенияСвойствОбъектов КАК Р
ГДЕ
   Р.Объект = &Характеристика
   И
   Р.Свойство = &СвойствоРазмер
6 dva1c
 
19.05.10
08:00
(5) Спасибо, еще раз! Вопрос: что передавать в параметрах (&Характеристика, &СвойствоРасмер)?
7 dva1c
 
19.05.10
08:24
lxndr будь добр, напиши подробнее. У меня полный "тупняг" ;)
8 vde69
 
19.05.10
08:27
Характеристика - ссылка на ПВХ
СвойствоРасмер - значение ПВХ
9 dva1c
 
19.05.10
08:27

           Для Тмп = 1 По СтрокаТаблицы.Количество Цикл
               ОбластьЦенника.Параметры.Заполнить(СтрокаТаблицы);
               ОбластьЦенника.Параметры.НоменклатураНаименование        = СтрокаТаблицы.Номенклатура.НаименованиеПолное;
               // два!
               //ОбластьЦенника.Параметры.НоменклатураХарактеристика         = СтрокаТаблицы.ХарактеристикаНоменклатуры;
               ОбластьЦенника.Параметры.ЕдиницаНаименование             = СтрокаТаблицы.ЕдиницаИзмерения;
               ОбластьЦенника.Параметры.Цена                            = СтрокаТаблицы.Цена; //ОбщегоНазначения.ФорматСумм(СтрокаТаблицы.Цена, Валюта, "00");
               ОбластьЦенника.Параметры.ДатаПечати                      = ДатаПечати;
               ОбластьЦенника.Параметры.Организация                     = Организация;
               ОбластьЦенника.Параметры.ОрганизацияНаименование         = Организация;
               //ОбластьЦенника.Параметры.СтрПр                             = СтрокаТаблицы.Номенклатура.СтранаПроисхождения.НаименованиеПолное;
               ОбластьЦенника.Параметры.ХарактеристикаНоменклатуры         = СтрокаТаблицы.ХарактеристикаНоменклатуры;

Вот кусочек кода, где надо получить.
10 dva1c
 
19.05.10
08:28
(8) Спасибо, уважаемый vde69
11 lxndr
 
19.05.10
08:47
(8) не так: Характеристика - СправочникСсылка.ХарактеристикиНоменклатуры
12 vde69
 
19.05.10
09:00
(11) да я все напутал :) бывает...
13 dva1c
 
19.05.10
09:07
(1) В консоли все работает на раз!

ВЫБРАТЬ
   Р.Значение КАК Размер
ИЗ
   РегистрСведений.ЗначенияСвойствОбъектов КАК Р
ГДЕ
   Р.Объект = &Характеристика
   И
   Р.Свойство = &СвойствоРазмер

но установка параметров...

Запрос.УстановитьПараметр("Характеристика", СтрокаТаблицы.ХарактеристикаНоменклатуры)

Как поступить с размером?
14 dva1c
 
19.05.10
09:10
+(13) или неправильно, а надо

Запрос.УстановитьПараметр("Характеристика", СтрокаТаблицы.ХарактеристикаНоменклатуры.ПолучитьОбъект()
15 dva1c
 
19.05.10
09:13
В консоли запросов все делается интерактивно, а надо программно (
16 dva1c
 
19.05.10
09:38
Совсем немного осталось )

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

Надо установить параметр СвойствоРазмер
17 dva1c
 
19.05.10
09:40
Такое ощущения, что я взываю "пустоту" ))
18 Aloex
 
19.05.10
09:43
(16)Запрос.УстановитьПараметр("Характеристика", СтрокаТаблицы.ХарактеристикаНоменклатуры.ПолучитьОбъект()); Это чушь.
Получать обьект не нужно нужна ссылка.
(17) сам поставь по аналогии с "Характеристика"
19 dva1c
 
19.05.10
09:44
(11) Докрути все-таки Запрос.УстановитьПараметр("СвойствоРазмер",...
что писать?
Пожалуйста!
20 dva1c
 
19.05.10
09:45
(18) Оп! не увидел. Получать не буду. Как поступить со свойством?
21 Buster007
 
19.05.10
09:52
Зайди в ПВХ "Свойства объектов" посмотри там Код у свойства "Размер", и далее

Запрос.УстановитьПараметр("СвойствоРазмер", ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("ТвойКод"));
22 Buster007
 
19.05.10
09:53
и я бы тебе не советовал делать это в цикле...
23 dva1c
 
19.05.10
10:06
(21) Спасибо! Посмотрел, проверил.
Получил в отладчике
ВыборкаРезультатаЗапроса.Размер        Неопределено
Т.е. нужно что-то добавить для получения значения

Запрос.УстановитьПараметр("СвойствоРазмер",ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("000000011"));
24 dva1c
 
19.05.10
10:07
+(23) Типа "Значение"? Сча буду проверять.
25 dva1c
 
19.05.10
10:11
(22) Так я и не делаю в цикле. Я делаю в обработке печати ценников.
26 dva1c
 
19.05.10
10:26
После выполнения запроса вылазит все верно, но значение читается неверно.
Из отладчика:
Запрос.Выполнить().Выбрать().Размер        Неопределено
---
Господа! Пробовал разными способами, но не удалось. (((
27 dva1c
 
19.05.10
10:37
В консоли делается интерактивно, все рвботает. В запросе не могу получить значение.
Запрос = Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
   |    Р.Значение КАК Размер
   |ИЗ
   |    РегистрСведений.ЗначенияСвойствОбъектов КАК Р
   |ГДЕ
   |    Р.Объект = &Характеристика
       |    И
   |    Р.Свойство = &СвойствоРазмер";
Запрос.УстановитьПараметр("Характеристика",СтрокаТаблицы.ХарактеристикаНоменклатуры);
Запрос.УстановитьПараметр("СвойствоРазмер",ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("000000011"));
ВыборкаРезультатаЗапроса = Запрос.Выполнить().Выбрать();
--
Помогите получить значение.
28 kn
 
19.05.10
10:39
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Размер = Выборка.Размер;
КонецЕсли;
29 dva1c
 
19.05.10
10:43
(28) Спасибо! Сча проверю.
30 hhhh
 
19.05.10
10:45
да, получается, если чел с улицы, который ни разу не видел 1С, откроет мисту, то он спокойно может решить любую задачу.
31 Buster007
 
19.05.10
10:47
"Запрос.Выполнить().Выбрать().Размер" <-- просто ппц

Автор учи мат часть
32 dva1c
 
19.05.10
10:47
(30) Зачем Вы так. Я не с улицы.
33 kn
 
19.05.10
10:48
он наверно 7-орошник
34 Buster007
 
19.05.10
10:48
+(31) Стаж: 5 г. 3 мес.
Да тупо сидеть и читать чужие сообщения, за столько лет то можно было уж узнать как делать обход по результату запроса...
35 dva1c
 
19.05.10
10:49
(31) Смотрю в отладчике. Пишет "Неопределено"
36 dva1c
 
19.05.10
10:49
(33) Точно
(34) Я читаю не тупо
37 Buster007
 
19.05.10
10:49
(35) мдя... смотри в (28)
38 Buster007
 
19.05.10
10:50
(36) я имел ввиду, что можно просто так сидеть на форуме, и читать сообщения, которые оставляют пользователи, не открывая ни разу книжку и научиться делать обход...
39 dva1c
 
19.05.10
11:02
(38) Если бы можно было зарабатывать этим занятием, то я бы так и поступил. ))
В поиске по форумуЮ на эту тему, пока ничего найти не могу.
(18) проверил, но значение не выдает. Внутрь условия не заходит.
Попытка прочитать значение пока не удается.
40 dva1c
 
19.05.10
11:08
Дело в том, что мне обходить не надо. Надо получить значение после выполнения запроса.
41 kn
 
19.05.10
11:10
(40)не заходит значит запрос пустой, может параметры(их типы)не правильны
42 dva1c
 
19.05.10
12:26
(41) Согласен. Типы, скорее всего, неправильны.
В 1-ом параметре тип:СправочникСсылка.ХарактеристикиНоменклатуры
Во 2-ом параметре тип:ПланВидовХарактеристикСсылка.СвойстваОбъектов
43 kn
 
19.05.10
13:25
типы правильные, а отладчиком смотрел их значения?
44 dva1c
 
19.05.10
13:30
(43) Смотрел. В значении пишет: "Ошибка чтения значения"
45 dva1c
 
19.05.10
13:42
Чето я совсем затупил.
Запрос = Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
   |    Р.Значение КАК Размер
   |ИЗ
   |    РегистрСведений.ЗначенияСвойствОбъектов КАК Р
   |ГДЕ
   |    Р.Объект = &Характеристика
   |    И
   |    Р.Свойство = &СвойствоРазмер";
Запрос.УстановитьПараметр("Характеристика",СтрокаТаблицы.ХарактеристикаНоменклатуры);
Запрос.УстановитьПараметр("СвойствоРазмер", ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("000000011"));
ВыборкаРезультатаЗапроса = Запрос.Выполнить().Выбрать();
Если ВыборкаРезультатаЗапроса.Следующий() Тогда
   Размер = ВыборкаРезультатаЗапроса.Размер;
КонецЕсли;
--
В Размер все как надо!
Всем спасибо!
46 dva1c
 
19.05.10
14:14
Вопрос вдогонку.
Можно получить как в v8: пример работы с "Планы видов характеристик" в 8-ке.
Можно запросом.
Как правильней/оптимальней?
47 kn
 
19.05.10
14:25
а ты сделай замер производительности...(рекомендуют по-моему всё через запросы)
48 dva1c
 
19.05.10
14:28
(47) В свое время, когда было желание изучить 8-ку, посещал курсы. И если мне правильно помниться, то рекомендовали все делать запросом.