Имя: Пароль:
1C
1С v8
УФ. Открытие формы документы из списка по условию
,
0 егаис
 
24.09.17
15:39
В зависимости от значения реквизита надо открыть определенную форму.
Делаю через СписокВыбор в форме списка, не срабатывает

&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    ТекущиеДанные = Элемент.ТекущиеДанные;
    
    СтруктураПараметров = Новый Структура;
    СтруктураПараметров.Вставить("Ключ",                ТекущиеДанные.Ссылка);
    
    Если НЕ ТекущиеДанные.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийИнвентаризацияТоваров.Спецодежда") Тогда
        ОткрытьФорму("Документ.ИнвентаризацияТоваровНаСкладе.Форма.ФормаСпецодежды", СтруктураПараметров);
    Иначе    
        ОткрытьФорму("Документ.ИнвентаризацияТоваровНаСкладе.Форма.ФормаДокумента", СтруктураПараметров);
    КонецЕсли;    
    
КонецПроцедуры
1 Cyberhawk
 
24.09.17
15:41
Скорее убери ненужное НЕ из условия и поменяй вместо этого ветки местами
2 егаис
 
24.09.17
15:41
создавать вспомогательную форму и оттуда рулить формой открытия? Только такой выход?
3 Cyberhawk
 
24.09.17
15:43
Конечно нет
4 егаис
 
24.09.17
15:45
(1) нет, это не помогает
5 егаис
 
24.09.17
15:45
обработчик к списку привязан
6 Cyberhawk
 
24.09.17
15:51
(4) Кому и для чего не помогает? Думаю, ты что-то напутал в своих ожиданиях...
7 Cyberhawk
 
24.09.17
15:52
Я ожидаю от совета, данного мною в (1) то, что это поможет читающему код легче в нем ориентироваться
8 егаис
 
24.09.17
15:53
(7) читаемо стало?
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    ТекущиеДанные = Элемент.ТекущиеДанные;
    
    СтруктураПараметров = Новый Структура;
    СтруктураПараметров.Вставить("Ключ",                ТекущиеДанные.Ссылка);
    
    Если ТекущиеДанные.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийИнвентаризацияТоваров.Спецодежда") Тогда
        ОткрытьФорму("Документ.ИнвентаризацияТоваровНаСкладе.Форма.ФормаСпецодежды", СтруктураПараметров);
    Иначе    
        ОткрытьФорму("Документ.ИнвентаризацияТоваровНаСкладе.Форма.ФормаДокумента", СтруктураПараметров);
    КонецЕсли;    
    
КонецПроцедуры

а по существу?
9 Cyberhawk
 
24.09.17
15:54
(8) Ты не выполнил совет в (1). По существу для начала раскури нужный обработчик и добейся, чтобы никакая форма вообще не открывалась. А потом уже в него добавишь код по открытию формы. Скорее всего ты выбрал не тот обработчик
10 егаис
 
24.09.17
15:57
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    ТекущиеДанные = Элемент.ТекущиеДанные;
    
    СтруктураПараметров = Новый Структура;
    СтруктураПараметров.Вставить("Ключ",                ТекущиеДанные.Ссылка);
    
    НС = Новый СообщениеПользователю;
    НС.Текст = Строка(ТекущиеДанные.ВидОперации);
    НС.Сообщить();
    Если ТекущиеДанные.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийИнвентаризацияТоваров.Спецодежда") Тогда
        ОткрытьФорму("Документ.ИнвентаризацияТоваровНаСкладе.Форма.ФормаСпецодежды", СтруктураПараметров);
    Иначе    
        ОткрытьФорму("Документ.ИнвентаризацияТоваровНаСкладе.Форма.ФормаДокумента", СтруктураПараметров);
    КонецЕсли;    
    
КонецПроцедуры


сообщение выходит, обработчик тот.
11 егаис
 
24.09.17
15:58
Событие списка называется "выбор"
12 h-sp
 
24.09.17
19:12
(10) нет такой формы "спецодежда"
13 егаис
 
24.09.17
21:03
(12) форму можно создать, не?
если заремить    
СтандартнаяОбработка = Ложь;
то откроется 2 формы, одна из них по условию, т.е. то что нужно        ОткрытьФорму("Документ.ИнвентаризацияТоваровНаСкладе.Форма.ФормаСпецодежды", СтруктураПараметров);


Но почему открывается основная форма документа при
СтандартнаяОбработка = Ложь;
??
14 егаис
 
24.09.17
21:06
о, даже не так.
оказывается открывается 2 формы - основная объекта и "нужная" при СтандартнаяОбработка = Ложь;
Почему так?
15 h-sp
 
24.09.17
23:58
(14) ну, значит английским языком балуетесь. Проверьте СтандартнаяОбработка, на каком языке написано.
16 RomaH
 
naïve
25.09.17
07:29
не правильнее ли будет это перенести в модуль менеджера в ОбработкаПолученияФормы?
17 Fedor-1971
 
25.09.17
08:55
(14) ПриНачалеРедактирования отработал? Посмотри какой обработчик и когда вызывается.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший