Помощь - Поиск - Пользователи - Календарь
Полная версия: Редактировать строку табличной части справочника в диалоге
1C-PRO - Форум по 1С > Форумы по платформе "1С:Предприятие 8.x" > (8.х) Конфигурирование на платформе "1С:Предприятие 8.x"
Komich
Хочу редактировать строку табличной части справочника не в таблице, а в диалоге.
Создал форму ФормаСтрокиТабличнойЧасти.
В событии ПриНачалеРедактирования вывожу форму:

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


После закрытия формы входит в режим редактирования в таблице.

Как заставить не входить в режим редактирования при редактировании строки и при добавлении новой строки?
BabySG
Событие ПЕРЕД, а не ПРИ обрабатывай и ставь
Код
СтандартнаяОбработка = Ложь;
Komich
Два параметра:
ПередНачаломИзменения(Элемент, Отказ).
Пробовал ставить Отказ=Истина и вызырвать фому, но нет нужных параметров: НоваяСтрока, Копирование, чтобы корректно всё обработать.
Но самое противное, ПередНачаломИзменения() не вызывается при добавлении нового элемента табличной части.
BabySG
Прочитай еще раз, какое событие я имел ввиду ПЕРЕД :)
Ты взял другое...
Komich
Так я и имел в виду, что событие ПередНачаломИзменения() я прбовал обрабатывать, там нет параметра СтандартнаяОбработка
BabySG
ПередНачаломРедактирования тебе нужно...
Komich
Цитата(BabySG @ 14.7.2008, 19:45) *

ПередНачаломРедактирования тебе нужно...


ТабличноеПоле (TableBox)

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

Нет такого события
BabySG
1. Да, я не туда посмотрел :)

2.
Цитата(Komich @ 14.7.2008, 16:48) *

Но самое противное, ПередНачаломИзменения() не вызывается при добавлении нового элемента табличной части.

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

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


Komich
Хочу, что бы строки табличной части справочника редактировались и добавлялись в диалоге, как элементы справочника.
ThargoN_SG
Дык, собственно, в какую сторону копать ведь уже подсказали:
надо прописать всего два события табличного поля в которых установкой флага Отказ отменяем стандартную обработку.
Короче говоря, в псевдокоде получается так:
Код
Процедура ТабПередНачаломИзменения
Получаем нашу форму записи табличной части и каким-либо образом передаем ей редактируемую строку
Открываем ее модально, ибо открывать кучу таких окошек вряд ли надо для нашей задачи
Форма нам возвращает что пользователь нажал и новую отредактированную строку (как - это уже отдельный вопрос)
Обновляем строку в нашей таб.части если надо (юзер нажал "Сохранить" в форме редактирования строки)
Отказ = Истина; // Отменяем стандартные действия, мы сами все наменяли
КонецПроцедуры

Процедура ТабПередНачаломДобавления
Получаем нашу форму записи табличной части
Если установлен в истину входящий параметр Копировать то получаем текущую строку табличного поля (ее собираются копировать) и передаем ее в форму
Если Копировать НЕ Истина, можем заполнить в форме какие-либо значения по умолчанию для новой строки
Открываем форму в модальном режиме
Если пользователь нажал в ней Сохранить, то создаем в табличном поле новую строку и запихиваем в нее то что пользователь ввел в форме
Отказ = Истина; // отменяем стандартные действия, мы сами все создали и скопировали
КонецПроцедуры

Больше, в принципе, вроде ничего и не нужно. Разве что, пожалуй, для табличного поля режим выделения строки поставить в значение Строка, а не ячейка.
По ходу псевдокода вроде все действия не особо сложные, "расшифровать их в готовый код", я думаю, самостоятельно полезней будет :)
Komich
Всем спасибо!
Все получилось.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2009 Invision Power Services, Inc.