Обработка оповещения функцией ПоказатьЗначение

1. Serega-artem 17 09.08.15 20:32 Сейчас в теме
Добрый день, коллеги!

Два часа сижу с простой задачей.

Есть процедура:

&НаКлиенте
Процедура СписокТекущихЗадачВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	Оповещение = Новый ОписаниеОповещения("СтартОбновленияТекДанных", ЭтотОбъект);  
	ПоказатьЗначение(Оповещение,Объект.СписокТекущихЗадач[ВыбраннаяСтрока].СсылкаНаЗадачу); 
КонецПроцедуры


Соответственно есть вторая процедура:

&НаКлиенте
Процедура СтартОбновленияТекДанных () Экспорт
// Сюда не попадает!
ОбновитьТекущиеДанные ();	
КонецПроцедуры


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


Вот здесь похожий вопрос

Но опыт показывает, что в 99,9 % проблема все-же не в лыжах, я что-то делаю не так. Но что?
native-api; +1 Ответить
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. dj_serega 393 09.08.15 21:16 Сейчас в теме
(1) Serega-artem, Странно что ошибки нет. В процедуре-приемнике должно быть 2 параметра.
Глобальный контекст (Global context)
ПоказатьЗначение (ShowValue)
Синтаксис:

ПоказатьЗначение(<ОписаниеОповещенияОЗавершении>, <Значение>)
4. spacecraft 09.08.15 21:21 Сейчас в теме
(3) dj_serega, да там и так 2 параметра.
5. dj_serega 393 09.08.15 21:24 Сейчас в теме
(4) spacecraft, вот тут?
Прикрепленные файлы:
6. spacecraft 09.08.15 21:26 Сейчас в теме
(5) dj_serega, а, не правильно прочитал. Там да, надо бы. Но один параметр.
7. dj_serega 393 09.08.15 21:29 Сейчас в теме
(6) spacecraft, И я не то вырезал :)))
воть:
Тип: ОписаниеОповещения.
Содержит описание процедуры, которая будет вызвана после закрытия окна ввода значения с параметром <ДополнительныеПараметры>, который содержит значение, указанное при создании объекта ОписаниеОповещения.
Если параметр не указан, то по завершении никакая процедура вызвана не будет.
9. Serega-artem 17 09.08.15 21:34 Сейчас в теме
(7) dj_serega, Это я в СП читал! Но не понял о каком параметре идет речь? Создалось впечатление, что речь идет о первом параметре процедуры ПоказатьЗначение(). т.е. если ПоказатьЗначение(Оповещение, СсылкаНаЧтоТо) - после зарытия вызываемой формы будет выполнена процедура, а если ПоказатьЗначение(, СсылкаНаЧтоТо) - то ничего выполняться не будет (что логично). Вообще как-то в СП невнятно, на мой взгляд, описана ситуация.
2. Serega-artem 17 09.08.15 20:38 Сейчас в теме
p/s Платформа 8.3 (8.3.6.2152), управляемое приложение.
8. Serega-artem 17 09.08.15 21:31 Сейчас в теме
Спасибо за ответы!

В вызове формы (ПоказатьЗначение()) действительно два параметра: Оповещение и ссылка на то, что открываем. Они заполнены. А какой параметр должен быть в процедуре, которая отрабатывает при завершении?
10. dj_serega 393 09.08.15 21:44 Сейчас в теме
(8) Serega-artem,
Процедура СтартОбновленияТекДанных (ДаХотьЭтоБудетПараметром) 

Вот если параметра не будет. ПРоцедура не будет вызвана. Я так понял.
11. Serega-artem 17 09.08.15 21:52 Сейчас в теме
(10) dj_serega, Побывал так, ноль эффекта. Сейчас снова попробовал (а вдруг!) - ничего.... Побывал играться с местами расположения процедур (модуль формы, модуль объекта, общий модуль), с типом вызова (клиент, сервер), с "экспортностью" (добавлял, убирал ключевое слово "Экспорт") - всегда два варианта развития событий: либо 1с "кричит", что не может найти процедуру ("Не найден экспортируемый метод: "), либо молчит, но не выполняет...
12. hroa 10.08.15 12:51 Сейчас в теме
Описание:

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


У вас наступило это событие? Которое вы ожидаете?
13. Serega-artem 17 10.08.15 13:11 Сейчас в теме
(12) hroa, Спасибо за участие!

Смотрите, как я понимаю. Запускаем процедуру ПоказатьЗначение(), она вызывает форму, когда форма закрывается, и наступает событие. Вполне допускаю, что я мыслю неверно, но как тогда понять наступило событие или нет?

Задача реализуется следующая:

Есть ТЧ обработки, в эту ТЧ запросом отбираются элементы справочника, по условиям. ТЧ для пользователя отображается в режиме "Только просмотр", при клике на конкретную строку открываем форму по ссылке, которая есть в строке процедурой ПоказатьЗначение(). После того, как пользователь внес изменения в элемент справочника и закрыл форму, нужно очистить и заново заполнить ТЧ т.к. вполне возможно, что данный измененный элемент уже не нужен в ТЧ. Т.е. как только пользователь закрыл форму, нужно запускать процедуру переформирования ТЧ. Можно решить задачу модальным окном, но это не айс, сами понимаете.
14. dj_serega 393 10.08.15 14:33 Сейчас в теме
(13) Serega-artem, Попробуйте решить через "ОткрытьФорму". Видимо "фичи" работают.
15. Serega-artem 17 10.08.15 15:21 Сейчас в теме
(14) dj_serega, Можно и так, но тут два вопроса:

1. В ТЧ могут быть ссылки на разные справочники (забыл написать выше об этом) А в ОткрытьФорму() нужно прописать первым параметром какой-то конкретный тип справочника. Но это решаемо. Интереснее другое:

2. Предположим, в ТЧ только один вид справочника, пишу следующий код:

&НаКлиенте
Процедура СписокТекущихЗадачВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	Оповещение = Новый ОписаниеОповещения("СтартОбновленияТекДанных", ЭтотОбъект);  
	СсылкаНаОбъект = Объект.СписокТекущихЗадач[ВыбраннаяСтрока].СсылкаНаЗадачу; 
	ПараметрыФормы = Новый Структура("Ключ", СсылкаНаОбъект);
	ОткрытьФорму("Справочник.Контакты.ФормаОбъекта",ПараметрыФормы,,,,,Оповещение,); 
КонецПроцедуры


Форма открывается, редактируется, при закрытии получаем:


В методе СтартОбновленияТекДанных количество параметров 0. Ожидаемое количество - 2.

Рискну предположить, что оповещение о событии срабатывает в нужный момент, но процедура не взлетает... Если прописать в процедуру СтартОбновленияТекДанных() какой-то фиктивный параметр (например, СтартОбновленияТекДанных(ФиктПрам)) получаем:

В методе СтартОбновленияТекДанных количество параметров 1. Ожидаемое количество - 2.

Мысли есть?))))))
16. dj_serega 393 10.08.15 15:40 Сейчас в теме
(15) Serega-artem,
В методе СтартОбновленияТекДанных количество параметров 0. Ожидаемое количество - 2.

Ну так там два должно быть.
Если прописать в процедуру СтартОбновленияТекДанных() какой-то фиктивный параметр (например, СтартОбновленияТекДанных(ФиктПрам))

Не нужно ничего фиктивного прописывать. В описании оповещения после "ОткрытьФорму" нужно в процедуре именть 2 параметра. Значит 2 и создайте.
17. Serega-artem 17 10.08.15 15:56 Сейчас в теме
(16) dj_serega,

Ну так там два и есть:

Оповещение = Новый ОписаниеОповещения("СтартОбновленияТекДанных", ЭтотОбъект);
18. dj_serega 393 10.08.15 18:46 Сейчас в теме
(17) Serega-artem, Так не тут...
Глобальный контекст.ПоказатьЗначение (Global context.ShowValue)
Глобальный контекст (Global context)
ПоказатьЗначение (ShowValue)
Синтаксис:

ПоказатьЗначение(<ОписаниеОповещенияОЗавершении>, <Значение>)
Параметры:

<ОписаниеОповещенияОЗавершении> (необязательный)

Тип: ОписаниеОповещения.
Содержит описание процедуры, которая будет вызвана после закрытия окна ввода значения с параметром <ДополнительныеПараметры>, который содержит значение, указанное при создании объекта ОписаниеОповещения.

А вот по ОткрытьФорму:
<ОписаниеОповещенияОЗакрытии> (необязательный)

Тип: ОписаниеОповещения.
Содержит описание процедуры, которая будет вызвана после закрытия формы со следующими параметрами:
<РезультатЗакрытия> - значение, переданное при вызове метода Закрыть открываемой формы,
<ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения.


Получается следующее:
&НаКлиенте
Процедура СтартОбновленияТекДанных(РезультатЗакрытия, ДополнитлеьныеПараметры) Экспорт 
kabantus; bocharovki; levante90; Kovekh; jmi; +5 Ответить
19. Serega-artem 17 10.08.15 20:04 Сейчас в теме
(18) dj_serega, Пардон, я просто не понял о каких параметрах идет речь! В принципе взлетело, хотя некоторые мелочи надо "допиливать". Огромное вам спасибо за терпение и помощь!

p/s Однако непонятно, почему не взлетает ПоказатьЗначение()...
20. dj_serega 393 10.08.15 20:08 Сейчас в теме
(19) Serega-artem, Попробуете на других платформах. Может где-то "фича" вылезла.
21. Serega-artem 17 10.08.15 20:23 Сейчас в теме
(20) dj_serega, Попробую! Но но в любом случаи оставлю вариант с ОткрытьФорму() т.к. не хочется потом объяснять пользователям, что вот на этой платформе конфига работает, а вот на этой нет)))))

Еще раз спасибо)
22. DrZombi 301 18.09.19 06:26 Сейчас в теме
Народ, вот все это замечательно и просто...
А как вы исключения будете обрабатывать?...
23. native-api 09.08.24 13:03 Сейчас в теме
24. native-api 26.08.24 13:46 Сейчас в теме
(23) Ответ службы поддержки 1С:
Ошибка платформы 60011424. Не исправлена на текущий момент. Если вместо ссылки подставить в ПоказатьЗначение() любой простой тип, то ОП отработает штатно. Со ссылкой — нет.

Ошибка платформы 60011424 -- то же, что ссылка выше.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот