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

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

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование управляемых форм 1С 8.2 _ Смена текущей страницы

Автор: pablo 10.03.16, 17:19

Захотелось мне по нажатию кнопки Добавить в табличной части обработки сменить текущую страницу управляемой формы. Написал код:

&НаКлиенте
Процедура ТабличнаяЧасть1ПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
    Если НоваяСтрока тогда
        Элементы.Группа1.ТекущаяСтраница=Элементы.Группа1.ПодчиненныеЭлементы.Группа3;
    КонецЕсли;    
КонецПроцедуры

И... ничего не случилось. Я понимаю, что система после обработки события принудительно меняет активный элемент (и, следовательно, страницу).
Теперь вопрос. Можно ли как-то обойти это, кроме как созданием своей собственной кнопки Добавить?

Автор: andr_andrey 10.03.16, 17:29

pablo @ Сегодня, 17:19 *,
"кроме как созданием своей собственной кнопки Добавить?"

"Правильно поставленный вопрос содержит до 90% ответа."

Автор: Vofka 10.03.16, 17:31

&НаКлиенте
Процедура ТабличнаяЧасть1ПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
    
    Если НоваяСтрока Тогда
        Объект.ТабличнаяЧасть1.Удалить(Объект.ТабличнаяЧасть1.НайтиПоИдентификатору(Элемент.ТекущаяСтрока));
        Элементы.Группа1.ТекущаяСтраница = Элементы.Группа3;
    КонецЕсли;
    
КонецПроцедуры


*Поправил немножко код

Автор: pablo 10.03.16, 17:40

Vofka, такой способ мне не подходит, т.к. мне нужно, чтобы строка осталась (я ее реквизиты вынес на отдельную закладку).
Я нашел один немного окольный способ обхода

&НаКлиенте
Процедура Группа1ПриСменеСтраницы(Элемент, ТекущаяСтраница)
    Если ТекущаяСтраница<>Элемент.ПодчиненныеЭлементы.Группа3
            тогда
            
            Если ПроверитьЗаполнение() тогда
            иначе
                Элементы.Группа1.ТекущаяСтраница=Элемент.ПодчиненныеЭлементы.Группа3;
            КонецЕсли;
    КонецЕсли;        
КонецПроцедуры

при этом реквизиты формы со страницы Группа3 не заполнены и помечены как "Выдавать ошибку".

но может есть более прямые?

Автор: Vofka 10.03.16, 17:45

Цитата(pablo @ 10.03.16, 17:40) *
Vofka, такой способ мне не подходит, т.к. мне нужно, чтобы строка осталась (я ее реквизиты вынес на отдельную закладку).

Если в момент ввода новой строки происходит переход на другую страницу, можно предположить, что в новой строке ничего не заполнено. Поэтому такую пустую строку можно добавить программно одной строчкой кода.

Автор: logist 10.03.16, 18:22

Подключить обработчик ожидания через 0,1 процедура которая сменит страницу.

Автор: andr_andrey 10.03.16, 18:26

logist @ Сегодня, 18:22 *,
Как цивилизованно можно ожидать интервал?

Автор: logist 10.03.16, 18:29

andr_andrey, ? 0,1 секунды выполнится сразу после окончания процедуры, ну 0,2 можете поставить, такой подход используется в функционале УНФ.

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