8.х Редактировать строку табличной части справочника в диалоге

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Komich, 10 июл 2008.

  1. TopicStarter Overlay
    Komich
    Offline

    Komich

    Регистрация:
    10 июл 2008
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Хочу редактировать строку табличной части справочника не в таблице, а в диалоге.
    Создал форму ФормаСтрокиТабличнойЧасти.
    В событии ПриНачалеРедактирования вывожу форму:

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

    Как заставить не входить в режим редактирования при редактировании строки и при добавлении новой строки?
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Событие ПЕРЕД, а не ПРИ обрабатывай и ставь
    Код:
    СтандартнаяОбработка = Ложь;
    
  3. TopicStarter Overlay
    Komich
    Offline

    Komich

    Регистрация:
    10 июл 2008
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Два параметра:
    ПередНачаломИзменения(Элемент, Отказ).
    Пробовал ставить Отказ=Истина и вызырвать фому, но нет нужных параметров: НоваяСтрока, Копирование, чтобы корректно всё обработать.
    Но самое противное, ПередНачаломИзменения() не вызывается при добавлении нового элемента табличной части.
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Прочитай еще раз, какое событие я имел ввиду ПЕРЕД :)
    Ты взял другое...
  5. TopicStarter Overlay
    Komich
    Offline

    Komich

    Регистрация:
    10 июл 2008
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Так я и имел в виду, что событие ПередНачаломИзменения() я прбовал обрабатывать, там нет параметра СтандартнаяОбработка
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    ПередНачаломРедактирования тебе нужно...
  7. TopicStarter Overlay
    Komich
    Offline

    Komich

    Регистрация:
    10 июл 2008
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    ТабличноеПоле (TableBox)

    События:
    Выбор (Selection)
    ВыборЗначения (ValueChoice)
    НачалоПеретаскивания (DragStart)
    ОбработкаВыбора (ChoiceProcessing)
    ОбработкаЗаписиНовогоОбъекта (NewObjectWriteProcessing)
    ОкончаниеПеретаскивания (DragEnd)
    ПередНачаломДобавления (BeforeAddRow)
    ПередНачаломИзменения (BeforeRowChange)
    ПередОкончаниемРедактирования (BeforeEditEnd)
    ПередУдалением (BeforeDeleteRow)
    Перетаскивание (Drag)
    ПослеУдаления (AfterDeleteLine)
    ПриАктивизацииКолонки (OnActivateColumn)
    ПриАктивизацииСтроки (OnActivateRow)
    ПриАктивизацииЯчейки (OnActivateCell)
    ПриВыводеСтроки (OnRowOutput)
    ПриИзмененииФлажка (OnCheckChange)
    ПриНачалеРедактирования (OnStartEdit)
    ПриОкончанииРедактирования (OnEditEnd)
    ПриПолученииДанных (OnDataGet)
    ПриСменеТекущегоРодителя (OnCurrentParentChange)
    ПроверкаПеретаскивания (DragCheck)

    Нет такого события
  8. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    1. Да, я не туда посмотрел :)

    2.
    Естессно! Там даже написано про это!
    Тебе нужно будет другое событие обрабатывать...

    3. Расскажи подробно, что тебе нужно получить, а то я вижу ты пытаешься рассказать, КАК решаешь, а не ЧТО...
  9. TopicStarter Overlay
    Komich
    Offline

    Komich

    Регистрация:
    10 июл 2008
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Хочу, что бы строки табличной части справочника редактировались и добавлялись в диалоге, как элементы справочника.
  10. thargon
    Offline

    thargon

    Регистрация:
    14 июн 2008
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Дык, собственно, в какую сторону копать ведь уже подсказали:
    надо прописать всего два события табличного поля в которых установкой флага Отказ отменяем стандартную обработку.
    Короче говоря, в псевдокоде получается так:
    Код:
    Процедура ТабПередНачаломИзменения
    Получаем нашу форму записи табличной части и каким-либо образом передаем ей редактируемую строку
    Открываем ее модально, ибо открывать кучу таких окошек вряд ли надо для нашей задачи
    Форма нам возвращает что пользователь нажал и новую отредактированную строку (как - это уже отдельный вопрос)
    Обновляем строку в нашей таб.части если надо (юзер нажал "Сохранить" в форме редактирования строки)
    Отказ = Истина; // Отменяем стандартные действия, мы сами все наменяли
    КонецПроцедуры
    
    Процедура ТабПередНачаломДобавления
    Получаем нашу форму записи табличной части
    Если установлен в истину входящий параметр Копировать то получаем текущую строку табличного поля (ее собираются копировать) и передаем ее в форму
    Если Копировать НЕ Истина, можем заполнить в форме какие-либо значения по умолчанию для новой строки
    Открываем форму в модальном режиме
    Если пользователь нажал в ней Сохранить, то создаем в табличном поле новую строку и запихиваем в нее то что пользователь ввел в форме
    Отказ = Истина; // отменяем стандартные действия, мы сами все создали и скопировали
    КонецПроцедуры
    
    Больше, в принципе, вроде ничего и не нужно. Разве что, пожалуй, для табличного поля режим выделения строки поставить в значение Строка, а не ячейка.
    По ходу псевдокода вроде все действия не особо сложные, "расшифровать их в готовый код", я думаю, самостоятельно полезней будет :)
  11. TopicStarter Overlay
    Komich
    Offline

    Komich

    Регистрация:
    10 июл 2008
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Всем спасибо!
    Все получилось.

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