![]() |
![]() |
![]() |
|
Открыта ли форма | ☑ | ||
---|---|---|---|---|
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) учитывая нашу практическую однопартийность в наст. момент можно сказать, что в россии две партии - "ер" и "все остальные", кто знает что нам готовит будущее, вдруг такие фразы еще придется доставать из закромов памяти... :(
"У них нет и не должно быть ничего общего между собой, кроме общих данных (т.е - база)" да, поэтому "массивом" я хранилище списка данных назвал лишь условно, для реализации потребуется делать или справочник или регистр или что-то другое, что будет писаться в базу. Ну это так... в порядке извращения :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |