Флажок в табличной части справочника (документа) УФ

1. Qupkbe 21.10.21 10:12 Сейчас в теме
Приветствую!
Нужен флажок в табличной части, например справочника, для выполнения некоторых действий с отобранными строками. Сохранения состояния флажков не требуется.
Добавляю колонку реквизита с типом - Булево, флажок появляется. И вроде бы все как надо, но при интерактивной установке флажков при закрытии формы появляется запрос о сохранении изменений. Причем при программной установке флажков вопроса о сохранении изменений нет. Можно ли по-простому исправить ситуацию? Включение отбора не прижилось, нужны именно хорошо заметные флажки.
Прикрепленные файлы:
Флажки.dt
По теме из базы знаний
Найденные решения
7. provadyuga 99 21.10.21 11:29 Сейчас в теме
Чтобы по щелчку на крыжик в таблице справочник не запрашивал сохранение, добавьте обработчик события
&НаКлиенте
Процедура ВидыНоменклатурыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
	
	ИмяКолонки = ЭтаФорма.Элементы.ВидыНоменклатуры.ТекущийЭлемент.Имя;
	
	Если ИмяКолонки = "ВидыНоменклатурыРеквизит1" Тогда
		ЭтаФорма.Модифицированность = ложь;
	КонецЕсли;	
	
КонецПроцедуры
Показать
11. soft_wind 21.10.21 11:43 Сейчас в теме
да, как-то в обычной программной рутине и не обращаешь на такие нюансы внимания,
вот ваша база, пришлось перехватить тройку событий, для корректной работы признака Модифицированности.
посмотрите может подойдет
Прикрепленные файлы:
Флажки.dt
19. Release 21.10.21 14:42 Сейчас в теме
Сделал так:
&НаКлиенте
Процедура ВидыНоменклатурыПередНачаломИзменения(Элемент, Отказ)
	Если Элемент.ТекущийЭлемент.Имя = "ВидыНоменклатурыРеквизит1" Тогда
		Отказ = Истина;
		
		Элемент.ТекущиеДанные.Флажок = Не Элемент.ТекущиеДанные.Флажок;
	КонецЕсли;
КонецПроцедуры
Показать

Вроде работает. ВидыНоменклатурыРеквизит1, так у автора элемент флажка на форме называется.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. -AI- 21.10.21 10:27 Сейчас в теме
(1)
Сохранения состояния флажков не требуется.


вложение не смотрел, но предположу что флажки - это реквизит объекта?

если так, то сделай те их реквизитом формы..
(есть такая возможность, на форме добавить реквизиты табличным частям)
elabor; parker_j; LIL_PIVO; +3 Ответить
3. LIL_PIVO 1 21.10.21 10:27 Сейчас в теме
В обработчике события при изменении колонки "Флажка", работайте со свойством ЭтаФорма.Модифицированность
provadyuga; +1 Ответить
9. Qupkbe 21.10.21 11:37 Сейчас в теме
(3) Этот способ ничего не меняет к сожалению - если отрабатывать событие ПриИзменении флажка. Но в обработчике ПриОкончанииРедактирования таблицы формы работает как нужно, спасибо!
4. parker_j 21.10.21 10:34 Сейчас в теме
(1) Смотрите на (3)
ЭтаФорма.Модифицированность = Ложь;
5. gybson 21.10.21 10:36 Сейчас в теме
Галку "Изменяет данные" уберите
6. soft_wind 21.10.21 11:08 Сейчас в теме
(5) в упр.формах по этому элементу нет такой галки: Изменяет данные :-(
7. provadyuga 99 21.10.21 11:29 Сейчас в теме
Чтобы по щелчку на крыжик в таблице справочник не запрашивал сохранение, добавьте обработчик события
&НаКлиенте
Процедура ВидыНоменклатурыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
	
	ИмяКолонки = ЭтаФорма.Элементы.ВидыНоменклатуры.ТекущийЭлемент.Имя;
	
	Если ИмяКолонки = "ВидыНоменклатурыРеквизит1" Тогда
		ЭтаФорма.Модифицированность = ложь;
	КонецЕсли;	
	
КонецПроцедуры
Показать
10. FatPanzer 21.10.21 11:39 Сейчас в теме
(7) А если перед этим были изменены важные реквизиты и Модифицированность была Истина? Все равно сбросите её в Ложь?

Ответ уже дан в (2) - в такой ситуации надо использовать реквизиты формы, у них есть свойство "Сохраняемые данные" - именно оно влияет на ведение флага "Модифицированность". А то, что является непосредственным реквизитом Объекта (на уровне метаданных) - ВСЕГДА будет изменять флаг "Модифицированность", ибо данные объекта всегда сохраняемые (на то он и Объект).

UPD. Если реквизит формы добавлен в качестве колонки к реальной ТЧ Объекта - попробуйте снять у него флаг "Использовать всегда".
provadyuga; +1 Ответить
13. Qupkbe 21.10.21 13:15 Сейчас в теме
(10) Не понимаю, как в одной таблице одновременно разместить поле реквизита формы и поле реквизита объекта. У таблицы есть свойство ПутьКДанным. Пусть это свойство ссылается на Объект. На таблицу формы я добавляю поле. Для того, чтобы можно было выбрать Вид этого поля нужно заполнить его ПутьКДанным, а кроме как сослаться на реквизиты Объекта возможности нет.
14. FatPanzer 21.10.21 13:26 Сейчас в теме
(13)
На таблицу формы я добавляю поле.
а кроме как сослаться на реквизиты Объекта возможности нет.

Все верно. А вы раскройте в дереве реквизитов Объект, встаньте на нужную ТабличнуюЧасть и нажмите сверху (или ПКМ) "Добавить колонку реквизита". Колонка добавится в таблицу красным цветом. И вот на неё вы будете ссылаться из табличного поля формы. А сохраняться она не будет.
15. Qupkbe 21.10.21 13:35 Сейчас в теме
(14)В той конфигурации, что я выложил в главном посте так и было изначально сделано, но тем не менее Вопрос при сохранении возникает
Прикрепленные файлы:
8. provadyuga 99 21.10.21 11:31 Сейчас в теме
Можно еще добавить в ваш код строчку, чтобы не запрашивало сохранение на кнопках
Функция УстановкаФлажков(Флаг=Истина)
	Для Каждого Стр ИЗ Объект.ВидыНоменклатуры Цикл
		Стр.Флажок=Флаг;
	КонецЦикла;
	ЭтаФорма.Модифицированность = ложь;
КонецФункции
11. soft_wind 21.10.21 11:43 Сейчас в теме
да, как-то в обычной программной рутине и не обращаешь на такие нюансы внимания,
вот ваша база, пришлось перехватить тройку событий, для корректной работы признака Модифицированности.
посмотрите может подойдет
Прикрепленные файлы:
Флажки.dt
12. provadyuga 99 21.10.21 11:53 Сейчас в теме
(10)
А если перед этим были изменены важные реквизиты и Модифицированность была Истина? Все равно сбросите её в Ложь?
Согласен. Не подумал об этом. Мой вариант не подходящий.
16. provadyuga 99 21.10.21 13:50 Сейчас в теме
(13) Qupkbe. В вариант Флажки.dt от soft_wind добавьте обработчик события
&НаКлиенте
Процедура ВидыНоменклатурыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
	ЭтоФлажок = Ложь;
КонецПроцедуры
и не будет вылетать ошибка при добавлении строки.
Мой вариант не корректный, т.к. затирает Модифицированность при изменении реальных данных. А этого делать очень не надо.
17. Qupkbe 21.10.21 14:13 Сейчас в теме
18. soft_wind 21.10.21 14:24 Сейчас в теме
(17) да, да, не протестил этот вариант,
событие перед началом добавления, вроде можно и не использовать
просто в конце модуля формы, после всех процедур, добавить команду

...
ЭтоФлажок = Ложь; //начальная инициализация переменной
19. Release 21.10.21 14:42 Сейчас в теме
Сделал так:
&НаКлиенте
Процедура ВидыНоменклатурыПередНачаломИзменения(Элемент, Отказ)
	Если Элемент.ТекущийЭлемент.Имя = "ВидыНоменклатурыРеквизит1" Тогда
		Отказ = Истина;
		
		Элемент.ТекущиеДанные.Флажок = Не Элемент.ТекущиеДанные.Флажок;
	КонецЕсли;
КонецПроцедуры
Показать

Вроде работает. ВидыНоменклатурыРеквизит1, так у автора элемент флажка на форме называется.
20. Qupkbe 22.10.21 19:29 Сейчас в теме
(19)Имя не то, но работает отлично!
21. Release 22.10.21 20:12 Сейчас в теме
(20) Имя то, которое было в конфигурации из шапки:
Прикрепленные файлы:
Оставьте свое сообщение

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