|
v7: Автоматическое обновление в ТЗ на форме. | ☑ | ||
---|---|---|---|---|
0
vova1122
08.07.16
✎
09:58
|
Сначала опишу ситуацию.
Есть документ (Товар в ремонте). В нем реквизит "СтанРемонта" Тип "Число" (1- Принят, 2- передан в СЦ, 3- Заказано запчасти, 4 - выполнен, 5- выдан клиенту). И так как в журнале все вперемешку я сделал Отчет. Поместил на форму ТаблицуЗначений. Установил флажки, для выбора документы с каким статусом показывать. Повесил на каждый флажок процедуру ПересчитатьТЗ(). Это все красиво работает. А теперь о проблеме. Чтобы вообще исключить работу в журнале этого документа, а только в отчете, я добавил кнопку создания нового документа в этом отчете. Документ создается но в ТЗ он не появляется до тех пор пока не ПересчитатьТЗ(). Что логично. Можно как то реализовать чтобы после создания нового документа в отчете запускался автоматически ПересчитатьТЗ()? И еще вопрос. Можно ли выводить Данные в ТЗ в несколько строк как в ЖурналеДокумментов? |
|||
1
Builder
08.07.16
✎
10:19
|
Повесь на форму пустой текстовый реквизит, у него в формуле пропиши вызов своей процедуры обновления, например ОбновитьМоюТаблицу()
Она будет запускаться каждый раз при обновлении формы. Что бы запускалась только при создании документа, сделай флаг и проверяй его. Ну или вызвать обновление после создания документа, хотя непонятно как ты его создаешь. В таблице вроде нельзя выводить в несколько строк, не встречал такого. |
|||
2
vova1122
08.07.16
✎
10:59
|
открываю форму документа через "ОткрытьФорму" (на кнопке повесил формулу ОткрытьФорму(Документ.ТоварВРемонте).
Как вызывать обновление после создания документа? |
|||
3
oslokot
08.07.16
✎
11:02
|
(2) создания или записи? при создании документа его еще нет в БД
|
|||
4
vova1122
08.07.16
✎
11:13
|
Извиняюсь. Конешно нужно после записи
|
|||
5
Это_mike
08.07.16
✎
11:14
|
(0) Прикинь, в журналах тоже можно отбирать.
(2) ну как вариант, передавай в создаваемый документ контекст обработки. а при событиях в документе, требующими реакции твоей обработки - открывай обработку с параметром этого документа, ну и соотвественно внутри формы обработки обрабатывай это дело в ПриОткрытии() или ПриПовторномОткрытии() |
|||
6
Это_mike
08.07.16
✎
11:15
|
Ну, или возьми ТП и сделай свой журнал, с отборами и санитарками...
|
|||
7
vova1122
08.07.16
✎
11:18
|
В журнале не прокатит. (Нужно отобрать одновременно по нескольким значениям одного и того же реквизита (например отобразить СтанРемонта = 1 и 3 и 4))
|
|||
8
vova1122
08.07.16
✎
11:20
|
ТП есть в семерке? Я далек от этого.
А про передачу контекста можно подробнее? ТЗ в обработке должна обновиться после записи докуммента |
|||
9
Это_mike
08.07.16
✎
11:22
|
(7) ну, если количество вариантов конечно - можно извратиться.
(8) у приличных людей - ТП есть. подробнее - так в (5) написано достаочно подробно. код писать я не буду |
|||
10
vova1122
08.07.16
✎
11:26
|
Код не прошу. Только поясните в каком месте в документе прописывать? в ПриЗаписи?
|
|||
11
Builder
08.07.16
✎
11:34
|
Как вариант проверять КонтекстФормы. Если изменился со 100 на 0 - обновить.
ОткрытьФорму(<ОписательОбъекта>,<КонтекстФормы>,<ДокументОснование>) Пока форма открыта, тип значения параметра <КонтекстФормы> равен 100, когда закрыта - 0. |
|||
12
Это_mike
08.07.16
✎
11:38
|
(10) так я ж написал - "при событиях в документе, требующими реакции твоей обработки" Если хочешь, чтоб она при записи реагировала - ставь в ПриЗаписи (только оно вызывается _до_ записи), можешь при закрытии, можешь хоть каждый тык на клавишу обрабатывать
|
|||
13
Это_mike
08.07.16
✎
11:38
|
(11) по таймеру, чтоль? фи...
|
|||
14
Builder
08.07.16
✎
11:41
|
(13) Зачем по таймеру? В той же процедуре обновления на форме, например.
Хотя изврат еще тот.... :) Самый простой способ - ОткрытьФормуМодально() Тогда точно можно отследить ее закрытие. Но устроит ли это ТС ? |
|||
15
Это_mike
08.07.16
✎
11:43
|
(14) да есть 100500 видов решений всяких.
Хоть через генерацию внешнего события. или фабрику событий |
|||
16
vova1122
08.07.16
✎
11:44
|
Высших материй не предлагать...
|
|||
17
vova1122
08.07.16
✎
12:33
|
Оказалось все намного проще.
В документе на стандартную Кнопку "ОК" Повесил свою процедуру записи [code] Записать(); ОткрытьФорму("Отчет.Ремонты"); Форма.Закрыть();[/code] А в отчете написал следующий код [code]Процедура ПриПовторномОткрытии() Обновить(); // пересчет ТЗ КонецПроцедуры[/code] |
|||
18
vova1122
08.07.16
✎
12:52
|
а теперь возник другой вопрос.....
Все это работает отлично только для одного пользователя. Если отчет открыт в двух и более пользователей, то второй пользователь увидит новые документы только после того как у себя нажмет "Обновить" или также создаст новый документ. Но думаю эту проблему уже простым путем не решить..... |
|||
19
Это_mike
08.07.16
✎
13:04
|
(18) считай количество гомнодокументов за сегодня, и если не совпоает с предыдущим - обновляй.
млять, ну ведь спрашивать на форуме дольше, чем подумать и сделать... |
|||
20
vova1122
08.07.16
✎
14:15
|
А когда именно считать? каждые 5 сек?
|
|||
21
Это_mike
08.07.16
✎
14:16
|
(20) по вкусу.
|
|||
22
Это_mike
08.07.16
✎
14:16
|
у тебя ж есть какой-то бизнес-процесс. вот п нему и ориентируйся...
|
|||
23
vova1122
08.07.16
✎
14:20
|
И где эту считалку прикрутить?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |