Приветствую, уважаемые коллеги.
На УФ есть несколько (от 5 до 40) чекбоксов (реквизиты типа "булево") при изменении хотя бы одного из которых необходимо менять модифицированность формы на "Истину", дабы анализировать ПередЗакрытием и выдавать пользователю соответствующее предупреждение, если данные не сохранены. Подскажите пожалуйста есть ли какие-либо методы отличные от прописывания в методе ПриИзменении() каждого чекбокса ЭтаФорма.Модифицированность = Истина?
---
Спасибо всем за мнение. Проблему решил следующим образом. Описал метод ВключитьМодифицированностьФормы(), где организовал проверку на текущую модифицированность формы (Если Нет то включить, если Да, то не трогать) и вызываю сей метод ПриИзменении во всех чекбоксах. Далее, ПередЗакрытием проверяю на модифицированность и выдаю пользователю диалог.
Не получилось, страшно сказать, при обходе элементов формы достать, собственно, значение элемента Поле флага (Истина или Ложь), просто не нашел его в свойствах элемента. Изначально хотел ПриСозданииНаСервере перебрать варианты и записать в ТЗ значения всех чекбоксов и ПередЗакрытием сформировать вторую ТЗ и сравнить с первой. Так как первую проблему решить не получилось до второй - сравнений таблиц значений, так и не добрался.
---
```1c
    &НаКлиенте
    Процедура ЭлементФормыПриИзменении(Элемент)
    Модифицированность = Истина;
    КонецПроцедуры
```

а не проще указать, что реквизиты сохраняемые?
---
а вдруг не всегда нужно сохранение?
(1) можно запомнить чекбоксы при открытии, а призакрытии - проверять поменялось что-то или нет, если поменялось спрашивать. Иначе, если пользователь поставит и уберет галку с одного чекбокса - по факту ничего не модифицировалось, а вопрос всплывет.
---
Указал, но сохраняемые реквизиты в моем случае не панацея. Если человек чекнул настройку, забыл сохранить и закрыл форму - это пол беды, метод учета выбранных настроек срабатывает и по кнопке СохранитьНастройки, и ПриЗакрытии формы. Но если человек чекнул настройку, перешел по нескольким страницам формы и забыл ее убрать (не хотел человек сохранять эту настройку, просто поклацать зашел), но при закрытии форма просто закрылась и настройку, сделанную ошибочно сохранила...
(3)Ваш вариант мне видится предпочтительным, но у меня на форме 11 страниц, на каждой от 10 до 40 чекбоксов... Есть варианты короткого обхода всех элементов страниц (групп) формы без непосредственного прописывания их имен?
---
канешна. процедура тогда должна быть одна, а вот вызов хоть из сотни мест - в твоем случае контролов :)
---
ну если все чекбоксы имеют схожее имя, или какой-то префикс имени как "чекбокс33", "чекбокс34" или "чекбоксчтототам1" тогда можно перебирать все элементы формы в цикле и если имя содержит чекбокс, тогда сохранять значение.
---
Спасибо всем за мнение. Проблему решил следующим образом. Описал метод ВключитьМодифицированностьФормы(), где организовал проверку на текущую модифицированность формы (Если Нет то включить, если Да, то не трогать) и вызываю сей метод ПриИзменении во всех чекбоксах. Далее, ПередЗакрытием проверяю на модифицированность и выдаю пользователю диалог.
Не получилось, страшно сказать, при обходе элементов формы достать, собственно, значение элемента Поле флага (Истина или Ложь), просто не нашел его в свойствах элемента. Изначально хотел ПриСозданииНаСервере перебрать варианты и записать в ТЗ значения всех чекбоксов и ПередЗакрытием сформировать вторую ТЗ и сравнить с первой. Так как первую проблему решить не получилось до второй - сравнений таблиц значений, так и не добрался.
---
Поставте галочку в свойстве "Сохраняемые данные", у тех элементов фомы, модифицированность которых нужно контролировать, и потом проверяйте перед закрытием к примеру

Если Модифицированность тогда
        Сообщить("Данные на форме были модифицированы");
КонецЕсли;

Если у формы свойство ЭтаФорма.ТолькоПросмотр = истина, (допустим вы ее открываете из проведенного документа, и устанавливаете при открытии в истину), то такие элементы (у которых установлена галочка "Сохраняемые данны"), не будут доступны для редактирования.