Имя: Пароль:
1C
1С v8
Не получается автоматическая запись свойств при записи элемента номенклатуры
,
0 benzotopor
 
11.04.15
13:36
Здравствуйте, коллеги.

Есть необходимость при записи номенклатуры автоматически записывать свойства в регистр сведений "Значения свойств объектов".

В модуле объекта спр. номенклатура я вставляю процедуру (см. ниже), в отладчике проверяю, что записи регистра появляются, но в режиме предприятия после выхода из процедуры их нет. Проверяю этот же модуль внешней обработкой - работает. Что я упускаю?

Вот модуль:


ПриЗаписи()

        Номенклатура = Ссылка;
        Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("000000012");
        Если Не ЗначениеЗаполнено(Свойство) Тогда
            Сообщить("Не найдено свойство ""Размер"" с кодом ""000000012"".", СтатусСообщения.ОченьВажное);
            Возврат;
        КонецЕсли;

        НаборЗаписей = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.Объект.Установить(Номенклатура);
        НаборЗаписей.Отбор.Свойство.Установить(Свойство);
        НаборЗаписей.Очистить();
                    
            НоваяЗапись = НаборЗаписей.Добавить();
            НоваяЗапись.Объект = Номенклатура;
            НоваяЗапись.Свойство = Свойство;
            НоваяЗапись.Значение = Номенклатура.Реквизит;

        НаборЗаписей.Записать();

КонецПроцедуры
1 benzotopor
 
11.04.15
19:44
up
2 Ma3eIIa
 
11.04.15
19:45
после и в подспику
3 PR
 
11.04.15
19:46
(0) fjxtve ты решил, что не появляются?
4 PR
 
11.04.15
19:46
+(3) Почему
5 Ma3eIIa
 
11.04.15
19:48
(2) а запись в рс лучше в другой модуль и дать ему полные права. ну это феншуй
6 Ma3eIIa
 
11.04.15
19:52
(0) при записи. вроде как объекта точно нет
7 Ma3eIIa
 
11.04.15
19:53
Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("000000012");
        руки бить. доп спр и доп параметры для номенклатуры
8 benzotopor
 
11.04.15
20:53
(2) именно так и делал. через подписку на событие "ПриЗаписи" не срабатывает. После подписки попробовал через модуль объекта - тоже не сработало. Сделал внешнюю обработку - сработало. Почему не работает через модуль и подписку понять не могу.
9 benzotopor
 
11.04.15
20:53
(3) при отладке до выхода из процедуры записи есть. после выхода в регистре сведений в режиме предприятие записи нет. Все отборы, всё 30 раз проверил.
10 benzotopor
 
11.04.15
20:56
(5) пробовал сделать встроенную обработку с экспортной процедурой в модуле объекта. В процедуру помещал код создания записи. Вызывал обработку ПриЗаписи() номенклатуры таким образом:

Обработка = Обработки.Моя.Создать();
Обработка.Номенклатура = ЭтотОбъект.Ссылка;
Обработка.ЭкспортнаяПроцедура();


Тот же самый эффект. При отладке до выхода из процедуры записи есть. после выхода в регистре сведений в режиме предприятие записи нет.
11 benzotopor
 
11.04.15
20:57
(7) Просвети, пожалуйста. Не совсем понял.
12 wertyu
 
11.04.15
21:02
не получается же только у новых элементов
13 wertyu
 
11.04.15
21:22
напиши в скобках: Отказ
14 benzotopor
 
11.04.15
22:56
(12) не получается у любых элементов
(13) там есть отказ, это я на скорую руку код вставлял на форум
15 wertyu
 
11.04.15
23:00
на форму элемента перенеси
16 Сергиус
 
12.04.15
00:00
(0)Может в модуле набора записей регистра "Значения свойств объектов" что-то не дает записать?
17 benzotopor
 
13.04.15
12:20
(15) я в итоге так и сделал, на форме элемента работает. Хочу понимать - почему не работ в модуле объекта
18 benzotopor
 
13.04.15
12:21
(16) модуль набора записей пустой. и через внешнюю обработку записывает
19 benzotopor
 
14.04.15
10:45
up. И все же, коллеги, почему не работает через модуль объекта или через подписку на событие?
20 Поpyчик-4
 
14.04.15
11:17
(19) Транзакция, не?
21 benzotopor
 
15.04.15
18:51
(20) пробовал и с фиксированием транзакции в модуле объекта при записи - не записывает
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший