8.х открыть форму элемента при двойном клике на строку в списке

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем cucumber, 7 окт 2009.

  1. TopicStarter Overlay
    cucumber
    Offline

    cucumber

    Регистрация:
    25 авг 2009
    Сообщения:
    19
    Симпатии:
    0
    Баллы:
    1
    Дурацкий наверно вопрос, но почему-то не получается сделать...
    Есть табличное поле, в нем список элементов - как сделать, чтобы при двойном клике на строке сразу открывалась форма этого элемента без начала редактирования текста ячейки?
    В автоматически сгенерированных формах списка элементов справочника это само как-то делается, а вот если у меня своя форма с "руками" сделанным списком, отследить это событие никак не получается и открыть форму получилось только, если к элементу добавить кнопку открытия или выбора, но при этом надо делать лишние движения: сначала двойной клик на строке, потом только становится доступна кнопка, а уже потом после нажатия на кнопку открывается форма... Не очень удобно:(
  2. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.400
    Симпатии:
    40
    Баллы:
    54
    Можн извратиться вот так вот.

    Установите у поля, по значению которого бедет открываться форма элемента свойство Доступность = НЕ Истина

    Далее пишем


    Код:
    Процедура МестаПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
    
    МестаНоменклатураОткрытие(ЭлементыФормы.Места.ТекущаяСтрока, Истина)
    
    КонецПроцедуры
    
    Процедура МестаНоменклатураОткрытие(Элемент, СтандартнаяОбработка)
    
    Предупреждение("Ой, я вскрылась!");
    
    КонецПроцедуры
    
    Т.е, если пытаются редактировать значение (Enter или двойной клик), тогда вызывается процедура обработки нажатия кнопки открытия значения, там прописываете действие для открытимя формы, а отсутствие возможности редактирования значения элемента (Доступность = НЕ Истина) позволит Вам не впускать пользователя к редактированию, а лишь открывать его.
  3. TopicStarter Overlay
    cucumber
    Offline

    cucumber

    Регистрация:
    25 авг 2009
    Сообщения:
    19
    Симпатии:
    0
    Баллы:
    1
    Не работает почему-то:( Вообще у табличного поля нет события ПриНачалеРедактирования, а есть ПриИзменении, но оно не подходит ибо наступает только после окончания редактирования
  4. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.400
    Симпатии:
    40
    Баллы:
    54
    ПолеВвода - Доступность = ложь;
    ТабличноеПоле(Ваша табличка) - Процедура ПриНачалеРедактирования(), проверте еще какая колонка изменяется и вызывается если изменяется Ваша
    ПолеВоода - Процедура МестаНоменклатураОткрытие()
  5. TopicStarter Overlay
    cucumber
    Offline

    cucumber

    Регистрация:
    25 авг 2009
    Сообщения:
    19
    Симпатии:
    0
    Баллы:
    1
    Ничего не происходит. Может в дело в том, что 1с 8.1?
    Вот пишу:

    Код:
    Процедура СписокРасписанийНаименованиеПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
    РасписаниеОткрытие(ЭлементыФормы.СписокРасписаний.ТекущаяСтрока.Код, Истина);
    КонецПроцедуры
    
    Процедура СписокРасписанийКодПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
    РасписаниеОткрытие(ЭлементыФормы.СписокРасписаний.ТекущаяСтрока.Код, Истина);
    КонецПроцедуры
    
    Процедура РасписаниеОткрытие(Элемент, СтандартнаяОбработка)
    ФормаЭлементаРасписания = Справочники.Расписание.ПолучитьФорму("ФормаЭлемента");
    ФормаЭлементаРасписания.ТекРасписание = Элемент;
    ФормаЭлементаРасписания.Открыть();   
    КонецПроцедуры
    
    
    
    Доступность стоит ложь
  6. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.400
    Симпатии:
    40
    Баллы:
    54
    Так, чувствую придётся описывать подробно. Пишу пример, не упусти ни чего.

    1. Табличное поле Товары, ПриНачалеРедактирования

    Посмотреть вложение 2752

    2. Процедура присобаченная для срабатывание на событие При начале редпктирования поля ввода

    Посмотреть вложение 2753

    3. Тело процедура ПриНачалеРедактирования

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

    Посмотреть вложение 2754

    5. Тело события

    Код:
    Процедура ТоварыНоменклатураОткрытие(Элемент, СтандартнаяОбработка)
    // Тут пишите свой код, который будет срабатывать при двойном нажатии левой кнопки мыши на вашем поле ввода (в нашем случае номенклатура)
    КонецПроцедуры
    

    Вложения:

    • 1.JPG
      1.JPG
      Размер файла:
      89,5 КБ
      Просмотров:
      225
    • 1.JPG
      1.JPG
      Размер файла:
      59,7 КБ
      Просмотров:
      217
    • 1.JPG
      1.JPG
      Размер файла:
      92,8 КБ
      Просмотров:
      186
  7. TopicStarter Overlay
    cucumber
    Offline

    cucumber

    Регистрация:
    25 авг 2009
    Сообщения:
    19
    Симпатии:
    0
    Баллы:
    1
    Все заработало! спасибо гигантское!:)
    просто я не видела почему-то событие ПриНачалеРедактирования у поля:)
  8. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    А свойство "Автовыбор незаполненного" вас не устроило?

Поделиться этой страницей