Имя: Пароль:
1C
 
Открыта ли форма
0 Roman Go
 
18.02.10
13:54
можно ли из модуля обработки узнать открыта ли форма(ы) документа.?
1 Roman Go
 
18.02.10
13:55
документ как объект не известен, ссылки на него нет
2 also
 
18.02.10
13:55
Форма = ПолучитьФорму("ФормаДокумента");
Если Форма.Открыта() тогда
3 Aprobator
 
18.02.10
13:56
(1) Это как ссылки нет?
4 also
 
18.02.10
13:56
(1) Если ссылки нет, то штатно не получится
5 Roman Go
 
18.02.10
13:57
ну вот так, открыли несколько документов, обработка должна автоматически открывать документ для редактирования, новый.

Но если уже есть какие-то там открытые, то открывать не надо.
6 also
 
18.02.10
13:58
(5) покажи как ты новый открываешь
7 Roman Go
 
18.02.10
14:00
Если СокрЛП(НазваниеМакета) = "Путевой лист" Тогда
               уатОбщегоНазначенияТиповые.уатНапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, Истина, уатОбщегоНазначенияТиповые.уатСформироватьЗаголовокДокумента(ЭтотОбъект, ЭтотОбъект.Метаданные().Представление()), Права);
               ОткрФорма = ЭтотОбъект.ПолучитьФорму("Диспетчер");
               Если ОткрФорма.Открыта() Тогда
                   Док = Документы.уатПутевойЛист;
                   Док.СоздатьДокумент();
                   
                   эсДоработки.АльтернативнаяФорма(ОткрФорма, Док.ПолучитьФорму("Диспетчер"));
               КонецЕсли;
           Иначе


________________


Процедура АльтернативнаяФорма(Основная, Дополнительная) Экспорт
   Основная.Модифицированность = Ложь;
   Основная.Закрыть();
   
   Дополнительная.Открыть();
КонецПроцедуры
8 also
 
18.02.10
14:02
(7) у тебя есть ДокументОбъект "Док"..Какие проблемы то?
9 also
 
18.02.10
14:04
ты хочешь проверить, не открыты ли в данный момент формы документов путевой лист что ли?
10 Roman Go
 
18.02.10
14:04
шустрый диспетчер вводит в минуту порядка 40 документов.

когда она отправляет на печать документ, автоматом открывается следующий. Но если они уже в других местах зачем-то наоткрывали документы, то было бы неплохо сначала их обработать, а не открывать новый
11 Roman Go
 
18.02.10
14:04
(9) да
12 Aprobator
 
18.02.10
14:06
(7) опс - как никак доблестный "Автотранпорт" ерш его меть.
13 Roman Go
 
18.02.10
14:08
(12) уат - плохая вещь (анти-мат работает), типового уже ничего нету. Только название некоторых общих модулей да документов.
14 also
 
18.02.10
14:09
вижу только такой способ:

запросом получать ссылки на эти документ за сегодняшний день, получать их форму и проверять, но , имхо, это тупо
15 Roman Go
 
18.02.10
14:10
(14) не, эти документы могут быть еще не записаны, открытые дубли.
16 Aprobator
 
18.02.10
14:12
(13) согласен - за эту конфу убивать надо.
17 also
 
18.02.10
14:12
О...Делай установитьссылкунового() и записывай ее в куда-нить
18 Roman Go
 
18.02.10
14:14
(17) не понял что делать, можно пример?
19 also
 
18.02.10
14:15
(18) я так понимаю ты документы генеришь из обработки?
20 Roman Go
 
18.02.10
14:16
(19) нет, из модуля преддыдушего документа.

Диспетчер отправляет на печать документ, он закрывается и тут же ей открывается следующий новый.
21 Aprobator
 
18.02.10
14:17
(20) открывается существующий документ или создается новый? Что значит открывается?
22 also
 
18.02.10
14:18
Присоединяюсь к вопросу (21)
23 also
 
18.02.10
14:19
(20) а вообще это конечно гениальный подход к делу :))
24 Roman Go
 
18.02.10
14:20
создается новый

(23) это ирония или что?
25 Phace
 
18.02.10
14:23
(23) да нет, все нормально, если в рейс отпускает только один диспетчер, а вот если работает несколько параллельно...
26 Roman Go
 
18.02.10
14:24
(25) их несколько - два.

а какая проблема с двумя диспетчерами?
27 Phace
 
18.02.10
14:27
(26) Тогда нумерация не будет отражать хронологической последовательности выхода авто в рейс. Диспетчера могут выписывать одновременно документы на одну и туже машину?
28 Roman Go
 
18.02.10
14:29
(27) нет, не могут

причем я не пойму так так получится, что не будет соблюдаться последовательность хронологическая.
29 Aprobator
 
18.02.10
14:30
(26) ага приближаемся к истине. Т.е. надо проверить, а не открыта ли уже форма нового - не записанного документа?
30 ilkoder
 
18.02.10
14:32
А если документ не записан, как его сможет открыть кто-то другой? Ссылки то нет...
31 DUDE
 
18.02.10
14:33
(7) У объекта может быть открыто одновременно множество форм, если их открывать без ключа, то я не знаю как их получать потом. Если тебе при Док.ПолучитьФорму("Диспетчер") задавать ключ уникальности и потом его куда-то передавать (например, хранить массив ключей текущих открытых форм), то можно будет в другом месте их перебирать и обрабатывать. Думаю, так срабоватает.
32 DUDE
 
18.02.10
14:34
(30) +1.
33 Phace
 
18.02.10
14:36
(28) "причем я не пойму так так получится, что не будет соблюдаться последовательность хронологическая."

Например: Диспетчер №1 оформил ПЛ №1001 в 8:00, после чего у него на экране появился ПЛ №1002 в 8:01, после чего он вышел покурить на 10 минут. В это время второй диспетчер оформил 10 ПЛ с номерами 1003 по 1012, приходит первый, заносит информацию в форму ПЛ №1002 и проводит его.
34 Phace
 
18.02.10
14:36
(33)+ в 8.2. этого не будет, т.к. номер док. присваивается при записи.
35 Aprobator
 
18.02.10
14:37
(30) если известен вид документа, то

Документы.ВидДока.ПолучитьФормуНовогоДокумента();
36 ilkoder
 
18.02.10
14:44
(35) это если один чел создал новый документ, чего то в него забивает. А другому открыть форму как у вас, то он попадет в документ к первому челу? афигеть....
37 Aprobator
 
18.02.10
14:46
(36) на деле не проверял - но автору по поводу проверки существования открытого нового документа это может помочь.
38 DUDE
 
18.02.10
14:50
(35) Метод вернет форму нового документа, но относиться-то она будет к другому объекту(если не указывать в обеих явно один уник.ключ). И потом-то при записи им все-равно будут присвоены разные ссылки.
39 Aprobator
 
18.02.10
14:54
(38) это только в том случае, если открытие формы происходит из вновь созданного объекта.
40 DUDE
 
18.02.10
14:54
(36) попробуй выполнить сначала

Док = Документы.ТребованиеНакладная.СоздатьДокумент();
Форма1 = Док.ПолучитьФорму(,,"1");
Форма1.Открыть();

а потом не записывая

Форма2 = Документы.ТребованиеНакладная.ПолучитьФормуНовогоДокумента(,,"1");
Форма2.Открыть();

"то он попадет в документ к первому челу?" правда это все в пределах одного открытого сеанса работает.
41 Aprobator
 
18.02.10
14:57
+(39) выдержки из СП к методу ПолучитьФормуНовогоДокумента();
......
При поиске учитываются значения свойств открытых форм соответствующим значениям параметров метода. Если найдена открытая форма (по совпадению всех параметров), то она будет возвращена вместо новой формы.
.....
Следует учитывать, что при получении формы из "объекта" система получает форму для конкретного экземпляра объекта с учетом совокупности переданных параметров, в то время как для "ссылки" всегда существует только один объект в базе данных и форма получается одна (для одинаковой совокупности параметров).
42 DUDE
 
18.02.10
15:01
(41) в этом плане метод аналогичен просто ПолучитьФорму()

кстати, на правах идеи :) : если при открытии формы запоминать в массив(доступный для разных сеансов) id сеанса + ключ уникальности, то можно было бы анализируя его из одного сеанса коннектиться к другому, закрывать форму и открывать у себя под теми же параметрами 0_о
имхо, сделать реально, только время нужно
43 Roman Go
 
18.02.10
15:06
а проблема в том, что диспечера открывают несколько документов, вместо того чтобы работать только в одной форме.

Сейчас собрал их, и сказал чтобы не жали без нужды инсерт, а мышкой открывали свернутый документ, который открывали ранее.
44 Phace
 
18.02.10
15:07
(42) 1С:Совместимо вам не светит :)))
45 Serg_1960
 
18.02.10
15:15
(43) "а проблема в том, что..." - местный прогер в соплях путается :))

Намекаю: Оповестить() и ОбработкаОповещения(). Если сообразишь как это использовать - заберу свои слова обратно и извенюсь :)
46 Aprobator
 
18.02.10
15:25
+(45) можно еще посмотреть в сторону подписки на события.
47 Serg_1960
 
18.02.10
15:29
(46) Это не совсем то, что автору нужно. Подписки работают на событиях объектов. А автору нужно работать "на уровне" открытых форм.
48 DUDE
 
18.02.10
15:37
(44) Мне до него пилить как Ломоносову до столицы :)
    А как нужно сделать с точки зрения партии?
49 Phace
 
18.02.10
15:38
(48) сам партбилета не имею )
50 Serg_1960
 
18.02.10
15:45
"с точки зрения партии" - начинаю подзабывать это крылатое выражение :)

Открытые сеансы (имхо: по идеалогии разработчиков) - болтливостью не отличаются. У них нет и не должно быть ничего общего между собой, кроме общих данных (т.е - база). Как-то так, типа.
51 DUDE
 
18.02.10
16:06
(50) учитывая нашу практическую однопартийность в наст. момент можно сказать, что в россии две партии - "ер" и "все остальные", кто знает что нам готовит будущее, вдруг такие фразы еще придется доставать из закромов памяти... :(

"У них нет и не должно быть ничего общего между собой, кроме общих данных (т.е - база)" да, поэтому "массивом" я хранилище списка данных назвал лишь условно, для реализации потребуется делать или справочник или регистр или что-то другое, что будет писаться в базу. Ну это так... в порядке извращения :)