Как получить начальное и конечное значения реквизита при изменении его значения

1. NatalyaVP 10.09.14 14:21 Сейчас в теме
Здравствуйте.
1с 8.2 УПП

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

Как получить при изменении значения поля ввода, 1. которое было до изменения, 2. и новое изменённое.

В обработчике события "При изменении" я получаю только последнее значение. А вот как получить начальное значение (до изменения).
Процедура ПолеВвода2ПриИзменении(Элемент)
 	сообщить("знач "+ПолеВвода2);//это уже конечное значение
 	Если ЗначениеЗаполнено(ПолеВвода2) Тогда
 	//какие-либо действия
 	КонецЕсли; 
 КонецПроцедуры


Спасибо.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Salavat 13 10.09.14 14:28 Сейчас в теме
(1) NatalyaVP,
насколько я понял - нужно событие - ОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
4. NatalyaVP 10.09.14 14:32 Сейчас в теме
(2) Salavat, в обработчик "ОбработкаВыбора" программа не заходит
5. Salavat 13 10.09.14 14:38 Сейчас в теме
(4) NatalyaVP, зайдёт, если оно назначено.
11. nomad_irk 76 17.01.22 22:48 Сейчас в теме
(1)для таких случаев заводят реквизит формы/переменную модуля формы и при открытии/изменении присваивают текущее значение, чтобы при последующем изменении получить предыдущее значение.

Перем ТекЗначение;

...........

Процедура ПриИзменении ()
.............
ТекЗначение = ПолеВвода;

КонецПроцедуры
Показать
3. пользователь 10.09.14 14:28
Читать значение реквизита "Путь к данным".
6. пользователь 10.09.14 14:40
(6) Как можно назначить обработчик выбора текстовому полю?
7. mashinist 6 10.09.14 14:52 Сейчас в теме
8. Slypower 2 22.04.20 14:49 Сейчас в теме
Если кому нужно решение
Сделать функцию и сравнивать с ней:

&НаКлиенте
Процедура ДатаПриИзмении()
Если   ДатаДокументаТекущая() = Объект.Дата Тогда
//Обработка
КонецЕсли;
КонецПроцедуры

&НаСервере
Функция ДатаДокументаТекущая()
     Возврат Объект.Ссылка.Дата;
КонецФункции
Показать
adhocprog; taasha25; +2 2 Ответить
9. magolubev 17.01.22 19:06 Сейчас в теме
(8) а если предыдущее значение еще не было записано? Или это вообще реквизит табличной части?
10. Slypower 2 17.01.22 19:51 Сейчас в теме
(9) если объект не записан, о каком начальном значении идет речь? Ваш вопрос не подходит под тему
12. magolubev 19.01.22 09:20 Сейчас в теме
(10) под тему не подходит Ваш код, который работает лишь в одном частном случае - объект уже записан в базу и не изменялся в форме объекта.
Либо уточняйте сразу все ограничения, иначе новички будут пробовать бездумно этот код использовать и считать его правильным
user639750_DrMort; Santa1; vv2; +3 Ответить
13. Slypower 2 19.01.22 13:17 Сейчас в теме
(12) ну кто его знает вопрос: Как получить при изменении значения поля ввода, 1. которое было до изменения, 2. и новое изменённое.
14. Anzhey 17 07.04.23 12:16 Сейчас в теме
Так будет работать при любых и пустых и не пустых ссылках - событие ОкончаниеВводаТекста

&НаКлиенте
Процедура ДатаРегистрацииОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)

	Если Объект.ВремяРаботы.Количество()<>0  тогда
		Результат = Вопрос("Будет очищена таблица сотрудников", РежимДиалогаВопрос.ДаНет, , 
                КодВозвратаДиалога.Да, 
		НСтр("ru = 'Очистка таблицы сотрудников'"));
	
		Если Результат = КодВозвратаДиалога.Нет Тогда
			Объект.ДатаРегистрации =  Объект.ДатаРегистрации ;
			возврат;
		КонецЕсли;
	КонецЕсли;
	
//	Свои действия что надо сделать  
Объект.ВремяРаботы.Очистить();
//	Свои действия что надо сделать  

	Объект.ДатаРегистрации= Дата(Прав(Текст,4),Сред(Текст,4,2),Лев(Текст,2));

КонецПроцедуры
Показать
15. пользователь 07.04.23 12:44
Сообщение было скрыто модератором.
...
16. Altez 257 12.05.23 03:05 Сейчас в теме
(14)
&НаКлиенте
Перем ДатаРаботДоИзменения;


&НаКлиенте
Процедура ДатаРаботОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
	ДатаРаботДоИзменения = Объект.ДатаРабот;
КонецПроцедуры

&НаКлиенте
Процедура ДатаРаботНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	ДатаРаботДоИзменения = Объект.ДатаРабот;
КонецПроцедуры

&НаКлиенте
Процедура ДатаРаботПриИзменении(Элемент)
	Если Объект.УчетВремени.Количество() > 0 Тогда
		ТекстВопроса = НСтр("ru='Табличная часть будет очищена. Продолжить?'");
		ПоказатьВопрос(Новый ОписаниеОповещения("ДатаРаботПриИзмененииЗавершение", ЭтотОбъект, ), ТекстВопроса, РежимДиалогаВопрос.ДаНет);
	КонецЕсли;		

КонецПроцедуры

&НаКлиенте
Процедура ДатаРаботПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
	
	ОтветНаВопрос = РезультатВопроса;
	Если ОтветНаВопрос = КодВозвратаДиалога.Нет Тогда
		Объект.ДатаРабот = 	ДатаРаботДоИзменения; //Смотреть сюда
		Возврат;
	КонецЕсли;
	
	Объект.УчетВремени.Очистить();

КонецПроцедуры

Показать
user639750_DrMort; Brook; yasaniok; +3 Ответить
17. strelec13 20 16.10.23 13:37 Сейчас в теме
Частный пример, если ТЧ "Товары", поле ввода числовое и заголовок "Количество".

&НаКлиенте
Процедура ТоварыКоличествоОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
	Если Элемент.Заголовок = "Количество" Тогда
		ЗначениеЯчейкиТЧДоИзменения = Элементы.Товары.ТекущиеДанные.Количество;
		ЗначениеЯчейкиТЧПослеИзменения = Число(Текст);
		// обработка условия
	КонецЕсли;
КонецПроцедуры
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот