Имя: Пароль:
1C
1С v8
Не работает запрос ЗначенияСвойствОбъектов
0 korchak
 
09.08.12
10:54
Помогите разобраться где ошибка?
Вот этот код работает!!

Запрос = Новый Запрос;
   
   Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Банк бенефициант контрагента");    

   Запрос.Текст =
   "ВЫБРАТЬ
   |    ЗначенияСвойствОбъектов.Значение КАК БанкБенефициант,
   |    ЗначенияСвойствОбъектов.Свойство,
   |    ЗначенияСвойствОбъектов.Объект
   |ИЗ
   |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
   |ГДЕ
   |    ЗначенияСвойствОбъектов.Объект = &Объект
   |    И ЗначенияСвойствОбъектов.Свойство = &Свойство";
   
   Запрос.УстановитьПараметр("Объект", Контрагент);
   Запрос.УстановитьПараметр("Свойство", Свойство);
   Результат = Запрос.Выполнить().Выбрать();
   Если Результат.Следующий() Тогда
       Возврат Результат.БанкБенефициант;
   Иначе
       Возврат Справочники.БанковскиеСчета.ПустаяСсылка();
   КонецЕсли;
1 Alex S D
 
09.08.12
10:55
непонятно, работает же, чего ты хочешь
2 Wobland
 
09.08.12
10:55
работает? ошибка в ДНК
3 Лефмихалыч
 
09.08.12
10:56
(0) код рабочий, огибка не в этом коде
4 korchak
 
09.08.12
10:58
А вот вот этот код не работает!

Запрос = Новый Запрос;
   
   Запрос.Текст =
   "ВЫБРАТЬ
   |    ЗначенияСвойствОбъектов.Значение КАК БанкБенефициант,
   |    ЗначенияСвойствОбъектов.Свойство,
   |    ЗначенияСвойствОбъектов.Объект
   |ИЗ
   |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
   |ГДЕ
   |    ЗначенияСвойствОбъектов.Объект = &Объект
   |    И ЗначенияСвойствОбъектов.Свойство = ЗНАЧЕНИЕ(ПланВидовХарактеристик.СвойстваОбъектов.Т_БанкБенефициантКонтрагента)";
   Запрос.УстановитьПараметр("Объект", Контрагент);
   Результат = Запрос.Выполнить().Выбрать();
   Если Результат.Следующий() Тогда
       Возврат Результат.БанкБенефициант;
   Иначе
       Возврат Справочники.БанковскиеСчета.ПустаяСсылка();
   КонецЕсли;
5 korchak
 
09.08.12
10:58
Предопределенный вид характеристики задан...
6 salvator
 
09.08.12
10:59
(4) Продолжайте наблюдение
7 korchak
 
09.08.12
10:59
дык уже час продолжаю наблюдение...безрезультатно
8 ДемонМаксвелла
 
09.08.12
11:00
ну а свойство зачем убрал?
9 korchak
 
09.08.12
11:00
так здесь же задаю свойство...
ЗНАЧЕНИЕ(ПланВидовХарактеристик.СвойстваОбъектов.Т_БанкБенефициантКонтрагента)
10 Lex_Liven
 
09.08.12
11:01
(4) "А вот этот код не работает." Как именно он не работает? Выдает ошибку? Ничего не отбирает?
11 hhhh
 
09.08.12
11:02
(9) сами значения с этим новым свойством забыли в регистр записать.
12 korchak
 
09.08.12
11:04
в отладчике Результат.БанкБенефициант выдает "Ошибка чтения значения"
13 Maxus43
 
09.08.12
11:04
а так работает если в (0) вставить: Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.Т_БанкБенефициантКонтрагента;
14 korchak
 
09.08.12
11:05
в отладчике выдает Результат.БанкБенефициант "Ошибка чтения значения"
15 acsent
 
09.08.12
11:05
очевидно же что свойства разные
16 korchak
 
09.08.12
11:07
нет, значения свойства записаны в элементе справочника Контрагенты
17 korchak
 
09.08.12
11:08
первый вариант же работает... значит значения записаны верны в регистр
18 ssh2006
 
09.08.12
11:09
(16) Добавь в первый запрос, который "работает" условие

И &Свойство = ЗначенияСвойствОбъектов.Свойство = ЗНАЧЕНИЕ(ПланВидовХарактеристик.СвойстваОбъектов.Т_БанкБенефициантКонтрагента)

Сработает?
19 Лефмихалыч
 
09.08.12
11:09
20 Lex_Liven
 
09.08.12
11:09
(16) Эмм... А само значение предопреденного свойства в конфигурации заполнено?
21 korchak
 
09.08.12
11:15
нет, не заполнено значение предопределенного свойста, только вид характеристики. А где его заполнять там?
22 Lex_Liven
 
09.08.12
11:17
там, где заполняете значения свойств. Как заполняли БанкБенефициант, также заполните и Т_БанкБенефициант
23 korchak
 
09.08.12
11:22
честно говоря, не понял где...
в предопределенном виде характеристики только: имя, код, наименование, тип
имя - Т_БанкБенефициантКонтрагента
код - 00000001000
наименование - Банк бенефициант контрагента
Тип - СправочникСсылка.БанковскиеСчета
24 korchak
 
09.08.12
11:28
как вводить значение предопределенного вида характеристики? в режиме конфигуратора или в режиме 1С Предприятия?
25 Lex_Liven
 
09.08.12
11:28
Не в конфигураторе, а в предприятии.
26 korchak
 
09.08.12
11:31
а чем добавлять? обработкой Значения свойств объектов?
27 Lex_Liven
 
09.08.12
11:33
Вы чем добавляли банк бенефициант, когда он не был предопределенным? Вот там же и добавьте второе свойство, Т_БанкБенефициант с нужным значением.
28 korchak
 
09.08.12
11:37
хорошо, я понял... я добавлю на вкладке "Свойства" элемента справочника контрагенты второе свойство - Т_БанкБенефициант
29 Lex_Liven
 
09.08.12
11:38
(28) именно.
30 korchak
 
09.08.12
11:39
но в чем тогда смысл предопределенного вида характеристики? где проявляеться его "предопределенность"? простите за, возможно, ламерские вопросы...
31 Lex_Liven
 
09.08.12
11:40
В списке "Свойства объектов" он будет всегда.
В конфигурации ты можешь обратиться к нему через точку, что будет быстрее, нежели "НайтиПоНаименованию".
32 korchak
 
09.08.12
11:42
понял! большое спасибо всем!!! особенно Lex Liven!
33 Lex_Liven
 
09.08.12
11:43
(32) Не за что. Ты скажи, помогло, нет? Или решил нафиг-нафиг?
34 korchak
 
09.08.12
11:58
Честно говоря не очень...
ЗНАЧЕНИЕ(ПланВидовХарактеристик.СвойстваОбъектов.Т_БанкБенефициантКонтрагента) все также не работает...
для конкретного контрагента свойство с наименованием "Банк бенефициант контрагента" записано; наименование свойства соответствует наименованию предопределенного вида характеристики "Банк бенефициант контрагента".
Проверил появляется ли оно в списке обязательных, записал новый элемент справочника, появилось как обязательное на вкладке свойство.
А код
Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Банк бенефициант контрагента")
работает!
Т.е. свойство по наименованию ищет, через точку СвойстваОбъектов.Т_БанкБенефициантКонтрагента нет...
не понимаю что я сделал не так
35 korchak
 
09.08.12
12:04
хочеться чтоб через точку работало... ведь завтра пользователь изменит по своему усмотрению наименование свойства и код поиска по наименованию уже не сработает...
36 Lex_Liven
 
09.08.12
12:04
А в первом запросе если сделать

Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.Т_БанкБенефициантКонтрагента;

так работает?
37 korchak
 
09.08.12
12:33
Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.Т_БанкБенефициантКонтрагента;
...
|ЗначенияСвойствОбъектов.Значение КАК БанкБенефициант,
...
|И ЗначенияСвойствОбъектов.Свойство = &Свойство";
Запрос.УстановитьПараметр("Свойство", Свойство);
...
Результат.БанкБенефициант


С этим кодом Результат.БанкБенефициант - ошибка чтения значения. Хотя переменная Свойство содержит ссылку на свойство с наименованием "Банк бенефициант контрагента"


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


А этот код работает!!
38 Lex_Liven
 
09.08.12
12:37
И у контрагента, которого ты сюда передаешь заполнены оба свойства? Кстати, дай временно им разные наименования - может перепутались?
39 acsent
 
09.08.12
12:38
(37) сделай
Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.Т_БанкБенефициантКонтрагента;
Сообщить(Свойство.УникальныйИдентификатор());
Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Банк бенефициант контрагента");
Сообщить(Свойство.УникальныйИдентификатор());
40 korchak
 
09.08.12
12:40
я по-моему нашел ошибку... это разные свойства, у них одинаковые наименования, но разные кода, да и свойство предопреленный у одного из них Ложь...
41 ssh2006
 
09.08.12
12:43
Congratulations
см (15), (18)
42 korchak
 
09.08.12
12:47
удалил "неправильное" свойство...  автоматом не добавился предопределенный элемент, я так понял, что он только при создании нового элемента добавляеться. А как добавить предопределенный? добавить вручную с правильным наименованием и код вручную отредактировать??
43 Lex_Liven
 
09.08.12
12:51
Послушай, он предопределен только для списка возможных свойств. Когда ты присваиваешь контрагенту нужный банк - ты добавляешь Значение этого свойства. Работаешь ты с этим значением точно также, как и со значениями любых других свойств.
Если у тебя на каждого контрагента заведено свойство "Банк бенефициант" с каким-то значением, то, после добавления нового предопределенного свойства, тебе нужно прописать его точно также всем контрагентам.
44 korchak
 
09.08.12
13:04
У контрагентов не заведено никаких свойств, подобных "Банк бенефицианта". Я сейчас добавил новое предопределенное свойство "Банк бенефициант контрагента". Как мне в существующих контрагентов добавить это предопределенное свойство, чтоб запрос работал и не выдавал снова ошибка чтения значений? Прописать каждому контрагенту свойство с наименованием "Банк бенефициант контрагента"?
45 hhhh
 
09.08.12
13:27
(44) ну там в плане видов характеристик. Там папочки: номенклатура, склады, контрагенты. Ты должен задвинуть твое новое свойство в папочку контрагенты.

Это называется: назначение свойств объектов.
46 korchak
 
09.08.12
13:35
понял, спасибо!