Имя: Пароль:
1C
1С v8
Подскажите пожалуйста с записью объекта
0 Double_Medved
 
28.10.12
22:55
1с 8.2, Торговля. Есть Справочник "КартыЛояльности", в элементе есть кнопка "Активировать", при нажатии которой заносятся некоторые данные в регистр сведений. Необходимо сделать чтобы Активация проходила только один раз, то есть при повторном нажатии на "Активировать" уже не писать никакие данные, а сказать "Карта уже активирована" Для этого сделал реквизит типа булево "Активирована" - должен становиться Истина при первой Активации и так сохраняться. Но он почему-то после закрытия не сохраняется, наверно я как-то не так его записываю.. Помогите плиз

Если Объект.Активирована = Истина
   Тогда Сообщить("Карта уже активирована")
   Иначе ЗаписьРегистр();      
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаписьРегистр()
   МенеджерЗаписи = РегистрыСведений.КартыЛояльностиСведения.СоздатьМенеджерЗаписи();
   МенеджерЗаписи.КартаЛояльности = Объект.Ссылка;
   МенеджерЗаписи.ПроцентСкидки = 3;
   МенеджерЗаписи.СуммаНакопления = 0;
   Попытка    
       МенеджерЗаписи.Записать();
   Исключение
       Сообщить(Описаниеошибки());
   КонецПопытки;
   Объект.Активирована = Истина;
КонецПроцедуры;
1 Double_Medved
 
28.10.12
22:55
Должно наверно быть что-то типа Объект.Записать()?
2 Нуф-Нуф
 
29.10.12
07:13
+1 к записать, но подход в целом не верный. Дополнительный реквизит не требуется. Можешь при попытке активировать смотреть в регистр и при наличии нужных записей выдавать ошибку
3 0xFFFFFF
 
29.10.12
07:27
Да, нафик доп. реквизит. На то он и РС, чтобы различные состояния объекта реквизитами не плодить.
4 Double_Medved
 
29.10.12
12:37
Спасибо за советы, так и сделал - записываю только если нет записи по этой карте, то есть если она не была активирована.Реквизит убрал
Программист всегда исправляет последнюю ошибку.