Как получить начальное и конечное значения реквизита при изменении его значения
Здравствуйте.
1с 8.2 УПП
Во внешней обработке на форме я создала поле ввода, тип значения число.
Сначала я завожу значение (любое число) - это начальное значение.
Потом мне нужно изменить значение, я завожу другое число - это конечное значение.
Как получить при изменении значения поля ввода, 1. которое было до изменения, 2. и новое изменённое.
В обработчике события "При изменении" я получаю только последнее значение. А вот как получить начальное значение (до изменения).
Спасибо.
1с 8.2 УПП
Во внешней обработке на форме я создала поле ввода, тип значения число.
Сначала я завожу значение (любое число) - это начальное значение.
Потом мне нужно изменить значение, я завожу другое число - это конечное значение.
Как получить при изменении значения поля ввода, 1. которое было до изменения, 2. и новое изменённое.
В обработчике события "При изменении" я получаю только последнее значение. А вот как получить начальное значение (до изменения).
Процедура ПолеВвода2ПриИзменении(Элемент)
сообщить("знач "+ПолеВвода2);//это уже конечное значение
Если ЗначениеЗаполнено(ПолеВвода2) Тогда
//какие-либо действия
КонецЕсли;
КонецПроцедуры
Спасибо.
По теме из базы знаний
- Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2. Переносятся начальные остатки, документы и справочники
- Перенос данных из УПП 1.3 / КА 1.1 в БП 3. Переносятся документы, справочники и начальные остатки
- Оповещение об изменении публикации: обработки/конфигурации.
- Как сдать экзамен 1С:Специалист по платформе?
- Как мы подружили "1С:Аналитику" и "Финансист". Практический опыт
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)для таких случаев заводят реквизит формы/переменную модуля формы и при открытии/изменении присваивают текущее значение, чтобы при последующем изменении получить предыдущее значение.
Перем ТекЗначение;
...........
Процедура ПриИзменении ()
.............
ТекЗначение = ПолеВвода;
КонецПроцедуры
Показать
Если кому нужно решение
Сделать функцию и сравнивать с ней:
Сделать функцию и сравнивать с ней:
&НаКлиенте
Процедура ДатаПриИзмении()
Если ДатаДокументаТекущая() = Объект.Дата Тогда
//Обработка
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ДатаДокументаТекущая()
Возврат Объект.Ссылка.Дата;
КонецФункции
Показать
(10) под тему не подходит Ваш код, который работает лишь в одном частном случае - объект уже записан в базу и не изменялся в форме объекта.
Либо уточняйте сразу все ограничения, иначе новички будут пробовать бездумно этот код использовать и считать его правильным
Либо уточняйте сразу все ограничения, иначе новички будут пробовать бездумно этот код использовать и считать его правильным
Так будет работать при любых и пустых и не пустых ссылках - событие ОкончаниеВводаТекста
&НаКлиенте
Процедура ДатаРегистрацииОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
Если Объект.ВремяРаботы.Количество()<>0 тогда
Результат = Вопрос("Будет очищена таблица сотрудников", РежимДиалогаВопрос.ДаНет, ,
КодВозвратаДиалога.Да,
НСтр("ru = 'Очистка таблицы сотрудников'"));
Если Результат = КодВозвратаДиалога.Нет Тогда
Объект.ДатаРегистрации = Объект.ДатаРегистрации ;
возврат;
КонецЕсли;
КонецЕсли;
// Свои действия что надо сделать
Объект.ВремяРаботы.Очистить();
// Свои действия что надо сделать
Объект.ДатаРегистрации= Дата(Прав(Текст,4),Сред(Текст,4,2),Лев(Текст,2));
КонецПроцедуры
Показать
(14)
&НаКлиенте
Перем ДатаРаботДоИзменения;
&НаКлиенте
Процедура ДатаРаботОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ДатаРаботДоИзменения = Объект.ДатаРабот;
КонецПроцедуры
&НаКлиенте
Процедура ДатаРаботНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДатаРаботДоИзменения = Объект.ДатаРабот;
КонецПроцедуры
&НаКлиенте
Процедура ДатаРаботПриИзменении(Элемент)
Если Объект.УчетВремени.Количество() > 0 Тогда
ТекстВопроса = НСтр("ru='Табличная часть будет очищена. Продолжить?'");
ПоказатьВопрос(Новый ОписаниеОповещения("ДатаРаботПриИзмененииЗавершение", ЭтотОбъект, ), ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДатаРаботПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ОтветНаВопрос = РезультатВопроса;
Если ОтветНаВопрос = КодВозвратаДиалога.Нет Тогда
Объект.ДатаРабот = ДатаРаботДоИзменения; //Смотреть сюда
Возврат;
КонецЕсли;
Объект.УчетВремени.Очистить();
КонецПроцедуры
Показать
Частный пример, если ТЧ "Товары", поле ввода числовое и заголовок "Количество".
&НаКлиенте
Процедура ТоварыКоличествоОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
Если Элемент.Заголовок = "Количество" Тогда
ЗначениеЯчейкиТЧДоИзменения = Элементы.Товары.ТекущиеДанные.Количество;
ЗначениеЯчейкиТЧПослеИзменения = Число(Текст);
// обработка условия
КонецЕсли;
КонецПроцедуры
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот