|
Передать в уже открытую форму справочника новые параметры? | ☑ | ||
---|---|---|---|---|
0
RomaH
naïve
12.01.23
✎
10:32
|
Из отчета открываю справочник - из того же отчета есть номер строки табличной части - которую и активирую при открытии
А вот как быть когда элемент справочника уже открыт - как ему передать новый номер строки? |
|||
1
RomaH
naïve
12.01.23
✎
10:34
|
есть событие "при повторном открытии" .... в нем что-то снаружи можно передать?
|
|||
2
Волшебник
модератор
12.01.23
✎
10:35
|
Используй оповещения
|
|||
3
RomaH
naïve
12.01.23
✎
10:38
|
Оповещения и Оповестить - это одно и тоже?
|
|||
4
Волшебник
модератор
12.01.23
✎
11:18
|
Процедура Оповестить() посылает оповещение всем созданным формам и всем подключенным через метод ПодключитьОбработчикОповещения() процедурам модуля управляемого приложения (модуля обычного приложения) или общего модуля. Если для формы задана процедура-обработчик события ОбработкаОповещения(), то она будет запущена, в процедуру будут переданы указанные параметры. Данный механизм может, например, применяться для организации обмена сообщениями между открытыми формами.
|
|||
5
Serg_1960
12.01.23
✎
12:58
|
Оповещение оповещает все формы - это "плюс"; но только ранее открытые - это "минус". Автору придётся анализировать открыта или нет нужная ему форма (нет смысла оповещать форму, если она ещё не открыта).
|
|||
6
Serg_1960
12.01.23
✎
13:05
|
В старые добрые времена, когда Земля была теплая и по ней бегали мамонты, а формы были только обычными, самым примитивным решением было добавить на форму экспортную переменную ХХХ и анализ значения в ПередОткрытием/ПрОткрытии или ПриПовторномОткрытии
ТекСсылка = Справочники.Номенклатура.НайтиПоКоду("ХХХ"); ТекФорма = ТекСсылка.ПолучитьФорму("ФормаЭлемента"); ТекФорма.ХХХ = ВашНомер; ТекФорма.Открыть(); |
|||
7
Serg_1960
12.01.23
✎
13:16
|
А сейчас, когда связку команд "ПолучитьФорму/Открыть" использовать не рекомендуется методистами 1С, приходится извращаться :))
Параметры = Новый Структура; Параметры.Вставить("Ключ", ТекСсылка); Параметры.Вставить("КлючНазначенияИспользования", Формат(ВашНомер,"ЧГ=")); ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаЭлементаУправляемая", Параметры); |
|||
8
glover
13.01.23
✎
11:51
|
(0) переоткрыть нельзя что-ли программно
|
|||
9
ДедМорроз
13.01.23
✎
21:29
|
Если правильно задать ключ уникальности,то можно открыть несколько элементов одного справочника и даже несколько одинаковых элементов.
|
|||
10
RomaH
naïve
16.01.23
✎
08:47
|
(8) а зачем? (9) а зачем? (5) не придется
ОткрытьФорму("Справочник.ВнутренниеДокументы.Форма.ФормаЭлемента",ДанныеДляОткрытия,,ДанныеДляОткрытия.Ключ,,,,); Оповестить("ВыборНовогоКодаСтроки",ДанныеДляОткрытия); да, наверное два раза выполняется кусок кода, но он не тяжелый |
|||
11
RomaH
naïve
16.01.23
✎
09:02
|
+(10) если строчки местами поменять - тогда два раза выполнятся не будет
если форма уже открыта - то сработает оповещение, если не открыта - то при открытии |
|||
12
Fedor-1971
16.01.23
✎
09:27
|
(10) Вот так, прямо сразу, не лучший вариант
Если ПриСозданииНаСервере имеет долго работающую логику (или 1С будет работать на перегруженном компе), то ОбработкаОповещения ещё не успеет подключиться и логика дополнения параметров не сработает, что даст трудно отлавливаемую динамическую ошибку (У Васи работает, а у Кати нет, бо она ролик смотрит) Корректнее так: Открываем форму, делаем оповещение об открытии оной, в исходной в ОбработкеОповещения отдаём новые параметры |
|||
13
RomaH
naïve
16.01.23
✎
11:07
|
(12) как все запущено
|
|||
14
RomaH
naïve
16.01.23
✎
11:08
|
достаточно поменять строчки местами
Оповестить("ВыборНовогоКодаСтроки",ДанныеДляОткрытия); ОткрытьФорму("Справочник.ВнутренниеДокументы.Форма.ФормаЭлемента",ДанныеДляОткрытия,,ДанныеДляОткрытия.Ключ,,,,); и нужную логику прописать и "При открытии" и в обработке оповещения |
|||
15
Fedor-1971
16.01.23
✎
11:44
|
(14) Так извращаться ни кто не мешает, но, при наличии параметров в одном месте и времени, что мешает их сразу отправить в Открываемую форму?
|
|||
16
RomaH
naïve
16.01.23
✎
15:14
|
(15) то что форма уже открыта
|
|||
17
Serg_1960
17.01.23
✎
09:09
|
(7) :)
Параметры = Новый Структура; Параметры.Вставить("Ключ", ТекСсылка); Параметры.Вставить("КлючНазначенияИспользования", "Анализируй значение ПриОткрытии"); ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаЭлементаУправляемая", Параметры); ... Параметры = Новый Структура; Параметры.Вставить("Ключ", ТекСсылка); Параметры.Вставить("КлючНазначенияИспользования", "Анализируй значение ПриПовторномОткрытии"); ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаЭлементаУправляемая", Параметры); |
|||
18
RomaH
naïve
17.01.23
✎
09:44
|
(17) так не сработает - при повторном открытии срабытывает только процедура "ПриПовторномОткрытии" - а в ней уже Параметры без добавленных значений (КлючНазначенияИспользования - вот этого не увидишь)
|
|||
19
RomaH
naïve
17.01.23
✎
09:45
|
или это специальный ключ?
|
|||
20
RomaH
naïve
17.01.23
✎
09:46
|
ну да - специальный, и он как бы для другого
|
|||
21
Serg_1960
18.01.23
✎
10:25
|
Да, это ключевой параметр, который всегда доступен в форме... эээ... и он, в т.ч., участвует в формировании ключа уникальности формы :( У меня - УПП, оно со своими тараканами. Sorry, как-то об этом не подумал. Глупая шутка получилась.
Но, тем не менее, в каждой шутке есть доля правды, как говорится. Учитывая(1): // вызов из формы отчета, в котором есть, например, реквизит ВашНомер: ТекПараметры = Новый Структура; ТекПараметры.Вставить("Ключ", СсылкаНаЭлементСправочника); ТекПараметры.Вставить("КлючНазначенияИспользования", "ЭтоВызовИзОтчета"); ОткрытьФорму("Справочник.ВашСправочник.Форма.ФормаЭлемента", ТекПараметры, ЭтаФорма, ЭтаФорма.КлючУникальности); // процедуры вызываемой формы элемента справочника: &НаКлиенте Процедура ПриОткрытии(Отказ) Если ЭтаФорма.Параметры.КлючНазначенияИспользования = "ЭтоВызовИзОтчета" Тогда ВашНомер = Этаформа.ВладелецФормы.ВашНомер; ... КонецЕсли; КонецПроцедуры; &НаКлиенте Процедура ПриПовторномОткрытии() Если ЭтаФорма.Параметры.КлючНазначенияИспользования = "ЭтоВызовИзОтчета" Тогда ВашНомер = Этаформа.ВладелецФормы.ВашНомер; ... КонецЕсли; КонецПроцедуры; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |