Имя: Пароль:
1C
1С v8
Регистр сведений ЗначениеСвойствОбъектов
,
0 Midzgun
 
28.09.12
16:22
ТорговаяИнформация - реквизит справочника Номенклатура типа Справочник.ТорговаяИнформация (созданный справочник)
ТорговаяИнформация - предопределенный элемент плана видов характеристик СвойстваОбъектов

Вопрос: Почему результат запроса всегда пустой???

Если ЗначениеЗаполнено(ТорговаяИнформация) Тогда
           Запрос = Новый Запрос;
           Запрос.Текст = "ВЫБРАТЬ
                          |    ЗначенияСвойствОбъектов.Значение КАК ТоргИнфо
                          |ИЗ
                          |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
                          |ГДЕ
                          |    ЗначенияСвойствОбъектов.Объект = &Объект
                          |    И ЗначенияСвойствОбъектов.Свойство = &Свойство";
                         
           Запрос.УстановитьПараметр("Объект", Ссылка);
           Запрос.УстановитьПараметр("Свойство", ПланыВидовХарактеристик.СвойстваОбъектов.ТорговаяИнформация);
           РезультатЗапроса = Запрос.Выполнить();
           Если РезультатЗапроса.Пустой() Тогда
               ЗаписьЗнСвОб = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
               ЗаписьЗнСвОб.Объект = Ссылка;
               ЗаписьЗнСвОб.Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.ТорговаяИнформация;
               ЗаписьЗнСвОб.Значение = ТорговаяИнформация;
               
               ЗаписьЗнСвОб.Записать(Истина);
           Иначе
               ВыборкаЗапроса = РезультатЗапроса.Выбрать();
               ВыборкаЗапроса.Следующий();
               Если ВыборкаЗапроса.ТоргИнфо <> ТорговаяИнформация Тогда
                   ЗаписьЗнСвОб = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
                   ЗаписьЗнСвОб.Объект = Ссылка;
                   ЗаписьЗнСвОб.Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.ТорговаяИнформация;
                   ЗаписьЗнСвОб.Значение = ТорговаяИнформация;
                   
                   ЗаписьЗнСвОб.Записать(Истина);
               КонецЕсли;
           КонецЕсли;
       Иначе
           //ЗаписьЗнСвОб.Прочитать();
           //Если ЗаписьЗнСвОб.Выбран() Тогда
               ЗаписьЗнСвОб.Удалить();
           //КонецЕсли;
       КонецЕсли;
1 Maxus43
 
28.09.12
16:27
>>Почему результат запроса всегда пустой
у этого объекта нет такого свойства
2 Midzgun
 
28.09.12
16:30
(1) Дак в том то и дело, что я гляжу в регистр и свойство и значение присвоено.
3 Reset
 
28.09.12
16:30
А зачем в справочнике завели реквизит со свойством, если уже есть свойства объектов?
4 Midzgun
 
28.09.12
16:30
(3) Поторопились :) Исторически сложилось
5 Maxus43
 
28.09.12
16:32
(4) убери условие на свойство и посмотри что выдаст, в консоли просто
6 Midzgun
 
28.09.12
16:36
(5) В консоле результат запроса не пустой :( Что-то здесь не так...
7 Maxus43
 
28.09.12
16:37
от и думай
8 Midzgun
 
28.09.12
16:38
Может быть это потому что выполняется ПриЗаписи номенклатуры? Может такое быть?
9 Жан Пердежон
 
28.09.12
16:38
(8) тогда будет пустым только для новой номенклатуры, а не всегда
10 Midzgun
 
28.09.12
16:39
Сейчас поставлю перед записью, проверю.
11 Midzgun
 
28.09.12
16:41
А вот перед записью отработало - не пустой запрос... Чудеса!
12 Midzgun
 
28.09.12
16:43
Теперь блин не записывает запись в регистр...
13 Midzgun
 
28.09.12
16:55
Ребята в чем причина? Либо запрос пустой, либо не записывает запись в регистр. Платформа 8.14.537.
14 Maxus43
 
28.09.12
16:58
расказывай что делаеш и для чего
15 Maxus43
 
28.09.12
16:58
и где
16 Midzgun
 
01.10.12
08:46
Хочу при записи элемента справочника номенклатуры записывать значение его реквизита в свойство номенклатуры. Для этого ищу запись в регистре сведений "ЗначенияСвойствНоменклатуры" и если она есть и значение отличное от необходимого, то изменяю значение. Если же значение уже стоит нужное, то ничего не делаю. Если нет записи для этой номенклатуры, то создаю. Если нужно записать пустое значение, то удаляю запись из регистра.
Так вот получается, что в зависимости от того куда я прописываю свой кусок кода, у меня либо не записывается запись в регистр, либо не ищется запись (т.е. вроде запись с необходимыми ключевыми полями есть, а запрос все-равно пустой).
17 Midzgun
 
01.10.12
09:14
В общем самый главный вопрос: Почему когда я в модуле справочника номенклатуры с помощью менеджера записи пытаюсь сделать запись в регистр сведений "ЗначенияСвойствНоменклатуры", где объект и есть записываемая номенклатура, то запись в регистр не добавляется?
18 Живой Ископаемый
 
01.10.12
09:16
да. почему?.. что тебе говорит отладчик в этот момент?
19 butterbean
 
01.10.12
09:17
что за манера пользоваться менеджером записи вместо набора записей??
20 Midzgun
 
01.10.12
09:32
(18) Отладчик ничего не сообщает, все строчки кода отрабатывают нормально, а потом смотрю в режиме предприятия в регистр и там нет добавленной записи и все тут
21 Midzgun
 
01.10.12
09:32
(19) Пробовал и набором записей - результат тот же
22 Midzgun
 
01.10.12
09:51
Ура! Тайна покрытая мраком открылась. Просто после записи еще выполняется процедура, которая записывает значения свойств этой номенклатуры, она то и затирает сделанную запись.
23 Midzgun
 
01.10.12
09:54
Все потому что сначала записывается объект, а потом отрабатывает событие закрытия формы.