Имя: Пароль:
1C
 
как проверить открыта ли форма документа?
0 Parti
 
08.09.09
15:21
В обработке по кнопке Заполнить открывается форма документа и автоматически заполняется содержание ТЧ документа выбранными позициями(с помощью ПолучитьФормуНовогоДокумента()  ). Затем документ должен сохраняться и закрываться.
Но если документ не закрывать, а просто переключить окно на обработку и снова нажать кнопку Заполнить, то все выбранные материалы снова записываются в открытый документ, т.е. дублируются.

Как перед нажатием на кнопку "Заполнить" проверить, открыта ли форма документа?
1 Parti
 
08.09.09
15:28
апп
2 Voffka2008
 
08.09.09
15:28
Может проще будет форму модально открыть? а вообще

Форма = Документ.ПолучитьФорму();
Форма.Открыть();
Если Форма.Открыта() Тогда
   ...
КонецЕсли;
3 alxbzm
 
08.09.09
15:32
+(2) к (0) а может еще проще не открывать документ для его заполнения, а манипулировать понятием "ДокументОбъект" ? Или если надо заполнить только часть данных документа и дать пользователю возможность посмотреть и внести коррективы, то не делать это внешней обработкой, а в форму документа запихать кнопку "Заполнить", которая заполняет только текущий открытый документ?
4 Parti
 
08.09.09
15:38
(3)неее. Обработка выводит длинющий список материалов, которые надо сгруппировать в документы. Выделяем несколько строк и по кнопке Заполнить в обработке открывается новый документ и заполняется его ТЧ выбранными материалами. Он проводится и из обработки пропадают эти материалы. И так до победного конца.

почему это условие не срабатывает? Форма-то открыта..

код:

Процедура ЗаполнитьНажатие(Элемент)

НовыйДокументЛот = Документы.Лот.ПолучитьФормуНовогоДокумента();
       Если НовыйДокументлот.Открыта() = Истина тогда
           Сообщить("открыта");
           КОнецЕсли;
КонецПроцедуры
5 vitek458
 
08.09.09
15:40
потому что каждое Документы.Лот.ПолучитьФормуНовогоДокумента() формирует новую форму - для 1с одна и та же форма открытая несколько является разной
6 Parti
 
08.09.09
15:42
хорошо. А как в общем случае проверить, открыта ли форма документа?
7 Voffka2008
 
08.09.09
15:45
(6) Попробуй открывать форму документа модально... тогда без закрытия формы не получится переключиться на форму обработки
8 Parti
 
08.09.09
15:48
(7) {Обработка.ФормированиеДокументовГКПЗ.Форма.Форма(89)}: Недостаточно фактических параметров
       НовыйДокументЛот = Документы.Лот.ПолучитьФорму().ОткрытьМодально();
9 Parti
 
08.09.09
15:49
я вот думаю с ключами уникальности надо делать.

Синтаксис:
ПолучитьФормуНовогоДокумента(<Форма>, <Владелец>, <Ключ уникальности>)
Параметры:
<Форма> (необязательный)
Тип: Строка, ОбъектМетаданных: Форма . Имя формы, как оно задано в конфигураторе, или объект описания метаданного требуемой формы. Если параметр не указан, то используется основная форма, заданная в конфигураторе.
<Владелец> (необязательный)
Тип: Форма, Элемент управления. Объект, который будет являться владельцем открываемой формы.
<Ключ уникальности> (необязательный)
Тип: Произвольный. В данном параметре может быть задан некоторый ключ, значение которого будет использоваться для поиска уже открытых форм.
При поиске учитываются значения свойств открытых форм соответствующим значениям параметров метода. Если найдена открытая форма (по совпадению всех параметров), то она будет возвращена вместо новой формы.
Если из некой формы (один и тот же владелец) требуется открывать новые экземпляры другой формы, то при каждом вызове метода значение данного параметра должно быть уникально (в рамках соответствующих значений свойств открытых форм).
Значение параметра присваивается свойству открываемой формы КлючУникальности.
Следует учитывать, что при получении формы из "объекта" система получает форму для конкретного экземпляра объекта с учетом совокупности переданных параметров, в то время как для "ссылки" всегда существует только один объект в базе данных и форма получается одна (для одинаковой совокупности параметров).
Возвращаемое значение:
Тип: Форма.
Описание:
Получает форму нового документа.
10 vitek458
 
08.09.09
15:49
имя формы укажи
11 Parti
 
08.09.09
15:51
+ с ключами уникальности кто-нить работал?
12 hhhh
 
08.09.09
15:54
(11) это не то.
13 Voffka2008
 
08.09.09
15:55
Попробуй так:

НовыйДокументЛот = Документы.Лот.СоздатьДокумент();
Форма = НовыйДокументЛот.ПолучитьФорму();
Форма.ОткрытьМодально();
14 Parti
 
08.09.09
15:56
нужно при нажатии на кнопку пробегать все открытые формы документа и либо закрывать их и открывать новую, либо выдавать предупреждение и не записывать
15 Parti
 
08.09.09
15:58
(13)оно. спс