Имя: Пароль:
1C
1С v8
Демонический список. Открыть определенную форму документа
0 егаис
 
14.03.16
11:32
БП 3
Есть ДС, есть два поля документа - Склад и Физлицо.
Нужно, в зависимости от заполненного значения поля, открыть определенную форму документа. Для заполненного значения Склад - одна форма, для Физлица - другая.
В штатном механизме ПТиУ например, используется вспомогательная форма.
А можно как-то штатно через событие ДС открыть нужную форму?
1 aleks_default
 
14.03.16
11:39
А список обработчиков событий посмотреть, не?
2 Cyberhawk
 
14.03.16
11:41
ОткрытьФорму()
3 егаис
 
14.03.16
11:41
методом тыка пытаюсь определить который подходит
4 vde69
 
14.03.16
11:43
сделать подписку (на нужные тебе типы) на событие <ОбработкаПолученияФормы>
5 егаис
 
14.03.16
11:43
&НаКлиенте
Процедура СписокОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    ТекущиеДанные = Элемент.ТекущиеДанные;
    Если НЕ ТекущиеДанные.ФизическоеЛицо.Пустая() Тогда
        ОткрытьФорму("Документ.ПоступлениеТоваровУслуг.Форма.ФормаДоп", , ВладелецФормы);
    Иначе    
        ОткрытьФорму("Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокумента", , ВладелецФормы);
    КонецЕсли;    
КонецПроцедуры

Не хочет работать
6 егаис
 
14.03.16
11:50
все события попробовал, нихерась...что не так?
7 aleks_default
 
14.03.16
12:04
(5)Ты описание этого события читал?
8 егаис
 
14.03.16
12:10
Событие "выбор" однозначно, проверил
Упустил СтандартнаяОбработка = Ложь;
Все работает, спасибо, закрываем.
9 егаис
 
14.03.16
12:18
возникла еще одна проблема )
открывается две формы документа - доп и основная
Ткните носом.
Модуль
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    ТекущиеДанные = Элемент.ТекущиеДанные;
    
    СтруктураПараметров = Новый Структура;
    СтруктураПараметров.Вставить("Ключ",                ТекущиеДанные.Ссылка);
    
    Если НЕ ТекущиеДанные.ФизическоеЛицо.Пустая() Тогда
        ОткрытьФорму("Документ.ИнвентаризацияТоваровНаСкладе.Форма.ФормаДоп", СтруктураПараметров, ВладелецФормы);
    Иначе    
        ОткрытьФорму("Документ.ИнвентаризацияТоваровНаСкладе.Форма.ФормаДокумента", СтруктураПараметров, ВладелецФормы);
    КонецЕсли;    
КонецПроцедуры
10 егаис
 
14.03.16
12:31
почему после открытия доп формы открывается еще и основная форма документа?
11 aleks_default
 
14.03.16
12:32
вот этот обработчик СписокОбработкаВыбора удали же
12 егаис
 
14.03.16
12:34
его нет, я переименовал
13 aleks_default
 
14.03.16
12:46
(12)В смысле переименовал? В свойствах таблицы формы в событиях он остался?
А мож другие где забыл удалить?
14 Fragster
 
гуру
14.03.16
12:51
В данном случае я бы использовал обработчик получения формы у менеджера объекта...
15 егаис
 
14.03.16
12:55
(13) события у формы списка только такие
ВыборСписок
СписокПередНачаломДобавления
СписокПередНачаломИзменения
16 егаис
 
14.03.16
12:56
+
СписокПередЗагрузкойПользовательскихНастроекНаСервере
СписокПроверкаПеретаскивания
СписокПеретаскивание
все, никаких прочих событий открытия формы больше нет
17 егаис
 
14.03.16
12:56
(14) это как?
18 aleks_default
 
14.03.16
13:01
(14) интересно, а как туда параметры передать?
19 Fragster
 
гуру
14.03.16
13:06
(18) СправочникМенеджер.<Имя справочника> (CatalogManager.<Имя справочника>)
ОбработкаПолученияФормы (FormGetProcessing)
Синтаксис:

ОбработкаПолученияФормы(<ВидФормы>, <Параметры>, <ВыбраннаяФорма>, <ДополнительнаяИнформация>, <СтандартнаяОбработка>)
Параметры:

<ВидФормы>

Тип: Строка.
Имя стандартной формы.
<Параметры>

Тип: Структура.
Параметры формы.
<ВыбраннаяФорма>

Содержит имя открываемой формы или объект метаданных Форма.
Если значение параметра изменено, то будет осуществлен поиск формы в пределах объекта, для которого открывается форма.
<ДополнительнаяИнформация>

Тип: Структура.
Дополнительная информация открытия формы.
<СтандартнаяОбработка>

Тип: Булево.
В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет (выбираются установленные разработчиком форма и параметры).
Значение по умолчанию: Истина.
Описание:

Обработчик события вызывается на сервере при получении стандартной управляемой формы.
Если требуется переопределить выбор открываемой формы, необходимо установить в параметре <ВыбраннаяФорма> другое имя формы или объект метаданных формы, которую требуется открыть, и в параметре <СтандартнаяОбработка> установить значение Ложь.
20 Fragster
 
гуру
14.03.16
13:07
тут же вопрос простой - если указанное поведение только в этом ДС - то определяем событие Выбор, если это поведение объекта - то в обработке получения формы.