Имя: Пароль:
1C
1С v8
Заполнение строки при отмене редактирования
0 Sem0709
 
03.04.14
16:09
Всем привет. 8.1.14.72
Табличное поле (ТаблицаЗначений), при ОтменаРедактирования строки хочу вернуть прежние значения, если они были изменины. Кроме объявления двух локальных переменных модуля не придумал. Может есть более практичные способы решения зачачи ?

Перем мАдресПолучателя;
Перем мИмяПолучателя;
Процедура ПолучательПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)    
    мЗапись = РегистрыСведений.СоответствиеОбъектовДляОбменаСМТ.СоздатьМенеджерЗаписи();        
    Если НЕ НоваяСтрока Тогда    
        
        мАдресПолучателя = Элемент.ТекущиеДанные.АдресПолучателя;
        мИмяПолучателя = Элемент.ТекущиеДанные.ИмяПолучателя;
        
        мЗапись.КодВнешний = Элемент.ТекущиеДанные.АдресПолучателя;
        мЗапись.КодВнутренний = "ПочтаПолучатель";
        мЗапись.НаименованиеВнешнее = Элемент.ТекущиеДанные.ИмяПолучателя;
        мЗапись.Прочитать();        
    КонецЕсли;    
КонецПроцедуры
Процедура ПолучательПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)    
    Если ОтменаРедактирования Тогда    
        
            Элемент.ТекущиеДанные.АдресПолучателя = мАдресПолучателя;
            Элемент.ТекущиеДанные.ИмяПолучателя = мИмяПолучателя;    
            
    Иначе        
        мЗапись.КодВнешний = Элемент.ТекущиеДанные.АдресПолучателя;
        мЗапись.КодВнутренний = "ПочтаПолучатель";
        мЗапись.НаименованиеВнешнее = Элемент.ТекущиеДанные.ИмяПолучателя;                
        Попытка
            мЗапись.Записать(ложь);
        Исключение
            Предупреждение("Адрес уже добавлен.",,"Внимание!");
            Отказ = Истина;
            Возврат;
        КонецПопытки;        
    КонецЕсли;    
КонецПроцедуры
1 Defender aka LINN
 
03.04.14
16:18
Объявить одну переменную - структуру
2 Defender aka LINN
 
03.04.14
16:18
+(1) Но вообще за такое неплохо бы пинка хорошего отвесить.
3 Sem0709
 
03.04.14
16:25
(2) За структуру или мой вариант ? Если за мой, отвесь(!) более развернуто)
4 mikecool
 
03.04.14
16:31
перед началом редактирования сохранить
потом анализировать
5 Sem0709
 
03.04.14
16:38
(4) ПередНачаломИзменения() это имеешь ввиду ?
6 mikecool
 
03.04.14
16:41
(5) наверное, я не помню все события наизусть
7 Defender aka LINN
 
03.04.14
21:25
(3) За твой вариант.
Я уже прямо вижу, как юзер заполнил N-1 полей, попытался ввести что-нибудь неправильное в последнее, его 1С послала и он нажал на ESC.
http://cdn.alltheragefaces.com/img/faces/large/rage-classic-l.png
8 shuhard
 
03.04.14
21:27
(7) нормальная практика

у меня все бизнес-правила на подписках перед записью
и черта лысого ты сохранишь не валидный документ
9 Defender aka LINN
 
03.04.14
21:40
(8) А ты далеко от пользователей сидишь, да? :)
Идеология от 1С: "сохранить ты что угодно можешь, ты попробуй провести". И я таки с ней согласен - иди и расскажи манагеру, который полдня документ набирал, с трудом по клавишам попадая, что он его не может записать, когда в здании свет вырубили и у него бесперебойник уже пищит на последнем издыхании.
10 User_Agronom
 
03.04.14
21:43
(8) Почему так строго? Пусть сохраняет, но не проводит.