формекс + пометка списка знначений

Автор Andrewalexk, 08 октября 2026, 11:29

« назад - далее »

Andrewalexk

:)
привет
хочу по нажатию списка значений с колонками менять видимость колонок таблицы через формекс
1. ловлю нажатие на списке через
ПриНажатииЛевойКнопки
ПолучитьАтрибутПоКоординатам
2. получаю ссылку на объект через
ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр("+Атрибут.Идентификатор+")]"))
3. но 1с видит текущую строку списка как = 0
и пометки с запаздыванием на 1 клик
чяднт?

alyuev

А как это - список значений с колонками? Это где такое?

Andrewalexk

:)
я про интерфейс
в таблице колонки 3 типов данных
параметр
период
доп параметр для периода
=3 списка
жаль нельзя загрузить с диска картинку
в итоге я плюнул на событие клика
и сделал по кнопке

Харлампий Дымба

Это потому, что ПриНажатииЛевойКнопки <> ПослеНажатииЛевойКнопки. В момент ПриНажатииЛевойКнопки 1Ска ещё не успевает отработать изменение строки списка и установку/снятие пометки. Так что тебе нужно исполнять свою логику а-ля ПослеНажатииЛевойКнопки. Буквально в соседней теме лежит пример код от ADirksa, как по таймеру отсрочить выполнение своего код. Рабочий демонстрационный пример в твоём случае:
Перем Таймер_ОбработкаКликаПоСписку;

Процедура ОбработкаКликаПоСписку() Экспорт
    Таймер_ОбработкаКликаПоСписку.Остановить();
    Таймер_ОбработкаКликаПоСписку.УдалитьОбработчик();
    Таймер_ОбработкаКликаПоСписку = "";
    Сообщить("Состояние ПослеНажатииЛевойКнопки: строка: " + Список.ТекущаяСтрока() + ", пометка: "  + ?(Список.ТекущаяСтрока()=0,0,Список.Пометка(Список.ТекущаяСтрока())));
КонецПроцедуры

Процедура ПриНажатииЛевойКнопки(Сост,КоординатаX,КоординатаY,ФСО)
    //Если координаты Х.Y принадлежат списку, то
    Сообщить("Состояние ПриНажатииЛевойКнопки: строка: " + Список.ТекущаяСтрока() + ", пометка: "  + ?(Список.ТекущаяСтрока()=0,0,Список.Пометка(Список.ТекущаяСтрока())));
    Таймер_ОбработкаКликаПоСписку = СоздатьОбъект("Таймер");
    Таймер_ОбработкаКликаПоСписку.ЗадатьОбработчикВОбъекте(глВзятьКонтекст(Контекст), "ОбработкаКликаПоСписку");
    Таймер_ОбработкаКликаПоСписку.Запустить(30);//миллисекунды сам подбери
    //КонецЕсли;
КонецПроцедуры   

глВзятьКонтекст - из любой типовой.
Со списком с пометками у тебя будет ещё тонкость в том, что клик по строке, а не по квадратику пометки не изменяет пометку. То есть либо учитывать для КоординатыX размер квадратика, либо в своей логики процедуры обработки учитывать, что клик не обязательно меняет состояние пометки строки.