Имя: Пароль:
1C
1С v8
Помогите с "ПриВыбореЗначения"
0 Double_Medved
 
15.11.12
16:57
1С 8.2 Торговля. В документе "ЧекККМ" есть реквизит "КартаЛояльности", тип Справочник.КартыЛояльности. Данные о Накоплении и Скидке содержаться в РегистреСведений "КартыЛояльностиСведения". В ЧекККМ есть кнопка "СчитатьКартуЛояльности". Необходимо при выборе карты нажатием этой кнопки делать просмотр данных о Накоплении и Скидке, для чего нужно прочитать Регистр.Это не проблема, но мне нужно привязать к событию которое происходит при окончании выбора карты. Пока я сделал отдельную кнопку "ДанныеПоКарте", которую нужно нажимать после выбора карты. Дело в том что если запихивать код считывания данных по карте в кнопку "СчитатьКартуЛояльности" то он выполняется сразу при ее нажатии, когда только открыли окно выбора карты, а мне нужно чтобы это было тогда когда ее выбрали.
&НаКлиенте
Процедура СчитатьКартуЛояльности(Команда)
   
   Если ТолькоПросмотр Тогда // Чек пробит. Изменение информации запрещено.
       Возврат;
   КонецЕсли;
   
   ОткрытьФорму(
       "Справочник.КартыЛояльности.Форма.СчитываниеКартыЛояльности",
       Неопределено,
       ЭтаФорма,
       ЭтаФорма.УникальныйИдентификатор
   );
           
 
КонецПроцедуры

Процедура ДанныеПоКартеЛояльностиПрочитать(Команда)
   // Вставить содержимое обработчика.
   СкидкаПоКартеПоказать = "";
   НакоплениеПоКартеПоказать = "";
   СчитатьПроцентСкидкиИСуммунакопленияПоКарте(СкидкаПоКартеПоказать,НакоплениеПоКартеПоказать);
   Элементы.СуммаНакопленияПоКартеЛояльности.Заголовок = НакоплениеПоКартеПоказать;
   Элементы.СкидкаПоКартеЛояльности.Заголовок =  СкидкаПоКартеПоказать;
КонецПроцедуры

&НаСервере
Процедура СчитатьПроцентСкидкиИСуммунакопленияПоКарте(СкидкаПоКартеПоказать,НакоплениеПоКартеПоказать)
   НаборЗаписей = РегистрыСведений.КартыЛояльностиСведения.СоздатьНаборЗаписей();
       НаборЗаписей.Прочитать();
       Для Каждого Запись из НаборЗаписей Цикл
           Если Запись.КартаЛояльности.Наименование = Объект.КартаЛояльности.Наименование Тогда
               СкидкаПоКартеПоказать = "Скидка по карте "+ Строка(Запись.ПроцентСкидки) + "%";
               НакоплениеПоКартеПоказать = "Накопление по карте " + Запись.СуммаНакопления + "руб";
           КонецЕсли;
       КонецЦикла;    
КонецПроцедуры
1 Reset
 
15.11.12
17:14
Непонятно, почему для установки значения в реквизит используется кнопка? Почему нельзя сделать поле и обрабатывать событие ПриИзменении("к событию которое происходит при окончании выбора карты")?

Если же приспичило жать кнопку, то можно из формы выбора, например ОповеститьОВыборе() форму-владелец
2 Double_Medved
 
15.11.12
17:22
А, можно из формы выбора оповестить? Спасибо. А если там будет поле, а не кнопка, что вообще все равно для задания, то нужна процедура ПриИзменении("ИмяРеквизита")?