Имя: Пароль:
1C
1С v8
Основная форма документа
,
0 an_str
 
30.01.13
11:37
Здравствуйте. Необходимо менять основную форму документа если стоит определенная галочка в настройках пользователя...подскажите, пожалуйста, можно ли менять основную форму программно...формы неуправляемые...Заранее спасибо.
1 ДенисЧ
 
30.01.13
11:38
а зачем её менять? В ПриОткрытии проверяй и открывай нужную
2 an_str
 
30.01.13
12:10
Спасибо за подсказку. Сделала ПередОткрытием в форме назначенной Основной, если условие выплняется, то Отказ=Истина и открываю нужную форму...Еще раз спасибо...
3 an_str
 
31.01.13
14:24
Прошу прощения, вопрос до конца еще так и не решила....подскажите, пожалуйста... Вот моя процедура

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
       
...
   Если УсловиеВыполнено Тогда

       Отказ=Истина;
       ОткрытьФорму("Документ.ЭтапРабот.Форма.ФормаДокументаУпр", Новый Структура("Ключ", ЭтотОбъект.Ссылка), ЭтаФорма);

   КонецЕсли;

...
КонецПроцедуры

Для уже существующего документа форма нормально подменяется и открывается нужная управляемая. А вот если документ вводится на основании или копированием эта штука не срабатывает...Неправильно параметры какие-то передаю? может надо не ЭтотОбъект.Ссылка?
4 Wobland
 
31.01.13
14:25
не знаю зачем так было, но видел. основная форма была пустая. с единственным обработчиком типа "если - иначе"
5 Maxus43
 
31.01.13
14:29
"формы неуправляемые" и (3) не вяжется.
просто этотобъект.ОткрытьФорму("ИмяФормы");
6 an_str
 
31.01.13
14:30
немного неточно сразу написала...одна форма неуправляемая, другая (та,которую открываю) - управляемая...
7 an_str
 
31.01.13
14:31
этотобъект.ОткрытьФорму("ИмяФормы");
- для управляемой формы не прокатило(
8 Wobland
 
31.01.13
14:32
а что за условие?
9 Maxus43
 
31.01.13
14:33
(7) естественно, ибо не знал что управляемая
10 Wobland
 
31.01.13
14:34
короче, делаешь основную управляемую форму (ну или дополнительную) и там аналогично. по-моему, так
11 Maxus43
 
31.01.13
14:34
>>А вот если документ вводится на основании или копированием эта штука не срабатывает
ибо нет ссылки ещё у объекта
12 an_str
 
31.01.13
14:35
Проверяется стоит ли в настройках у пользователя галочка открывать управляемые формы, если стоит тогда надо обычную форму подменить на управляемую...
Знаю, что ссылки нет...как быть-то?(((((
13 НЕА123
 
31.01.13
14:44
СП
ДокументМенеджер.<Имя документа> (DocumentManager.<Имя документа>)
ПолучитьФормуНовогоДокумента (GetNewDocumentForm)
Синтаксис:

ПолучитьФормуНовогоДокумента(<Форма>, <Владелец>, <КлючУникальности>)
14 an_str
 
31.01.13
14:45
ПолучитьФормуНовогоДокумента - это только для управляемых форм. У меня основной формой назначена обычная и в эту процедуру не заходит...
15 НЕА123
 
31.01.13
14:50
попробовать без параметров?

ОткрытьФорму("Документ.ЭтапРабот.Форма.ФормаДокументаУпр", , ЭтаФорма)
16 Maxus43
 
31.01.13
14:50
в обработке заполнения анализируй, пока идей больше нет
17 an_str
 
31.01.13
14:55
(15) без параметров открывает чистую форму, как вновь созданного документа
18 an_str
 
31.01.13
14:56
(16)эх....все равно спасибо..
19 НЕА123
 
31.01.13
14:57
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
       
...
   Если УсловиеВыполнено Тогда

       Отказ=Истина;
       Если ЭтоНовый() ТОгда ОткрытьФорму("Документ.ЭтапРабот.Форма.ФормаДокументаУпр", , ЭтаФорма);
Иначе
ОткрытьФорму("Документ.ЭтапРабот.Форма.ФормаДокументаУпр", Новый Структура("Ключ", ЭтотОбъект.Ссылка), ЭтаФорма);
конецЕсли

   КонецЕсли;

...
КонецПроцедуры
20 Maxus43
 
31.01.13
15:02
(19) кстати а зачем Владельцем формы указывать форму которую мы не открываем, а посылаем в отказ?
21 an_str
 
31.01.13
15:05
(20) верно..не нужно, убрала
22 an_str
 
31.01.13
15:06
(19) не прокатит...при вводе на основании мы попадаем в процедуру ОбработкаЗаполнения(Основание) и там имеем Основание = Неопределено
23 НЕА123
 
31.01.13
15:13
(22)
потом Заполнить()
24 an_str
 
31.01.13
15:23
Кажется справилась...не знаю на сколько правильно это решение...
Если УсловиеВыполнено Тогда
       Отказ=Истина;
       СтруктураПараметров = Новый Структура;
   СтруктураПараметров.Вставить("Ключ", ЭтотОбъект.Ссылка);
   СтруктураПараметров.Вставить("Основание", ЭтотОбъект.ДокументОснование);
       ОткрытьФорму("Документ.ЭтапРабот.Форма.ФормаДокументаУпр",СтруктураПараметров, );

   КонецЕсли;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший