Всем привет! На форме документа есть реквизит, при изменении которого выходит сообщение Вопрос("Реквизит изменен! Сохранить изменения?", РежимДиалогаВопрос.ДаНет, 0); Где взять значение этого реквизита, чтобы при положительном ответе сохранить новое значение, а при отрицательном - старое? Использую обработчик события При изменении, в него передается Элемент с типом ПолеФормы. Думала использовать свойства ПутьКДанным, но его значение "Ошибка чтения значения".
По теме из базы знаний
- Проверка измененной конфигурации перед обновлением "боевой" базы
- Изменение реквизитов существующих объектов (документов) 1С без сохранения
- Уведомление пользователей об изменениях в объектах (расширение)
- Интеграция сервиса проверки идентификационных реквизитов юридических лиц по данным ЕГРН и 1С:Предприятие 8
- Поиск изменений реквизитов по версиям в истории документов и справочников с отбором
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) Stella_K, реквизит на форме к примеру "Реквизит1" код обращения к реквизиту формы:
Реквизит1 = "Та переменная с значением которое тебе необходимо оставить"
код обращения к реквизиту объекта:
Объект.Реквизит1 = "Та переменная с значением которое тебе необходимо оставить"
Реквизит1 = "Та переменная с значением которое тебе необходимо оставить"
код обращения к реквизиту объекта:
Объект.Реквизит1 = "Та переменная с значением которое тебе необходимо оставить"
(10) krasavcheg2, Разбираюсь. Я сделала так:
Но думаю, что не так это делается.
Режим = РежимДиалогаВопрос.ДаНет;
Ответ = Вопрос("Признак распределения изменен! Сохранить изменения?", Режим, 0);
Если Ответ = КодВозвратаДиалога.Да Тогда
Если Объект.РаспределятьСумму= Истина Тогда
Объект.РаспределятьСумму = Истина;
Иначе
Объект.РаспределятьСумму = Ложь;
КонецЕсли;
Иначе
Если Объект.РаспределятьСумму = Истина Тогда
Объект.РаспределятьСумму = Ложь;
Иначе
Объект.РаспределятьСумму = Истина;
КонецЕсли;
КонецЕсли;
ПоказатьНо думаю, что не так это делается.
(12) Stella_K, а у вас реквизит, который вы меняете это реквизит объекта или реквизит формы?
Просто если это реквизит формы, тогда вариант:
13. krasavcheg2 13.11.13 12:00
(11) Stella_K, ок не вопрос событие ПриИзменении(Элемент)
код обращения к реквизиту формы:
Реквизит1 = "Та переменная с значением которое тебе необходимо оставить"
код обращения к реквизиту объекта:
Объект.Реквизит1 = "Та переменная с значением которое тебе необходимо оставить"
не прокатит.
Просто если это реквизит формы, тогда вариант:
13. krasavcheg2 13.11.13 12:00
(11) Stella_K, ок не вопрос событие ПриИзменении(Элемент)
код обращения к реквизиту формы:
Реквизит1 = "Та переменная с значением которое тебе необходимо оставить"
код обращения к реквизиту объекта:
Объект.Реквизит1 = "Та переменная с значением которое тебе необходимо оставить"
не прокатит.
(12) Stella_K,
Ваш код можно проще сделать (смотрел только этот код!)
Ваш код можно проще сделать (смотрел только этот код!)
Режим = РежимДиалогаВопрос.ДаНет;
Ответ = Вопрос("Признак распределения изменен! Сохранить изменения?", Режим, 0);
Если Ответ = КодВозвратаДиалога.Да Тогда
Объект.РаспределятьСумму = Элемент;
Иначе
Объект.РаспределятьСумму = не Объект.РаспределятьСумму;
КонецЕсли;
(2) Alximikkk, Я так понимаю можно завязаться на событие "ОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка);" в зависимости от задачи сохранить старое значение в переменой и после твоей проверки присвоить либо старое либо новое значение для реквизита (формы/объекта)
(11) Stella_K, ок не вопрос событие ПриИзменении(Элемент)
код обращения к реквизиту формы:
Реквизит1 = "Та переменная с значением которое тебе необходимо оставить"
код обращения к реквизиту объекта:
Объект.Реквизит1 = "Та переменная с значением которое тебе необходимо оставить"
код обращения к реквизиту формы:
Реквизит1 = "Та переменная с значением которое тебе необходимо оставить"
код обращения к реквизиту объекта:
Объект.Реквизит1 = "Та переменная с значением которое тебе необходимо оставить"
Скорее всего в модуле формы. Но в принципе может быть и отсылка на какой-то клиентский общий модуль. Я думал, что вы в обработчике его вызываете сами. В обработчике "ПриИзменение" в значение "Элемент" уже хранятся измененные данные.
Режим = РежимДиалогаВопрос.ДаНет;
Ответ = Вопрос("Признак распределения изменен! Сохранить изменения?", Режим, 0);
Если Ответ = КодВозвратаДиалога.Да Тогда
Если Реквизит1 = Истина Тогда
Объект.РаспределятьСумму = Истина;
Иначе
Объект.РаспределятьСумму = Ложь;
КонецЕсли;
Иначе
Если Объект.РаспределятьСумму = Истина Тогда
Объект.РаспределятьСумму = Ложь;
Иначе
Объект.РаспределятьСумму = Истина;
КонецЕсли;
КонецЕсли;
Показать
Или для реквизита объекта
Режим = РежимДиалогаВопрос.ДаНет;
Ответ = Вопрос("Признак распределения изменен! Сохранить изменения?", Режим, 0);
Если Ответ = КодВозвратаДиалога.Да Тогда
Если Объект.Реквизит1 = Истина Тогда
Объект.РаспределятьСумму = Истина;
Иначе
Объект.РаспределятьСумму = Ложь;
КонецЕсли;
Иначе
Если Объект.РаспределятьСумму = Истина Тогда
Объект.РаспределятьСумму = Ложь;
Иначе
Объект.РаспределятьСумму = Истина;
КонецЕсли;
КонецЕсли;
Показать
(15) krasavcheg2, Упростите код!!!! зачем эти лишние условия и проверки?!
Режим = РежимДиалогаВопрос.ДаНет;
Режим = РежимДиалогаВопрос.ДаНет;
Ответ = Вопрос("Признак распределения изменен! Сохранить изменения?", Режим, 0);
Если Ответ = КодВозвратаДиалога.Да Тогда
Объект.РаспределятьСумму = Объект.Реквизит1;
Иначе
Объект.РаспределятьСумму = НЕ Объект.РаспределятьСумму;
КонецЕсли;
Вообщем если реквизит объекта, тогда вариант krasavcheg2 подходит, а если это реквизит формы, тогда возможно(как один из вариантов) использовать еще один реквизит, который будет хранить старое значение нужного вам реквизита)
Вообщем я сейчас попробовал варианты разные.
1)При изменение булевского реквизита будь то реквизит объекта, или реквизит формы, в обработчике "При Изменение" уже хранится измененное значение. Тогда необходимо обращаться не к реквизиту объект, а к ссылке в БД, т.е. к Объект.Ссылка.ИмяРеквизита. Вот там хранится старое значение.
1)При изменение булевского реквизита будь то реквизит объекта, или реквизит формы, в обработчике "При Изменение" уже хранится измененное значение. Тогда необходимо обращаться не к реквизиту объект, а к ссылке в БД, т.е. к Объект.Ссылка.ИмяРеквизита. Вот там хранится старое значение.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот