Имя: Пароль:
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
Спасибо за советы, так и сделал - записываю только если нет записи по этой карте, то есть если она не была активирована.Реквизит убрал
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn