Имя: Пароль:
1C
1С v8
Как сделать обновление формы структуры подчиненности при записи документов?
0 tciban
 
05.10.16
14:08
Уважаемые коллеги! Возник такой вопрос - есть у меня на рабочем столе (самописка, УФ, БСП) форма структуры подчиненности, так как бы сделать так, что бы она обновлялась при записи или проведени любого документа? Пока нашел только что можно сделать по событию обработки оповещения, но тогда надо в форме каждого документа прописывать выхов Оповестить. Нет ли другого способа?
1 azernot
 
05.10.16
14:11
Обработка ожидания в форме структуры подчинённости и периодическая сверка версий объектов отражённых в структуре с версиями в БД.
Чесгря, дурацкое решение.
2 tciban
 
05.10.16
14:42
Уважаемые коллеги! А еще идеи есть?
3 DrShad
 
05.10.16
14:47
(1) +1

(0) зачем в форме? в подписке на событие
4 tciban
 
05.10.16
14:52
(3) а разве обработка подписки на событие выполняется не на сервере?
5 azernot
 
05.10.16
14:57
(2) Тебе надо что-то позамороченнее?
ну организуй регистр сведений "Открытие в структуре подчинённости ссылка", куда записывай при формировании структуры все ссылки и допустим УИД формы структуры подчинённости.
Далее, организуй подписку "ПриЗаписи", проверяй наличие записываемой ссылки в этом самом регистре, после проверки, можешь например взводить флаг "Изменён" в ресурсе того же регистра, по всем УИДам. Если взведён хотя бы один флаг - взводи параметр сеанса, или ещё какую глобальную переменную.
Далее в глобальном обработчике ожидания, проверяй взведённость этой глобальной переменной, перебирай УИДы с изменившимися ссылками среди открытых форм (через ПолучитьОкна()) и вызывай переформирование структуры подчинённости или обновление данных об объектах.
При закрытии структуры подчинённости очищай свой РС по текущему УИДу...

Ещё более дурацкое решение.
6 tciban
 
05.10.16
15:17
(5) Не-не-не! Мне надо не заморочное, а попроще. Очень уж неохота во все формы доков прописывать Оповестить. Очень хочется найти способ, что бы прописал в одном месте - и УРА! работает!
7 azernot
 
05.10.16
15:23
(6) Я тебе по секрету скажу, что даже оповещение в форме документа - не даст 100% нужный результат.
У тебя может быть проведение из формы списка (по правой кнопке), или вообще программное, при записи другого документа (как пример - счёт-фактура в типовых).

Единственно "правильное" решение в идеологии тонкого клиента и управляемых форм - кнопка "Обновить" на форме структуры подчинённости.
8 tciban
 
05.10.16
15:30
мда уж... пичалька без печеньки
9 azernot
 
05.10.16
15:33
(8) Ну тебя же не смущает, что в формах списков документов у тебя не происходит авто-обновление, когда кто-то другой в базе что-то меняет?

А вообще, оповещение из формы объектов о записи - я бы сделал, точнее сделал бы вызов единой процедуры типа РаботаСФормами.ПриЗаписиОбъектовВФорме(). Оно может пригодиться не только в контексте Структуры подчинённости.
10 tciban
 
05.10.16
15:39
(9) Всяко не смущает. При желании твой рецеп с регистром из (5) вполне может решить эту проблему :) А про единый вызов подумываю, решение очевидное, я просто поискал менее трудозатратное :)
11 tciban
 
05.10.16
15:40
Кстати, зачем регистр? Можно в журнал регистрации поглядывать програмно...
12 azernot
 
05.10.16
15:53
(11) В (1) самое простое, универсальное, быстрое и правильное решение проблемы именно в Структуре подчинённости.
13 hhhh
 
05.10.16
16:18
(11) просто задать у этой формы автообновление. Поставить там галку. Например, через 20 секунд. И забить на все эти оповещения.
14 azernot
 
05.10.16
16:33
(13) О, а расскажите, что это за галка такая? И где её поставить в УФ?

Я вот помню, что была такая галка в формах списков для обычных форм.. а вот в управляемых, да ещё и произвольных - не видел.
15 tciban
 
06.10.16
09:00
В синтаксиспомошнике нашел только одно автообновление - у динамического списка.
Расширение таблицы формы для динамического списка
Содержит признак необходимости автообновления данных в списке через заданный интервал.
Закон Брукера: Даже маленькая практика стоит большой теории.