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

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

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ Не совсем корректно срабатывает событие при Выборе закладки (1с 7.7.025)

Автор: andrew76 25.01.22, 9:30

Добрый день !

Не совсем корректно срабатывает событие ПриВыбореЗакладки.
Имеется форма элемента справочника с закладками.
На первой закладке есть поле, которое должно быть заполнено.
При открытии формы должно выдаваться сообщение если поле пустое.
При открытии формы элемента справочника соответственно открывается вкладка №1
и условие проверки поля не срабатывает. А когда в открытой форме бегаешь по вкладкам ,то все работает.
Как это лечить? Сэмулировать как-то выбор закладки при открытии ?

Автор: Sharzem 25.01.22, 10:30

andrew76 @ Сегодня, 9:30 * ,
Вірно.
В кінці процедури ПриОткрытии() викличте

ПриВыбореЗакладки(1,"ВашаНазваЗакладки");

Автор: andrew76 25.01.22, 10:44

Sharzem @ Сегодня, 13:30 * ,
Рекурсия ?

Автор: sava1 25.01.22, 10:47

Цитата(andrew76 @ 25.01.22, 10:44) *
Рекурсия ?


Откуда ?

Автор: andrew76 25.01.22, 11:01

Конечно не рекурсия. Действительно, откуда ?
В конце процедуры ПриОткрытии срабатывает вариант конечно,
но мне надо чтобы срабатывало когда форма уже открыта с закладками-т.е.при выборе закладки.
а чтобы мне ее выбрать надо покликать по закладкам.

Автор: sava1 25.01.22, 11:07

добавьте формекс - там есть событие послеОткрытия.
или приОткрытии выполнить с задержкой свою процедуру

Автор: andrew76 25.01.22, 11:40

sava1 @ Сегодня, 14:07 * ,

Значит только внешней компонентой ?

Автор: Sharzem 25.01.22, 12:41

andrew76 @ Сегодня, 11:40 * ,
А так:

ПриВыбореЗакладки(2,"ВтораяЗакладка");
ПриВыбореЗакладки(1,"ПерваяЗакладка");

Автор: andrew76 25.01.22, 13:39

Sharzem @ Сегодня, 15:41 * ,

А так тоже самое. Сообщение выдается во время открытия формы.
Когда открывается форма с закладками, пока не кликнешь принудительно по вкладке ,
то и сообщение не выводится.

Автор: Sharzem 25.01.22, 13:51

andrew76 @ Сегодня, 13:39 * ,
Ну тогда, как вариант, уберите свое "детище" на другую закладку да и не мучайтесь.

Автор: andrew76 25.01.22, 13:59

Цитата(Sharzem @ 25.01.22, 16:51) *
andrew76 @ Сегодня, 13:39 * ,
Ну тогда, как вариант, уберите свое "детище" на другую закладку да и не мучайтесь.


Как вариант остается довольствоваться тем , что предупреждение будет
выводиться перед открытием формы с закладками.

Автор: Sharzem 25.01.22, 16:08

Цитата(andrew76 @ 25.01.22, 13:59) *
что предупреждение будет выводиться перед открытием формы

Не будет, если вывести факт того, что форма только открывается в глобальную переменную. Например так:
Перем ФормаОткрылась

Процедура ПриВыбореЗакладки(Номер,Закладка)
    Если ФормаОткрылась = 1 Тогда
        //Вот здесь понимаем что это ПриОткрытии() и сразу ж показываем, что далее она уже открыта
        ФормаОткрылась = 0;
    Иначе
        //Тут, я так понимаю, должно сидеть Ваше Предупреждение
    КонецЕсли;
КонецПроцедуры

Процедура ПриОткрытии()
    ФормаОткрылась = 1;
    ПриВыбореЗакладки(1,"ПерваяЗакладка");
КонецПроцедуры


Возможно, рагульное решение, но Вашей инфо мало...

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

Автор: andrew76 25.01.22, 16:25

Sharzem @ Сегодня, 19:08 * ,

Цэ дило трэба обмозгуваты...

Автор: Sharzem 28.01.22, 12:01

andrew76 @ 25.01.22, 16:25 * ,
44000000.gif
Ииии?
Победили или забили ?
Расскажите о результатах...

Автор: denis84 28.01.22, 13:52

andrew76 @ 25.01.22, 9:30 * ,
У меня была такая задача. Надо было проверить заполнение одного реквизита при изменении другого (заполнена ли статья расходов при изменении суммы), статья расходов на второй вкладки, а сумма на первой вкладке. При изменении суммы осуществляется переход на вторую вкладку

Вот такой код был при изменении суммы:

//=============================
Процедура ИзмСумму()    
    Если ПустоеЗначение(СтатьяРасходов) = 1 Тогда
        Форма.ИспользоватьСлой("Дополнительно",2);
        Форма.Закладки.ТекущаяСтрока(2);
        Сообщить("Выберите 'Статью","!");
        Возврат;
    КонецЕсли;    
КонецПроцедуры


может вам так надо написать при открытии формы:

Процедура ПриОткрытии()
      Форма.ИспользоватьСлой("Основные",1);
      Форма.Закладки.ТекущаяСтрока(1);
КонецПроцедуры

Автор: andrew76 31.01.22, 12:10

Цитата(Sharzem @ 28.01.22, 15:01) *
Расскажите о результатах...


Нет ,ни один из вариантов мне не помог.Форма то с закладками открывается, но не срабатывает при открытии формы Процедура ПриВыбореЗакладки
Т.е. пока в открытой форме по закладке не кликнешь - результата нет. Тему можно закрывать.
Всем спасибо за участие.

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