Версия для печати темы (https://pro1c.org.ua/index.php?s=3ee7fee6979ada0be9fdaf0f43200257&showtopic=62582)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Как в форме списка при открытии формы отказаться от срабатывания обработчика ПриАктивизацииСтроки?

Автор: gololol 30.10.20, 21:52

Доброго врениени суток.

1С:Предприятие 8.3 (8.3.10.2667)
Толстый клиент
Обычное приложение


Есть объект конфигурации Документ1

Поле: Дата
Поле: Номер

Табличная часть: Товары
Поле: Номенклатура
Поле: Цена
Табличная часть здесь ненужна.

Есть ТабличноеПоле: ДокументСписок

На этом табличном поле отображены поля:
Дата, Номер

Есть две записи в таблице

номер дата
000000001 01.07.2018 21:07:44
000000002 02.07.2018 22:17:35


Задача получить с помощью клика левой кнопки мыши ссылку на запись.


Пример рализации этой задачи.
ТабличноеПоле: ДокументСписок имеет обработчик события - ПриАктивизацииСтроки см. ниже:

Процедура ДокументСписокПриАктивизацииСтроки(Элемент)
    
    Ссылка = ЭлементыФормы.ДокументСписок.ТекущиеДанные.Ссылка;
    Сообщить("Ссылк: " + Ссылка);
    
КонецПроцедуры


Проблема в том, что при открытии формыСписка после обработчка ПриОткрытии()
срабатывает обработчик события ДокументСписокПриАктивизацииСтроки() и
происходит ненужное выполнение обработчика события.

Проблему, конечено, можно решить таким образом:
Перем пСтарт;

Процедура ПриОткрытии()
    пСтарт = Истина;
КонецПроцедуры


Процедура ДокументСписокПриАктивизацииСтроки(Элемент)
    
    Если пСтарт Тогда
        пСтарт = Ложь;
    Иначе
        Ссылка = ЭлементыФормы.ДокументСписок.ТекущиеДанные.Ссылка;
        Сообщить("Ссылк: " + Ссылка);
    КонецЕсли;
    
КонецПроцедуры

Но это не правильное решение.


Необходимо реализовать подобную обработку с помощью обработчика события Формы.

Этот обработчик лишен указанного выше недостатка и переменная пСтарт просто ненужна.

Обработчиков ФормыСписка всего 13:
ПередОткрытием()
...
ПриСменеСтраницы()

Внимтельно изучил и опробовал все, ничего не нашёл.

Буду признателен, если кто-то подскажет решение.

Автор: Vofka 31.10.20, 10:01

Процедура ДокументСписокПриАктивизацииСтроки(Элемент)
    
    ТД = ЭлементыФормы.ДокументСписок.ТекущиеДанные;
    Если ТД = Неопределено Тогда
        Возврат;
    КонецЕсли;

    Сообщить("Ссылк: " + ТД.Ссылка);
    
КонецПроцедуры

Автор: gololol 31.10.20, 12:53

Vofka @ Сегодня, 10:01 * ,

После обработчика ПриОткрытии()

выполняется обработчик ДокументСписокПриАктивизацииСтроки(Элемент)

ТД = ЭлементыФормы.ДокументСписок.ТекущиеДанные;


После этой строки ТД <> Неопределено

поэтому при открытии формыСписка обработчик

ДокументСписокПриАктивизацииСтроки(Элемент) отрабатывет полность.


Автор: Vofka 31.10.20, 16:08

gololol, а что значит

Цитата(gololol @ 30.10.20, 21:52) *
ненужное выполнение обработчика события

?
И какое тогда нужное?

Автор: gololol 31.10.20, 18:08

Vofka @ Сегодня, 16:08 * ,
Не знаю.
Мне было сказано, что у формы есть такое событие.
Я посмотрел их все.
Ничего не нашёл...

Автор: Vofka 01.11.20, 10:02

gololol, есть обработчик ПриАктивизацииСтроки, который срабатывает, как не странно, при активизации строки. Он вам как бы подходит, но не всегда. Что вы хотите сделать - непонятно.

Автор: gololol 03.11.20, 12:43

Vofka @ 01.11.20, 10:02 * ,
Приношу свои извинения.
Это ложный путь.
Надо обрабатывать событие ТабличноеПоле.ПриАктивизацииСтроки

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua