Вход | Регистрация


Интерфейс Такси, перечитать форму после выполнения стандартных команд формы

Интерфейс Такси, перечитать форму после выполнения стандартных команд формы
Я
   LenaAt
 
14.12.17 - 10:11
На форму документа помещены стандартные команды формы. После проведения или отмены проведения, установки пометки удаления должна меняться декорация на форме. Но она не меняется после проведения или отмены проведения, но меняется после выполнения команды "Пометить на удаление/Снять пометку". Если выполнить мою команду "Перечитать форму", то все работает как надо. Подскажите, пожалуйста, почему после выполнения одних команд форма перечитывается сама, а после выполнения других не перечитывается. И самое главное - как программно перечитать форму после выполнения стандартных команд формы, таких как Провести, Отменить проведение?

https://hostingkartinok.com/show-image.php?id=ae23998b2587bf50ea26a6cd6f1e21f7
 
 
   Остап Сулейманович
 
1 - 14.12.17 - 10:13
(0) Для таких вещей рекомендуют связку "Оповестить"-"ОбработкаОповещения".
   LenaAt
 
2 - 14.12.17 - 10:15
(1) О оповестить в модуль документа поместить в процедуру ПриЗаписи?
   Остап Сулейманович
 
3 - 14.12.17 - 10:19
(2) В модуль документа в ОбработкаПроведения. Или в подписку.
   LenaAt
 
4 - 14.12.17 - 10:42
(3) Что - то не получается
Процедура или функция с указанным именем не определена (Оповестить) <<?>>Оповестить(); (Проверка: Сервер)
   1Садовник
 
5 - 14.12.17 - 10:46
Низзя Оповестить на сервере.

Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение(клиент).
   Остап Сулейманович
 
6 - 14.12.17 - 10:47
(4) Да... Тупонул.
"Оповестить" можно вызывать только на клиенте.
В таком случае ИМХО без обработчика ожидания не обойтись.
   LenaAt
 
7 - 14.12.17 - 10:48
4+ Вот так работает

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    Оповестить();
КонецПроцедуры

Отлавливает проведение и отмену проведения. Пометку на удаление не отлавливает. Пометку на удаление отлавливает процедура ПриЗаписи() в модуле документа, но там не работает Оповестить().
   DmitrO
 
8 - 14.12.17 - 10:50
(0)вам надо просто в форме использовать событие ПослеЗаписиНаСервере и в нем менять декорацию на форме (Пометить на удаление/Снять пометку и Провести/Отменить проведение это все запись документа).
   LenaAt
 
9 - 14.12.17 - 10:50
(6) Да все нормально. После выполнения команды Установить пометку удаления/ Снять пометку форма перечитывается сама.

В чем же разница между этой командой и другими? Почему у них разное поведение?
   LenaAt
 
10 - 14.12.17 - 10:52
(8) Спасибо большое!!! Так действительно все работает.
 
 Рекламное место пустует
   DmitrO
 
11 - 14.12.17 - 11:03
Разница между поведением команд.
Обычный сценарий работы с документами в платформе предполагает, что данные документа не изменяются при проведении, а форма документа отображает данные документа. Соответственно данные отображаемые на форме не изменяться при проведении, поэтому форма не перечитывается при проведении и отмене проведения.
   DmitrO
 
12 - 14.12.17 - 11:04
*данные отображаемые на форме не изменятся
   LenaAt
 
13 - 14.12.17 - 11:27
Всё, теперь все работает. Как оказалось, нужно обработать два события:

//****************************************************************************************
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
    Если Объект.Проведен Тогда
        ЭтотОбъект.Элементы.КартинкаГалка.Картинка = БиблиотекаКартинок.Проведен48;
    ИначеЕсли Объект.ПометкаУдаления = Истина Тогда
        ЭтотОбъект.Элементы.КартинкаГалка.Картинка = БиблиотекаКартинок.ПометкаУдаления48;
    Иначе
        ЭтотОбъект.Элементы.КартинкаГалка.Картинка = БиблиотекаКартинок.НеПроведен48;    
    КонецЕсли;
КонецПроцедуры

//****************************************************************************************

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

ПослеЗаписиНаСервере отлавливает проведение - отмену проведения, а ПриЧтенииНаСервере пометку удаления - снятие пометки удаления.
   Мыш
 
14 - 14.12.17 - 11:32
(13) Не изобретайте велосипед. Посмотрите в типовой БП процедуру "УстановитьСостояниеДокумента()".

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует