|   |   | 
| 
 | ЭлементыФормы.ТекущийЭлемент. Событие "ПриИзменении" элемента формы. Обычные ф. | ☑ | ||
|---|---|---|---|---|
| 0
    
        Termopsis 28.03.16✎ 12:04 | 
        Как возможно программно указывать элементу формы что он изменен и нужно отработать событие "ПриИзменении", при переходе к следующему элементу.     | |||
| 1
    
        Termopsis 28.03.16✎ 12:06 | 
        Событие "ПриИзменении" вызывается только когда какой либо текст был изменен в форме. Как программно указать что элемент ф изменен и нужно отработать "ПриИзменении"?     | |||
| 2
    
        Господин ПЖ 28.03.16✎ 12:07 | 
        писать код нормально и таких вопросов не возникнет... за бизнес-логику непосредственно в гуе принято бить по рукам     | |||
| 3
    
        Остап Сулейманович 28.03.16✎ 12:07 | 
        (1) В конце кода программного изменения элемента ф вставить вызов процедуры ПриИзменении().     | |||
| 4
    
        Господин ПЖ 28.03.16✎ 12:07 | 
        выполняй то что внутри ПриИзменении() написано     | |||
| 5
    
        Остап Сулейманович 28.03.16✎ 12:09 | 
        (2) Это еще почему?
 Изменили количество интерактивно - сумму пересчитывать нужно. Изменили программно цену - за пересчет суммы будем бить по рукам? | |||
| 6
    
        Termopsis 28.03.16✎ 12:10 | 
        Например: Я отредактировал элемент и пользователю задается вопрос, "Что собственно делаем?". Если ответ "Нет", то я пишу ЭлФормы.ТекЭл = МойЭл. И курсор не переходит дальше.
 Но если пользователь ничего не изменит и нажмет интер или мышкой кликнет на др.элемент, то он перейдет на др.элемент. А нужно чтоб отрабатывало опять "ПриИзменении" и задавался вопрос.....если опять нет, то опять по кругу. Т.е. не давать пользователю сойти с эл. пока он не выберет "Да" или же "Отмена". | |||
| 7
    
        Господин ПЖ 28.03.16✎ 12:11 | 
        >Изменили программно цену - за пересчет суммы будем бить по рукам?
 в таких случаях дергают функцию пересчитывающую строку... по своему смыслу она находится в "слое бизнес-логики" и с гуем не связана. | |||
| 8
    
        Остап Сулейманович 28.03.16✎ 12:14 | 
        (6) "если пользователь ничего не изменит и нажмет интер или мышкой кликнет на др.элемент" В таком случае за какое такое ПриИзменении может быть базар? Ничего же не изменилось.     | |||
| 9
    
        Остап Сулейманович 28.03.16✎ 12:16 | 
        (7) Какая разница где она находится? Вызов функции может быть инициирован как интерактивными действиями, так и программно.     | |||
| 10
    
        Termopsis 28.03.16✎ 12:16 | 
        (8) Так вот я и хотел узнать можно ли программно указать системе что эл.изменен? Или кодом как то данные менять и система посчитает что эл изменен.     | |||
| 11
    
        Остап Сулейманович 28.03.16✎ 12:19 | 
        (10) Тебе нужно задать вопрос пользователю? Ну так и задай. ЗаДляНаФига изгаляться с непонятными программными вывертами?     | |||
| 12
    
        DDwe 28.03.16✎ 12:21 | 
        (9) Тебе умный вещь говорят, а ты дуркуешь.     | |||
| 13
    
        Господин ПЖ 28.03.16✎ 12:22 | 
        (9) какой же ты тупенький...     | |||
| 14
    
        Termopsis 28.03.16✎ 12:23 | 
        (11) Вопрос уже задается. Варианты ответа "да", "нет", "отмена". Если "нет", то я говорю системе что тек.эл = мой элемент(Вот который и редактировали). но если после ответа на вопрос "Нет" захочет сойти с элемента, то вызвать опять вопрос. Т.е. когда пользователь выбирает "Нет", системе оповещать что редактирование ещё не завершено и при следующем сходе с эл вызывать опять "ПриИзменении". Даже если ничего не изменилось в этом эл.     | |||
| 15
    
        ejikbeznojek 28.03.16✎ 12:26 | 
        (14) Допустим у тебя есть галочка ФГалка у неё есть событие процедура ФГалкаПриИзменении()
 И есть поле ввода ПолеВвода1 и событие Процедура ПолеВвода1ПриИзменении(элемент) Тебе в процедуре ПолеВвода1ПриИзменении() нужно просто написать строчку ФГалкаПриИзменении() | |||
| 16
    
        ejikbeznojek 28.03.16✎ 12:32 | 
        А ещё можешь делать недоступными остальные элементы.
 И разблокировать их в подходящий момент. | |||
| 17
    
        Termopsis 28.03.16✎ 12:33 | 
        (15) И она(ФГалкаПриИзменении) же отработает сразу когда я выберу ответ "Нет". А необходимо когда пользователь сходит с элемента или переходит к другому, не закончив действие здесь. А после первого события "ПриИзменении" система уже не реагирует на переход к другому эл.     | |||
| 18
    
        bolder 28.03.16✎ 12:35 | 
        (9) из бизнес логики дергать код обработки событий гуя есть не гуд.     | |||
| 19
    
        Termopsis 28.03.16✎ 12:36 | 
        (17) Пользователь может как попытаться сойти с элемента(Который даже не изменил), так и продолжить редактирование.     | |||
| 20
    
        Serg_1960 28.03.16✎ 12:39 | 
        PS: автор желает иметь событие "ПотеряФокуса", которого нет в 1С у элементов обычной формы. Желать недостижимое - похвально, реализовывать недостижимое... эээ... Мечтайте уж лучше в пределах разумного :)     | |||
| 21
    
        Termopsis 28.03.16✎ 12:42 | 
        (20) Ох, как желаю))))     | |||
| 22
    
        TormozIT гуру 28.03.16✎ 12:44 | ||||
| 23
    
        Serg_1960 28.03.16✎ 12:48 | 
        (21) Парадаксальное программирование :) Программно закрываешь доступ ко всем элементам формы, кроме текущего. Пока твои требования к значению элемента не будут исполнены - юзверу некуда будет "терять фокус" с элемента.
 PS: Я не я и кобыла не моя. Ежели что - я тебе этого не советовал. | |||
| 24
    
        Termopsis 28.03.16✎ 12:52 | 
        Спасибо всем! Закрывать доступ ко всем элементам....ну как то))))) Буду тогда менять логику решения.     | |||
| 25
    
        Termopsis 28.03.16✎ 14:33 | 
        Мдааа. У кого есть комплексная автоматизация да и др баз могут смело посмотреть как реализовано событие потеря фокуса)))))(20) 
 Документ счет на оплату покупателю. При создании контрагента и ввода по строке. Если не найдет, то задаст вопрос и где ответ "Нет" не даст уйти с поля ввода пока не удалишь текст либо не нажмешь отмена или создашь нового. | |||
| 26
    
        Termopsis 28.03.16✎ 15:57 | 
        Процедура КонтрагентОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
 мТекстРедактированияКонтрагента = Текст; Значение = Текст; СтандартнаяОбработка = Ложь; КонецПроцедуры Т.к. Значение заполнено будет вызвано "ПриИзменении" Процедура ПриИзмененииКонтрагент ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.Контрагент; Контрагент = ""; ЭлементыФормы.Контрагент.ВыделенныйТекст = мТекстРедактированияКонтрагента; КонецПроцедуры | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |