Имя: Пароль:
1C
1С v8
Как перейти в открытую форму обработки?
0 Prog111
 
05.09.17
12:50
Есть конфа, в режиме совместимости 8.2.16
В ней есть обработка "ФормированиеМаршрута", открывается в основном окне конфигурации. Есть ещё другая обработка "Расчет", открывается в отдельном окне, в ней формируются определенные данные и эти подготовленные данные передаются в первую форму обработку с дальнейшим открытием. Кусок кода из обработки №2:

ФормаМаршрута = ПолучитьФорму("Обработка.ФормированиеМаршрута.Форма");
        ФормаМаршрута.ПечататьДокументы = Ложь;
                ///предзаполнение формы
                ФормаМаршрута.Открыть();

Так вот, у пользователей форма обработки "ФормированиеМаршрута" может быть уже открыта и перекрыта формой из второй обработки. Как сделать, чтобы вышеприведенным кодом дозаполнялась и открывалась уже открытая форма первой обработки, если таковая имеется?
1 Рэйв
 
05.09.17
12:59
Попробуй покурить из СП  ОткрытьФорму и ее параметр Уникальность
2 Prog111
 
05.09.17
13:03
(1) Тогда сразу 2 вопроса:

1) Как мне программно заполнить форму при таком синтаксисе - ведь, получается, я сразу открываю офрму, а не получаю её как в "ПолучитьФорму".

2) Как узнать параметр "Уникальность" у уже открытых форм?
3 Рэйв
 
05.09.17
13:10
(2)Заполнить можно по разному. Если попростому,   чтобы не мучиться, в ПриСозданииНаСервере сделай  2 строки:

ЗаполнитьЗначенияСвойств(Объект,Параметры);//ЭтотОбъект если ОФ
ЗаполнитьЗначенияСвойств(ЭтаФорма,Параметры);

А потом  параметры при открытии вставляй имена полей и значения, оно все заполнит, если имена будут правильными
4 Рэйв
 
05.09.17
13:12
(2)С ключами уникальности я так наскидку уже точно и не вспомню. Давно не юзал это дело, а копаться лень.
5 Prog111
 
05.09.17
13:13
(3) А дерево значений можно заполнить из параметров?
6 Рэйв
 
05.09.17
13:14
(5)так напрямую помоему  нет.Его придется отдельно заполнять из полученного параметра
7 Lexey_
 
05.09.17
13:35
(2) "ведь, получается, я сразу открываю офрму, а не получаю её как в "ПолучитьФорму"", а ты почитай СП, и узнаешь, получаешь ты ее или открываешь
8 Prog111
 
06.09.17
07:29
Продолжаю тему... Вопрос про уникальность формы - как мне узнать ключ уникальности формы, которая, возможно, уже открыта ранее?
9 ColonelAp4u
 
06.09.17
08:01
и еще проверь на открытость формы, тогда передавай новые значения, если не открыта тогда открыть и передавай новый значения
10 Fedor-1971
 
06.09.17
09:25
(8) Попробуй посмотреть в сторону ПолучитьОкна() (для ОФ что-то типа МенеджерОкон - точно не помню)
В целом пробуй задать свой ключ уникальности для открываемой формы 1 и в форме 2 он тебе будет известен (сам сделал, сам используй)
11 Fedor-1971
 
06.09.17
09:30
10+ вот в СП накопал: ОкнаКлиентскогоПриложения - работает для ОФ и УФ
12 Prog111
 
06.09.17
09:58
А вот если форма открыта у нескольких пользователей - как определить открытую форму у конкретного пользователя?
13 h-sp
 
06.09.17
10:17
(12) чат что ли пишешь?
14 Prog111
 
06.09.17
10:23
(13) Нет, просто обработка по работе с документами.
15 SSSSS_AAAAA
 
06.09.17
10:29
(12) Эээ. А каким боком формы одного пользователя относятся к формам другого? Вы о чем вообще?
16 Prog111
 
06.09.17
10:44
(15) А, ну это же на клиенте ищу форму, значит, по поводу того, что есть ещё открытые формы у других пользователей, можно не заморачиваться.
17 Prog111
 
06.09.17
10:45
(10) Похоже, но не совсем то... Возвращает только названия окон, а по названиям не всегда возможно определить, что это за форма, какого объекта.
18 Fedor-1971
 
06.09.17
11:00
(17) т.е. в СП почитать как работать с ОкнаКлиентскогоПриложения не получается?

  Для каждого текОкно из ОкнаКлиентскогоПриложения цикл
    инфо=текОкно.ПолучитьСодержимое(); //или ПолучитьНавигационнуюСсылку()
  КонецЦикла;

там и найдёшь ИД или просто активизируешь окно
19 Fedor-1971
 
06.09.17
11:24
(16) можно и заморочиться через обработчик ожидания у каждого пользователя, например так:
Создаём РС с записями, например, Период и ПользовательАдресат
По событию изменения записываем в него данные о необходимости обновить форму
через ОбработчикОжидания у каждого пользователя проверяем РС на предмет "Есть мне обновления" и обновляем данные формы
после обновления чистим РС до ДатаВремя проверки